Compare commits

...
Author SHA1 Message Date
Adam Honse 0fca93e454 OpenRGB Release Candidate 1.0rc2 2025-09-14 14:31:57 -05:00
Adam Honse 664b794efa Update warning message if I2C doesn't load 2025-09-14 14:31:46 -05:00
Adam Honse c60cf5d2de Update SMBus documentation for PawnIO 2025-09-14 14:31:33 -05:00
Adam Honse 8d8f70bfdf Only build PawnIO support in 64-bit builds, provide non-functional stub implementations in super_io.cpp for 32-bit builds 2025-09-14 14:31:23 -05:00
Adam Honse b349c3ff2c Update PawnIO SMBus driver to use standardized API between all drivers, add NCT6793 driver, and remove WinRing0 SMBus drivers 2025-09-14 14:31:13 -05:00
Stephen Horvath 30a250c7df Replace WinRing0 with PawnIO for SMBus and Super-IO access on Windows
Commits squashed, files cleaned up, and rebased by Adam Honse <[email protected]>
2025-09-14 14:31:02 -05:00
Adam Honse a1449d99cf Change suffix back to git after 1.0rc2wr0 release candidate 2025-09-14 14:30:51 -05:00
Adam Honse a589a0f0b8 OpenRGB Release Candidate 1.0rc2wr0 2025-09-14 14:30:17 -05:00
Adam Honse 21594063ca More warning fixes 2025-09-14 13:41:44 -05:00
Adam Honse 8f89583eb0 Fix some warnings 2025-09-14 13:29:08 -05:00
austinleroy 8487b5c89d Adding support for Logitech G600 Mouse 2025-09-14 13:15:55 -05:00
John DeSilva 3a2d0f46ac Update HYTEMouseMatController to compile on FreeBSD
This change includes the libusb implementation files of
HYTEMouseMatController as sources when compiling on FreeBSD. Without
this change, we see `error: unknown type name 'HYTEMousematController'`.
2025-09-14 13:00:47 +00:00
John DeSilva 8af2461735 Include a startup source for FreeBSD
This seems to have been missed when the startup files were split out
during a refactor to support starting OpenRGB as a Windows service in
cf2df815e3.

Without this change, we see `ld: error: undefined symbol: main` when
compiling on FreeBSD.

I chose to name the file main_FreeBSD_Linux_MacOS instead of
main_Linux_MacOS_FreeBSD to keep the list alphabetical.
2025-09-14 13:00:47 +00:00
Adam Honse 6c8c48d2fe Add option for installing OpenRGB as a service in Wix installer 2025-09-14 03:54:27 -05:00
Fefedu973 f8895af960 Add support for the StreamDeck 2025-09-14 00:59:48 -05:00
Adam Honse 4664a27d6b Disable realtime malware scanning on GitLab CI so that it doesn't break builds with WinRing0 2025-09-14 00:27:46 -05:00
Adam Honse 2609822f8a Fix flickering on JGINYUE USB controller direct mode 2025-09-13 17:01:22 -05:00
Barry H cd3ad1822b Add EVGA RTX 2070 FTW3 Ultra OC, RTX 2080 XC HYBRID GAMING & 2080 Ti FTW3 Ultra Hydro Copper Gaming 2025-09-12 10:35:37 -05:00
Austin Blake 0a6930945e Add support for Gigabyte Radeon RX 9070 XT Gaming 16G 2025-09-11 11:57:14 -05:00
Alexander Mateides 4373df41ba Support for Gigabyte RX9070 Gaming OC 16G 2025-09-11 01:01:23 -05:00
Cosebdd 0971aa92c3 Excluded mode change from MSI GPU FPS Limiter 2025-09-10 07:49:49 -05:00
Fefedu973 f2aef24b8a Fixed govee direct mode control 2025-09-10 00:36:04 -05:00
silverspy18 f019320df1 Increased I2C_SMBUS_BLOCK_MAX and added error handling for buffer overflow. 2025-09-07 13:31:42 -05:00
Sniper Framirez 3af3d137a5 Support Gainward GeForce RTX 3060 Pegasus 12G 2025-09-07 00:33:08 -05:00
Nexrem 9d0d65ca3a Commonize other RedDevil driver under one tree and detector as V1 2025-09-05 08:45:20 -05:00
Nexrem 9a33c95b69 Add support for PowerColor Red Devil RX9070XT 2025-09-04 09:20:17 -05:00
Adam Honse b113fd8cbc Update RGBController documentation 2025-08-26 20:16:28 -05:00
Adam Honse 1836b5e417 Update Detector documentation 2025-08-26 17:07:02 -05:00
Erick Granados d5f9411ecb Fixes for the XPGSummoner keyboard controller 2025-08-26 12:23:25 -05:00
The Cyric 9ad0fa26bf Add another subdevice id for Gigabyte 5090 XTREME WATERFORCE 2025-08-26 08:16:03 -05:00
morg 6a4550c6f0 DetectNZXTKrakenElite: Add missing detector in controller comments 2025-08-26 08:09:01 -05:00
Daniel Clark cc3414408f Fix upstream regression. in DeviceUpdateLEDs() RGBFusion 2.0 USB. 2025-08-25 18:38:17 -05:00
Zoran Peričić fd8101b0c3 Support Kingston Fury Beast DDR5 with Jedec ID: 0x3011 2025-08-24 20:37:24 +02:00
2B 18f484c274 add support for Gigabyte Radeon RX 7900 XT GAMING OC 20G 2025-08-23 01:15:51 -05:00
Adam Honse 221f5007ab Fix laptop and monitor device type strings 2025-08-22 21:52:31 -05:00
Chris fbb7d16039 Changed Gigabyte Fusion 2 controller
* Removed warnings
* Refactored RGBFusion2USBController::SetLEDEffect() to improve readability
* Tidied up Mode declarations
* Other changes for style and formatting
2025-08-22 07:57:02 -05:00
Nikola Jurkovic ca84bad1fc MM700 Extended 3XL 2025-08-22 07:52:25 -05:00
Adam Honse be9fe7bb2d Fix Commander Core XT when configuring RGB header zone to zero and when switching between zero and nonzero modes 2025-08-21 22:43:32 -05:00
Nikola Jurkovic e21d29fa27 Commander Core XT 2025-08-21 22:38:04 -05:00
Erick Granados febdd2ad5e Added Controller for XPG Summoner 2025-08-18 15:26:53 -05:00
Daniel Clark 503ad36256 Merge rework of IT8297, IT5702, IT5711 driver code. Adds new controller IT82950. 2025-08-18 14:46:00 -05:00
Erick Granados 1be1656ce8 Added Controller for SteelSeries QCK PRISM XL Destiny 2: Lightfall Edition 2025-08-18 01:05:41 -05:00
Barry H cd6831ccbe Add Nollie 1, 8, 16 & 32 OS2 Firmware support 2025-08-18 01:03:18 -05:00
Adam Honse 676547b8b0 Pass name string into I2C DIMM detectors, store name in KingstonFuryDRAMController to avoid setting it in detector 2025-08-17 01:17:02 -05:00
Adam Honse c82a6052a2 Store name in AsusAuraUSBControllers to avoid setting it in detectors 2025-08-16 18:26:09 -05:00
Adam Honse a0726dc065 Store name in LogitechControllers to avoid setting it in detectors 2025-08-16 16:47:44 -05:00
Robert Ernst 86fbdfa6e7 Add Mystic Light Controller with PID 7D14 of Mainboard MSI A520M PRO 2025-08-16 12:04:55 -05:00
Anshi Mehta 0eb082f21b docs: improve wording and clarity in mode description 2025-08-16 12:03:36 -05:00
Shaydera 714736bf73 Fix RGB controller detection for Gigabyte AORUS RTX 5090 MASTER (use 0x75) 2025-08-16 12:03:05 -05:00
Adam Honse 079e344c5a Store name in RoccatControllers to avoid setting it in detectors 2025-08-16 02:07:11 -05:00
Adam Honse c2e0bd496f Store name in SinowealthControllers to avoid setting it in detectors 2025-08-16 01:15:15 -05:00
Adam Honse f1a050a503 Store name in SteelSeriesControllers to avoid setting it in detectors, rework SteelSeriesApexBaseController to move code out of header file 2025-08-16 00:37:51 -05:00
Adam Honse bf24ab3d53 Store name in ENESMBusController to avoid setting it in detector 2025-08-15 22:53:36 -05:00
Adam Honse 5190274004 Store name in MSIGPUv2Controller to avoid setting it in detector 2025-08-15 16:57:02 -05:00
Adam Honse 5db766cfa0 Store name in CoolerMasterControllers to avoid setting it in detectors 2025-08-15 16:16:13 -05:00
Eve ddc8bc5885 Alternate PCI subsystem ID for EVGA RTX3070 FTW3 Ultra LHR 2025-08-15 16:11:06 -05:00
Adam Honse 4036a9e414 Store name in CorsairPeripheralV2Controllers to avoid setting it in detectors 2025-08-15 12:19:05 -05:00
Adam Honse fa74b64d6d Remove unused CorsairK95PlatinumXTController files 2025-08-15 12:10:09 -05:00
Adam Honse 59c2ca2052 Store name in CorsairPeripheralControllers to avoid setting it in detectors 2025-08-15 11:40:28 -05:00
Chris M a528db1604 Simplified / Modularised the Appimage runner scripts 2025-08-15 01:06:20 -05:00
Chris M 72a5afc910 Added Trixie builds
* Combined common Deb build steps
2025-08-15 01:04:05 -05:00
jurkovic-nikola 974f7d1e26 commander core packet size 2025-08-15 00:39:42 -05:00
Adam Honse 2a6ad477e6 Store name in HoltekControllers to avoid setting it in detectors 2025-08-14 23:37:05 -05:00
Adam Honse ce64dbc686 Store name in ZotacV2GPUController to avoid setting it in detector 2025-08-14 23:36:56 -05:00
Adam Honse eb199dae67 Store name in ZotacTuringGPUController to avoid setting it in detector 2025-08-14 23:36:48 -05:00
Adam Honse ad9fd08a08 Store name in ZETKeyboardController to avoid setting it in detector 2025-08-14 23:36:40 -05:00
Adam Honse 86b2ced685 Store name in ZETEdgeAirProController to avoid setting it in detector 2025-08-14 23:36:33 -05:00
Adam Honse 4e96056ac4 Store name in ZalmanZSyncController to avoid setting it in detector 2025-08-14 23:01:51 -05:00
Adam Honse 84c24e70c0 Store name in WushiController to avoid setting it in detector 2025-08-14 22:59:05 -05:00
Adam Honse d069947252 Store name in WootingKeyboardController to avoid setting it in detector 2025-08-14 22:56:43 -05:00
Adam Honse 550503d757 Store name in ViewSonicController to avoid setting it in detector 2025-08-14 22:43:40 -05:00
Adam Honse ef6241fe38 Store name in ValkyrieKeyboardController to avoid setting it in detector 2025-08-14 22:31:59 -05:00
Adam Honse fcce668d66 Store name in TrustControllers to avoid setting it in detectors 2025-08-14 20:20:10 -05:00
Adam Honse 1bd9215a72 Store name in SRGBmodsControllers to avoid setting it in detectors 2025-08-14 20:11:54 -05:00
Adam Honse 840512751c Store name in SonyDualSenseController to avoid setting it in detector 2025-08-14 20:08:40 -05:00
Adam Honse 517287117b Store name in SkyloongController to avoid setting it in detector 2025-08-14 20:05:55 -05:00
Adam Honse 46d935c1a4 Store name in SapphireGPUControllers to avoid setting it in detectors 2025-08-14 20:03:41 -05:00
Adam Honse 9680d072fa Store name in RedSquareControllers to avoid setting it in detectors 2025-08-14 19:32:37 -05:00
Adam Honse 06413f2877 Store name in RedragonMouseController to avoid setting it in detector 2025-08-14 19:28:20 -05:00
Adam Honse ce86faabfe Store name in PowerColorRedDevilGPUController to avoid setting it in detector 2025-08-14 19:24:58 -05:00
Adam Honse 2134323bf8 Store name in PNYLovelaceGPUController to avoid setting it in detector 2025-08-14 19:17:34 -05:00
Adam Honse 67e08d3415 Store name in PatriotViperMouseController to avoid setting it in detector 2025-08-14 19:13:11 -05:00
Adam Honse f8d3c7a838 Store name in PalitGPUController to avoid setting it in detector 2025-08-14 19:10:35 -05:00
Adam Honse 2c630a5218 Store name in OKSKeyboardController to avoid setting it in detector 2025-08-14 19:06:29 -05:00
Adam Honse e418aa7f95 Store name in NZXTMouseController to avoid setting it in detector 2025-08-14 19:00:39 -05:00
Adam Honse 3ab1519e25 Store name in NZXTKrakenController to avoid setting it in detector 2025-08-14 11:50:06 -05:00
Adam Honse d8c40cab6d Store name in NZXTHue2Controller to avoid setting it in detector 2025-08-14 11:46:34 -05:00
Adam Honse f0e9650085 Store name in NZXTHue1Controller to avoid setting it in detector 2025-08-14 11:42:53 -05:00
Adam Honse a34d796059 Store name in NVIDIAIlluminationController to avoid setting it in detector 2025-08-14 11:42:43 -05:00
Adam Honse 9470cb69fd Store name in NvidiaESAController to avoid setting it in detector 2025-08-14 11:34:16 -05:00
Adam Honse 520b83a226 Store name in NollieController to avoid setting it in detector 2025-08-14 11:31:42 -05:00
Adam Honse 85af2e1ed7 Store name in N5312AController to avoid setting it in detector 2025-08-14 11:29:00 -05:00
Adam Honse f420e9bbbe Store name in MSIVigorController to avoid setting it in detector 2025-08-14 11:26:20 -05:00
Adam Honse 82cb9fb7d0 Fill in location in GigabyteSuperIORGBController 2025-08-14 10:19:50 -05:00
Adam Honse 719d7b8801 Store name in MSIRGBController to avoid setting it in detector 2025-08-14 10:19:11 -05:00
Adam Honse b13ca818bb Store name in MSIOptixController to avoid setting it in detector 2025-08-14 10:02:46 -05:00
Nikola Jurkovic 2dd013a0a0 AIO H1xx ELITE Series 2025-08-13 17:37:10 -05:00
Adam Honse 49e4f00aff Store name in MSIMysticLightControllers to avoid setting it in detectors 2025-08-13 11:49:45 -05:00
Adam Honse 4c018421a2 Fix warning from unused name parameter in LianLiControllerDetect 2025-08-12 19:33:15 -05:00
Adam Honse a2826ec865 Store name in MSIGPUController to avoid setting it in detector 2025-08-12 19:27:44 -05:00
Adam Honse c256b6246a Store name in MountainKeyboardController to avoid setting it in detector 2025-08-12 18:57:10 -05:00
Adam Honse f9bfb951ca Store name in MintakaKeyboardController to avoid setting it in detector 2025-08-12 18:54:35 -05:00
Adam Honse 8c63eeea47 Store name in LuxaforController to avoid setting it in detector 2025-08-12 18:48:34 -05:00
Adam Honse b136e7739a Store name in LinuxLEDController to avoid setting it in detector 2025-08-12 18:44:35 -05:00
Adam Honse 2967ccb1cb Add a mutex and remove a timeout to reduce flicker on HYTE Q60 logo LEDs 2025-08-12 13:10:36 -05:00
Adam Honse 03d5dd6008 Fix name initialization typo in HYTENexusController 2025-08-12 10:14:00 -05:00
Adam Honse 89d1ee2483 Remove name override for LianLiStrimerLConnect to match other LianLi controllers 2025-08-12 09:55:40 -05:00
Adam Honse c313b19fc5 Store name in LGMonitorController to avoid setting it in detector 2025-08-12 09:53:03 -05:00
Nikola Jurkovic 2a6856a5d2 fix led enumeration when lcd cap is installed 2025-08-12 08:47:23 -05:00
Adam Honse f3c7a213b1 Store name in LexipMouseController to avoid setting it in detector 2025-08-11 20:46:58 -05:00
Adam Honse f6ddf5676a Store name in LenovoMotherboardController to avoid setting it in detector 2025-08-11 20:45:07 -05:00
Adam Honse b331fbcd4d Store name in LenovoControllers to avoid setting it in detectors 2025-08-11 20:37:48 -05:00
Adam Honse 41eec46fa7 Store name in LegoDimensionsToypadBaseController to avoid setting it in detector 2025-08-11 20:31:05 -05:00
Adam Honse 0eb34eec25 Store name in LEDStripController to avoid setting it in detector 2025-08-11 20:23:07 -05:00
Adam Honse a1f144daf2 Store name in KeychronKeyboardController to avoid setting it in detector 2025-08-11 18:29:59 -05:00
Adam Honse ca73941e5d Store name in IonicoController to avoid setting it in detector 2025-08-11 18:07:13 -05:00
Adam Honse 0bdf600409 Store name in InstantMouseController to avoid setting it in detector 2025-08-11 18:04:55 -05:00
Adam Honse d5f8e2cac9 Store name in HYTENexusController to avoid setting it in detector 2025-08-11 18:02:26 -05:00
Adam Honse 20f3e5db0b Store name in HYTEMousematController to avoid setting it in detector 2025-08-11 17:24:00 -05:00
Adam Honse d412ef5e17 Store name in HYTEKeyboardController to avoid setting it in detector 2025-08-11 17:24:00 -05:00
Adam Honse 0269cdd068 Store name in HyperXMousematControllers to avoid setting it in detector 2025-08-11 17:24:00 -05:00
Nikola Jurkovic 12f90a67f9 link system hub fixups 2025-08-11 10:08:54 -05:00
Adam Honse ca554d9ef6 Store name in HyperXMouseControllers to avoid setting it in detectors 2025-08-10 21:26:58 -05:00
Adam Honse 0c0ffe7f5c Store name in HyperXMicrophoneController to avoid setting it in detector 2025-08-10 21:02:42 -05:00
Adam Honse 0eee6044b2 Fix name setting in GalaxGPUv1Controller 2025-08-10 16:55:24 -05:00
Adam Honse da21f992c5 Store name in HyperXKeyboardControllers to avoid setting it in detectors 2025-08-10 16:51:32 -05:00
Adam Honse 6c8a46cc7d Store name in HyperXDRAMController to avoid setting it in detector 2025-08-10 16:22:38 -05:00
Adam Honse aa31e21868 Don't override name in HoltekControllerDetect, names are generic so not saving them in Controller 2025-08-10 16:17:36 -05:00
lightminerva ee66121364 Move corsair k95 rgb platinum xt to the corsair peripheral v2 controller 2025-08-10 14:39:44 -05:00
Adam Honse 327edf2a6b Store name in GigabyteSuperIORGBController to avoid setting it in detector 2025-08-10 00:33:01 -05:00
Adam Honse 2535ac3edf Store name in GigabyteRGBFusionGPUController to avoid setting it in detector 2025-08-10 00:27:45 -05:00
Adam Honse df56b42e62 Store name in GigabyteRGBFusion2GPUController to avoid setting it in detector 2025-08-10 00:22:08 -05:00
Adam Honse bed69130fd Store name in GigabyteRGBFusion2BlackwellGPUController to avoid setting it in detector 2025-08-10 00:18:25 -05:00
Adam Honse f54460fd2e Store name in GigabyteAorusPCCaseController to avoid setting it in detector 2025-08-10 00:08:59 -05:00
Adam Honse 2bde9b287f Store name in GigabyteAorusMouseController to avoid setting it in detector 2025-08-10 00:07:00 -05:00
Adam Honse c8abbc6054 Add Razer Blackwidow V4 Pro 75% (Wired) 2025-08-08 19:20:35 -05:00
Adam Honse cba7c016d3 Store name in GigabyteAorusLaptopController to avoid setting it in detector 2025-08-08 11:43:37 -05:00
Adam Honse 7d0db424ec Store name in GigabyteAorusCPUCoolerController to avoid setting it in detector 2025-08-08 11:37:10 -05:00
Adam Honse 6f9e164874 Store name in GalaxGPUControllers to avoid setting it in detectors 2025-08-08 11:36:59 -05:00
Adam Honse 2927135cdd Store name in GaiZhongGaiControllers to avoid setting it in detector 2025-08-08 11:26:55 -05:00
Adam Honse 0afcdbd0ca Store name in GainwardGPUControllers to avoid setting it in detectors 2025-08-08 11:21:43 -05:00
Adam Honse 8813c9936d Store name in EVGAUSBControllers to avoid setting it in detectors 2025-08-08 00:11:31 -05:00
Adam Honse abe7068197 Store name in EVisionKeyboardControllers to avoid setting it in detectors 2025-08-07 23:22:41 -05:00
Adam Honse d7f0872690 Store name in EVGATuringGPUController to avoid setting it in detector 2025-08-07 23:04:29 -05:00
Adam Honse df75659778 Rework EVGAPascalGPUController to use I2C PCI detector and store name in controller to avoid setting it in detector 2025-08-07 23:03:53 -05:00
Adam Honse c32663bb32 Rework EVGAGP102GPUController to use I2C PCI detector and store name in controller to avoid setting it in detector 2025-08-07 11:55:18 -05:00
Adam Honse c94eed432d Store name in EVGAAmpereGPUController to avoid setting it in detector 2025-08-07 11:53:26 -05:00
Adam Honse a73a879238 Store name in DuckyKeyboardController to avoid setting it in detector 2025-08-07 11:17:54 -05:00
Adam Honse a8500a2a8a Store name in DRGBController to avoid setting it in detector 2025-08-06 17:18:39 -05:00
Adam Honse 718962c188 Store name in DasKeyboardController to avoid setting it in detector 2025-08-06 17:13:55 -05:00
Adam Honse e6190ec275 Store name in DreamCheekyController to avoid setting it in detector 2025-08-06 11:31:48 -05:00
Adam Honse 13e8f70438 Store name in DarkProjectrKeyboardController to avoid setting it in detector 2025-08-06 11:27:37 -05:00
Adam Honse ea206235c5 Store name in CryorigH7QuadLumiController to avoid setting it in detector 2025-08-06 08:33:36 -05:00
Adam Honse dc0103a155 Store name in CreativeSoundBlasterXG6Controller to avoid setting it in detector 2025-08-06 08:25:20 -05:00
Adam Honse 31ec06b576 Store name in CougarControllers to avoid setting it in detectors 2025-08-06 00:48:13 -05:00
Adam Honse 17a58b4c22 Store name in CorsairLightingNodeController to avoid setting it in detector 2025-08-06 00:48:13 -05:00
Chris Pawlukiewicz 56564092bc New device: Gigabyte GV-N5090GAMING-OC-32GD 2025-08-05 20:57:48 -05:00
Adam Honse 2b546fce9f Store name in CorsairHydroPlatinumController to avoid setting it in detector 2025-08-05 20:50:38 -05:00
Sirs0ri 69a065eeed New device: ASUS ROG-STRIX-RTX3070-8G-V2-GAMING 2025-08-05 13:49:20 -05:00
Chris M a7c01e039d Fixed Gigabyte Blackwell GPU controller metadata 2025-08-05 19:37:26 +10:00
Adam Honse 4639833bdb Store name in CorsairHydroController to avoid setting it in detector 2025-08-04 17:35:00 -05:00
Adam Honse bf6fe2b4fb Default name in RGBController_CorsairHydro2 to avoid setting it in detector 2025-08-04 17:24:36 -05:00
Adam Honse 04d2ebacca Store name in CorsairDominatorPlatinumController to avoid setting it in detector 2025-08-04 17:18:26 -05:00
Adam Honse e44fd9ed78 Store name in CorsairCommanderCoreController to avoid setting it in detector, fix detector name 2025-08-04 17:15:58 -05:00
Adam Honse 526d35edfe Store name in ColorfulGPUControllers to avoid setting it in detectors 2025-08-04 17:12:14 -05:00
Adam Honse 2ec68c29de Store name in CherryKeyboardController to avoid setting it in detector 2025-08-04 14:04:27 -05:00
Adam Honse c761661386 Store name in AsusLegacyUSBControllers to avoid setting it in detectors 2025-08-04 13:37:21 -05:00
Adam Honse 142e7fcc02 Close HYTE mousemat connections (libusb/serial) on destructor to fix rescan 2025-08-03 22:35:34 -05:00
Adam Honse e928111c00 Store name in AsusAuraGPUController to avoid setting it in detector 2025-08-03 22:05:37 -05:00
Adam Honse 0665ded648 Remove name comment from AsusAuraCoreControllerDDetect 2025-08-03 22:03:21 -05:00
Adam Honse b9a8a62e38 Store name in AOCMousematController to avoid setting it in detector 2025-08-03 21:42:40 -05:00
Adam Honse 74bbaaf643 Store name in AOCMouseController to avoid setting it in detector 2025-08-03 21:38:07 -05:00
Adam Honse 5799ea8160 Store name in AOCKeyboardController to avoid setting it in detector 2025-08-03 21:33:56 -05:00
Adam Honse 3dc2453deb Remove name comment from AnnePro2ControllerDetect 2025-08-03 21:31:57 -05:00
Adam Honse d2b3965bc2 Remove name comment from AMDWraithPrismControllerDetect 2025-08-03 21:31:39 -05:00
Adam Honse e4da571d6b Store name in AlienwareMonitorController to avoid setting it in detector 2025-08-03 21:28:27 -05:00
Adam Honse 5e45480a0e Store name in AlienwareKeyboardControllers to avoid setting it in detector 2025-08-03 18:43:02 -05:00
Adam Honse 90c1e10cc5 Fix AlienwareMonitorController on Linux 2025-08-02 17:45:44 -05:00
Daniel Schaefer 0255b09e0e Compiling.md: Update MSVC runtime download URL 2025-08-02 14:23:13 -05:00
Adam Honse bd21325d04 Fix warnings 2025-08-02 01:59:44 -05:00
berendi 9bc2a6fa2b Initial support for PNY ARGB EPIC X 5070Ti
Commits squashed, cleaned, and reworked for 5070Ti by Adam Honse <[email protected]>
2025-08-02 01:29:03 -05:00
Aiden Vigue cb3f0fdcbd Support for iCUE Link System Hub & attached devices
Commits amended to adhere to OpenRGB code standards and restructure functional layout by Adam Honse <[email protected]>
2025-08-01 21:46:29 -05:00
Adam Honse b8628bb495 Store name in BloodyB820RController to avoid setting it in detector 2025-08-01 11:37:40 -05:00
Adam Honse 9c26f79ca6 Store name in BloodyMouseController to avoid setting it in detector 2025-08-01 11:35:38 -05:00
Adam Honse 30f9b84d5f Use GetName instead of directly accessing the RGBController::name member outside of Controllers 2025-08-01 11:32:55 -05:00
Leon 1318d23401 "Add support for Asus ROG RTX5090 Astral OC BTF and WHITE" 2025-08-01 00:10:13 -05:00
Adam Honse 9fb71a30ec Use getter functions when accessing string fields in RGBControllers in ProfileManager and cli 2025-07-31 18:55:12 -05:00
Adam Honse abd34f1810 Rework RGBControllers and detectors that set string fields other than name outside of the RGBController 2025-07-31 18:36:06 -05:00
Adam Honse 6a472437bb Remove unnecessary implementations of SetCustomMode 2025-07-31 17:35:20 -05:00
Adam Honse 43b97bca75 Rework Debug controller and add manual settings entry for it, also remove graying out the settings save button as sometimes it prevents saving changes 2025-07-31 00:11:18 -05:00
Chris M a667bd456c Removed non-printable characters from License.rtf
* Changed EOL character from Linux LF to Windows CRLF
2025-07-30 22:17:32 +10:00
Adam Honse c6de7cf784 Mark OpenRGB.exe as KeyPath in Wix installer 2025-07-28 21:13:21 -05:00
Adam Honse 59deaad070 Add file header comment to ResourceManagerInterface.h 2025-07-27 01:49:45 -05:00
Muhamad Visat 7709799bc2 Add support for the GALAX GeForce RTX 3080 SG 2025-07-27 01:30:22 -05:00
Adam Honse d59138363e Handle condition where detection finishes before OpenRGBDialog constructor finishes/has time to register detection end callback. Fixes plugins not loading when running OpenRGB as a background service. 2025-07-26 02:36:38 -05:00
Adam Honse faaf2009b6 Add keepalive thread for Razer Blade 14 2021 and 2022 that sends a get device request to keep lighting active 2025-07-26 01:44:09 -05:00
Adam Honse 66c9691c87 Add exception for HYTE NP50 third channel, which needs to send 750 bytes according to documentation 2025-07-25 00:57:00 -05:00
Adam Honse 73d09e7c1c Fix HYTE Nexus Portal NP50 2025-07-25 00:30:37 -05:00
Arthur de Groot 3a508e71aa Update SDK docs 2025-07-24 10:16:57 -05:00
robynegrul a1d7a76349 Lenovo Legion S7 Gen7 2025-07-23 21:22:28 -05:00
Adam Honse 5ea65eda5a Update Compiling.md Windows section to reference the OpenRGB-Qt-Packages and build-windows.bat method of building OpenRGB from source, which is the official build procedure used by the pipeline builds 2025-07-22 19:54:02 -05:00
NolanPG 29347b9b4d Fix Gigabyte's RX 9070 XTs detection 2025-07-21 22:15:22 -05:00
Rahul Salvi a06d528d3b Add support for PowerColor Red Devil RX6800XT 2025-07-20 13:40:31 -07:00
Adam Honse ac0fd4b3fc Remove commented code in build-windows.bat 2025-07-20 01:39:48 -05:00
Valtekken 47783feecb Updated Italian translation's missing lines. 2025-07-19 09:05:53 +00:00
Whippu fad8955397 Add support for Gigabyte RX 7900 GRE 2025-07-18 18:34:10 -05:00
Adam Honse d0bcf06e5f Update metainfo 2025-07-17 11:57:08 -05:00
Adam Honse fed03f88c8 Clean up code 2025-07-16 08:31:48 -05:00
Adam Honse b6afcc222a Add regex include for MacOS 2025-07-16 08:12:09 -05:00
Dmitry Kychanov 4bcc33569a Fix filesystem errors in SerialPort 2025-07-16 15:09:21 +04:00
Dmitry K 46a79c6bb5 Serial port field is now drop-down list 2025-07-16 01:29:16 -05:00
Adam Honse 25d45fd9db Add server settings to settings page 2025-07-15 18:11:32 -05:00
Adam Honse c5795492e1 Update Fedora spec file to include systemd service 2025-07-15 11:45:42 -05:00
Adam Honse e86d9f9241 Add SystemD service file to Linux installation 2025-07-15 11:20:13 -05:00
Adam Honse 3db4ea30a3 Re-add Linux signal handler that was lost when rebasing Windows service main.cpp rework 2025-07-15 11:06:11 -05:00
Adam Honse a3acd6bda5 Fix XPG S40G infinite loop on Windows 11 2025-07-15 00:07:53 -05:00
Adam Honse 12a3b1f83e Delete controller when deleting HYTE RGBControllers 2025-07-14 16:45:01 -05:00
berendi cf2df815e3 Support starting OpenRGB as a Windows service
Commits squashed, code style cleaned up, and manually rebased by Adam Honse <[email protected]>
2025-07-14 20:32:14 -05:00
Adam Honse f03e4fd049 Implement find_usb_serial_port for MacOS, switch HYTE CNVS implementation to serial-based 2025-07-14 17:27:10 -05:00
Jana Rettig 75bf674537 Add support for PowerColor Red Devil GPUs 2025-07-14 15:08:58 -05:00
Adam Honse c3b1b16d11 Clean up comment formatting in ResourceManager.h 2025-07-12 23:04:59 -05:00
Adam Honse d8b9159125 Rework handling of NetworkClient callbacks to route them through ResourceManager and move connection of saved clients to after autoconnection of local client in InitCoroutine 2025-07-12 22:49:14 -05:00
Adam Honse a30617d971 Code cleanup in OpenRGBDialog 2025-07-12 21:58:31 -05:00
Adam Honse c7d824fbf3 Remove unused functions in OpenRGBClientInfoPage and OpenRGBDialog 2025-07-12 21:26:08 -05:00
Adam Honse 2335259dd6 Clean up comment formatting in DMI info files 2025-07-12 21:10:11 -05:00
Adam Honse 64686c92cd Clean up comment formatting in AutoStart files 2025-07-12 20:58:47 -05:00
silverspy18 3cbc4e5570 Add Gigabyte Radeon RX 9070 XT GAMING OC 2025-07-10 15:42:19 -07:00
silverspy18 d3f49c72e1 Implements i2c_smbus_amdadl::i2c_xfer for AMD ADL I2C. 2025-07-10 14:16:57 -05:00
Milan Cermak f460a6573c Add new Kingston model code 0x15 2025-07-09 18:52:18 +02:00
Milan Čermák 26a0b88937 Initial commit for TeamGroup T-Force Xtreem ARGB DDR4 Memory 2025-07-08 16:39:22 -05:00
Adam Honse a3ca8a721d Clean up comment formatting in ResourceManager.cpp 2025-07-08 15:27:59 -05:00
lulu731 bdaebe1218 Feat/ms 1565 2025-07-07 11:55:29 -05:00
Adam Honse f76dbb08cc Add GitHub Sponsor information 2025-07-07 02:20:15 -05:00
Adam Honse 5ac2ece8b4 Clean up comment formatting in SettingsManager and main cpp files 2025-07-07 01:35:42 -05:00
Adam Honse 37cd743315 Clean up comment formatting in LogManager and StringUtils cpp files 2025-07-06 14:39:37 -05:00
Fran c0c772b11b Add Palit RTX 5070 GamingPro 2025-07-05 12:44:18 -05:00
Marco Martinez ccc78c3516 Add support for Airgoo DRGB Controller 2025-07-05 12:38:55 -05:00
LucasMZ 09b7aab886 translation: update pt_BR 2025-07-05 08:55:04 -03:00
Adam Honse ce3eac9d8a Remove some commented outdated code 2025-07-05 01:51:52 -05:00
Adam Honse a762d00aa8 Fix warnings in Windows build 2025-07-05 01:47:40 -05:00
Adam Honse e5b3c12814 Fix warnings in MacOS build 2025-07-05 01:19:06 -05:00
Adam Honse df73d0263a Add send_in_progress locks around send groups in NetworkServer.cpp 2025-07-04 23:37:23 -05:00
Adam Honse 2affb6d1e7 Add missing send_in_progress locks around send groups in NetworkClient.cpp 2025-07-04 23:32:16 -05:00
Adam Honse 4cc6a28e73 Rework NetworkClient server initialization to allow interruption and restarting of server list request process when server sends a device list updated notification 2025-07-04 04:24:37 -05:00
Adam Honse 89881bfd7e Improve spacing so that text doesn't get cut off in GNOME on Linux 2025-07-04 04:24:37 -05:00
Adam Honse 458e30e2be Update client info page UI to account for added column 2025-07-04 04:24:37 -05:00
Adam Honse 5aaadf4e5a Require protocol version 5 to send rescan devices packet and to show rescan button in clients list 2025-07-04 04:24:37 -05:00
Adam Honse c750158286 Make the rescan action in ResourceManager send a rescan request to the client if the client is the primary target (local connection or only connected client when local detection disabled) 2025-07-04 04:24:37 -05:00
Adam Honse 80dee91ab9 Add client functionality to send rescan request and add rescan button for each client in client list 2025-07-04 04:24:37 -05:00
Adam Honse 0cfe5ae0bb Add SDK command to rescan devices 2025-07-04 04:24:37 -05:00
Arthur de Groot b6d4ded29a Fix Logitech G915 blue channel writes for little packet 2025-07-04 02:34:02 -05:00
Adam Honse 6d981e21ff Rework OpenRGBDialog rescan behavior to update UI when rescan is triggered outside of the UI 2025-07-04 00:22:08 -05:00
Adam Honse 38afb8b8eb Replace pwsh with powershell as it is available by default and pwsh needs to be separately installed 2025-07-04 00:09:15 -05:00
Sirs0ri 6efb172fb2 fix: spelling of Nvidia GPU label in New Device issue template 2025-07-03 19:35:51 -05:00
Andre Toerien 3332835417 Use RegisterNetworkClient() with --client 2025-07-03 23:34:08 +02:00
Adam Honse ec34b23688 Convert Corsair Vengeance RGB (non-Pro) controller to use DRAM SPD detector 2025-07-02 21:59:39 -05:00
Devin Wendt e4c43548eb Add multizone support for LIFX devices 2025-07-02 19:47:07 -05:00
Adam Honse fc6306f44a Fix warnings in ASUS USB controllers 2025-07-02 11:26:20 -05:00
Adam Honse 520b2450e3 Fix warning in RazerHanboController.cpp 2025-07-02 11:24:16 -05:00
Adam Honse c96119a9fd Fix warnings in RGBController_MSIMysticLight761.cpp 2025-07-02 11:07:05 -05:00
Adam Honse 5242b3cb03 Fix warnings and clean up MSIMysticLight761Controller 2025-07-02 10:27:51 -05:00
Adam Honse 21cb086b87 Fix unused argument warning in GoveeController 2025-07-02 08:28:23 -05:00
Adam Honse c4d0d38e69 Fix warnings in GigabyteRGBFusion2BlackwellGPUController.cpp 2025-07-02 08:16:55 -05:00
Adam Honse eecdd4befc Fix warnings in AMBXController.cpp 2025-07-02 00:22:52 -05:00
Adam Honse 804490399f Fix warning in AlienwareAW3423DWFController.cpp 2025-07-02 00:18:24 -05:00
Adam Honse 47bb1c0b37 Fix qsizetype 2025-07-02 00:17:32 -05:00
Adam Honse 064bae7b87 Cleanups and warning fixes in ManualDevices 2025-07-01 23:54:20 -05:00
Adam Honse ebfbb4b56f Update file header comment in CorsairVengeanceController to note that it is for original single-zone DDR4 variant 2025-07-01 23:25:13 -05:00
Brandon Ong 35203da9c3 Add support for NZXT F140 RGB Duo fan in NZXT Hue 2 Controller 2025-07-01 21:25:35 -05:00
MrIceHavoc b4dff4dd0c Initial commit for EVGA RTX 3090 Ti FTW3 Ultra Hybrid Gaming device ID 2025-07-01 21:15:19 -05:00
Thomas Peters-Hall 68fc171a31 Add support for MSI Gaming Trio RX 7900 XTX 2025-07-01 20:43:52 -05:00
Atome “Atom” Art fb1c20ed30 Add Rescan Devices button to systray icon dialog 2025-07-01 20:39:55 -05:00
Wolfieee Wolf a31c4f5254 Add DDP (Distributed Display Protocol) controller support 2025-07-01 09:27:00 -05:00
Dmitry K 570cc16c98 Unified page for Manually Added Devices 2025-06-30 10:46:55 -05:00
Adam Honse d796fcba8f Add detection message for reading SPD information and rework IsAnyDimmDetectorEnabled so that it doesn't overwrite the detection string before the GUI can read it 2025-06-27 01:26:29 -05:00
Adam Honse ad7a6e60f2 Cache the JEDEC ID value in SPDAccessor and improve SPD detector logging. Caching the JEDEC ID speeds up DRAM detection significantly. 2025-06-27 01:10:06 -05:00
Joseph E 7c02075ba6 Prevent infinite loop of closeEvent() in OpenRGBDialog 2025-06-26 22:45:10 -05:00
Adam Honse a83165f112 Fix Qt6 amd64 AppImage 2025-06-26 21:58:30 -05:00
morg 8ad90314fd AutoStart settings: fix server port range 2025-06-26 08:34:35 -05:00
morg e2db20b1f3 DeviceView: prevents setting 0px as font size. 2025-06-26 07:44:40 -05:00
Adam Honse 2e26a7f82d Update Nuvoton SMBus documentation for Linux 2025-06-26 02:56:44 -05:00
Adam Honse 313fda32c0 Add Common Modes documentation from the wiki repo 2025-06-26 01:40:02 -05:00
McNutnut 28c0bd8592 Add ViewSonic Elite Monitor (XG271QG) 2025-06-26 00:29:03 -05:00
Adam Honse e87d20b08d Fix JGINYUE not being detected in Linux 2025-06-26 00:28:05 -05:00
RedBlackAka ce32b88010 Add Asus ROG GTX 1060 Gaming #4870 2025-06-19 13:48:56 -05:00
rom4ster 9f82afa485 MSI X870 Tomahawk WIFI support 2025-06-18 18:14:42 -05:00
Jana Rettig 5589aad730 Add I2C_SMBUS_I2C_BLOCK_DATA mode to i2c_smbus_amdadl 2025-06-18 18:05:58 -05:00
Dmitry Kychanov 5f8b044577 Convert all UI files to match Qt standards 2025-06-18 17:53:14 -05:00
Nico Maas 924f5af2ed Implements support for Gainward RTX3090 Ti Phantom 2025-06-17 11:37:36 +02:00
Paulo a5acd5f322 Add static mode to Gigabyte Blackwell controller 2025-06-15 22:04:01 -05:00
ToastKiste211 dff4cc6cbf Add Corsair K68 Red Shadow 2025-06-13 08:13:29 -05:00
ToastKiste211 4532f98a94 Add corsair k60 rgb pro tkl white (v2) 2025-06-10 18:04:48 -05:00
Dmitry Kychanov c09d41bd40 Added base class for all Manually Added Devices settings Entries 2025-06-10 10:32:30 +04:00
Hepi34 fc26902d1d Implements support for the MSI RTX 5080 SUPRIM SOC 2025-06-09 13:27:14 -05:00
linux fight a427bfe1e1 Fixed Colorful iGame RTX3060 Ti W OC detection 2025-06-09 12:36:33 -05:00
Adam Honse 5b1b9b011a Update translating section in CONTRIBUTING.md 2025-06-06 09:27:11 -05:00
Antonin Del Fabbro 97ea56e777 Add basic explanations about Translation 2025-06-06 09:22:52 -05:00
Dmitry Kychanov 91a40ab079 Improved About page 2025-06-05 12:12:08 -05:00
ToastKiste211 4ea1d9a1f4 Support for Corsair K95 RGB PLATINUM SE 2025-06-05 12:07:10 -05:00
zjjxwhh 33dc2f41a9 Improve Simplified Chinese (zh_CN) translation 2025-06-05 08:30:13 -05:00
Dmitry K 6793d4a3a0 Move Autogenerated UI code into Private sections of the window classes 2025-06-04 18:21:13 -05:00
Kyle Rose 4c6bf55c8a Provide more useful CLI error messages 2025-06-04 18:16:45 -05:00
Wolfieee Wolf a977cadfda Add AMBXController for Philips amBX Gaming lights 2025-06-04 17:50:44 -05:00
Antonin Del Fabbro 381069afc7 Improve French (FR_fr) translation 2025-06-03 12:15:32 +02:00
Matthias 3c14af4a28 add support for 'Gigabyte AORUS Radeon RX 9070 XT Elite' 2025-06-02 15:27:48 -05:00
ToastKiste211 c3476be9e4 ADD more Corsair commander core versions 2025-06-02 10:41:37 -05:00
Baptiste Girod 519cdb642c Added ASUS TUF GeForce RTX 5090 Gaming non OC 2025-06-02 15:11:45 +00:00
WalterWoshid 2c1e23fdbd Add support for Lenovo Legion Pro 7 (16IRX9H) 2025-05-30 21:36:56 +02:00
Zhi Yan 7f865d73f0 Add some DRGB controllers 2025-05-30 08:01:13 -05:00
Daniel Stuart d98db1587b Initial support for Galax v2 GPU controller 2025-05-30 00:05:10 -05:00
Dmitry Kychanov 34ff3aa99a Minor cleanup in detectors 2025-05-30 02:44:34 +04:00
Wolfieee Wolf 7177a534b9 Add MadCatzCyborgController for MadCatz Cyborg Gaming Light 2025-05-28 11:55:53 -05:00
Paulo 3e7ad705bb Update Gigabyte Blackwell controller and adds several GPUs 2025-05-27 15:23:36 -05:00
Dave Cuza ac1503d246 Add support for ZOTAC GAMING GeForce RTX 2080 Ti AMP 2025-05-27 10:08:34 -05:00
ManiacKnight 26732ed42c Add Gigabyte NVIDIA 5070TI EAGLE OC ICE 2025-05-27 02:44:33 +05:30
mi4code 0a3a1e627c Add support for Patriot Viper V550 2025-05-23 23:43:52 -05:00
Kurt Borja a4476055ec Controllers: AlienwareController: Fix number of zones probing 2025-05-20 08:02:16 -05:00
Barry H a3afb8dcd8 Change TT Riing Quad controller leds_max from 54 to 60 2025-05-19 22:22:47 -05:00
Jonathan Guzmán ca900540b4 fix Arch Linux release url. 2025-05-18 00:30:01 -05:00
Fabian Arndt 45631aa850 Added support for "Gigabyte AORUS RX 6750 XT ELITE 12G" 2025-05-17 17:30:37 +02:00
sonicpanther101 d6a4f315fb Added new device Gigabyte GeForce RTX 4070 Eagle OC 2025-05-16 08:27:09 -05:00
Peter Berendi af5f66bc9e piix4: fix SMBHSTSTS test before and after transaction 2025-05-16 02:10:34 -05:00
Fabius Mettner 6e685be02d Add support for NZXT B650E Mainboard in NZXT Hue 2 Controller and allow Resizing NZXT Hue 2 controlled devices 2025-05-16 01:42:11 -05:00
Adam Honse 95b029d49d Initial support for Govee devices 2025-05-16 01:02:44 -05:00
Dmitry K 20f6565f44 Monitor and Laptop device types 2025-05-15 17:34:39 -05:00
Grant Bakker d296f770b6 Add MSI Radeon RX 7900 XT Gaming Trio Classic 2025-05-15 12:42:23 -05:00
Barry H bbe79420b1 Added TUF RTX5070 & RTX5090, ROG Strix RTX2060, RTX2060S & RTX5070Ti 2025-05-15 11:28:45 -05:00
Adam Honse 6aa5d71ba7 Remove dead code 2025-05-15 11:14:11 -05:00
DRC_Michael b83cc7fecd add: Sapphire Radeon RX 9070 XT Pure 2025-05-12 15:41:08 -05:00
Daniel Clark 77728fd425 Implement support for ITE IT5711 RGB Controller 048D:5711. 2025-05-12 15:01:42 -05:00
LucasMZ 478cf4e9da translation: update pt_BR
- fix many strings
- update missing translations
2025-05-09 21:56:38 -03:00
Paulo 425a92521f Add Gigabyte NVIDIA 5090 Gaming OC 2025-05-09 11:47:32 -05:00
Carlos Jordão 92d8240384 HyperX Origin Core variant 2025-05-09 11:36:37 -05:00
pallaswept 138d991cf2 Signal Handling and Fix for Closing 2025-05-09 08:10:55 -05:00
Adam Honse ac13b614d6 Add new controller for Alienware monitors with old protocol, clean up
AW3423DWF controller to match new behavior
2025-05-08 20:52:17 -05:00
Fefedu973 fd4403ec68 Add support for the Alienware AW3423DWF and AW3225QF monitors 2025-05-08 19:36:19 -05:00
Adam Honse ce62d9998e Add IGNORE_TIMER_RESOLUTION back for Windows 11 but keep NtSetTimerResolution in a loop 2025-05-08 19:32:00 -05:00
Adam Honse aa66814c43 Revert "InitializeTimerResolution fix slowdown on Windows 10, drop obsolete workaround for Windows NT"
This reverts commit 4e5fd41be7.
2025-05-08 19:31:53 -05:00
Paulo 14d0388a65 Update Gigabyte Blackwell controller for multizone gpus 2025-05-08 12:10:03 -05:00
Andrei Khartchenko c1d0553866 add ASUS TUF RX 9070 XT GAMING OC 2025-05-03 04:53:23 -07:00
Adam Honse 6a80f24962 Build AppImage with qt6 2025-05-02 02:38:39 -05:00
Bond_009 ef5bab4ff7 Add support for ASUS ROG Strix GTX1070 OC BIOS 2025-05-01 14:40:46 -05:00
Paulo ce5d390a38 Add Gigabyte NVIDIA 5070 Ti Aero OC 2025-04-29 20:44:26 +00:00
mrubcich a2315a45ff Adding support for Redragon M810 Taipan. 2025-04-29 04:14:06 +00:00
Adam Honse a722a59288 Add Mastodon link 2025-04-26 03:43:46 -05:00
Joseph E 90508f7f1b Initial Razer Hanbo Chroma support 2025-04-23 08:07:34 -05:00
Naïm Favier dd034cbfa6 Fix suspend/resume on Linux 2025-04-22 07:45:49 -05:00
Ilya Navitsky 12d4ab4213 Add Belarusian translation 2025-04-22 00:22:24 -05:00
Paulo bb3d322048 Remove NVIDIA Gigabyte 5070 Ti Eagle OC from old protocol 2025-04-21 15:35:58 -05:00
Stephen Horvath 2c4b159901 Fix SPDDetector only scanning bus 0 on Linux 2025-04-21 14:42:22 -05:00
Paulo 9e6a2eb94c Add new controller for RGB Fusion 2 Blackwell GPUs 2025-04-21 14:16:34 -05:00
Peter Berendi 4e5fd41be7 InitializeTimerResolution fix slowdown on Windows 11, drop obsolete workaround for Windows NT 2025-04-21 10:58:47 -05:00
Adam Honse c02da4066c Add build-windows.bat file for managing the Windows builds and update CI to use it 2025-04-21 08:06:09 -05:00
Adam Honse 10797f049c Add Qt version to software information tab 2025-04-19 01:58:48 -05:00
breakNull 489d05a13f Implement MSI GeForce RTX 5090 32G SUPRIM LIQUID SOC RGB 2025-04-18 18:22:34 -05:00
totesNotRosalyn a24a497759 Fix warnings in Qt6 builds 2025-04-18 18:20:15 -05:00
alminljajic 45af044cd8 add: saphire RX 9070 PCIe ID's 2025-04-13 13:42:14 -05:00
Y M 49aafb263f Ukrainian translation added 2025-04-11 18:15:04 -05:00
r muk 6401cf1da2 Added support for the Gigabyte Aorus Master 5090 Ice GPU 2025-04-10 11:41:44 -05:00
RedBlackAka 1f6be26489 Update device types in RGBControllerAPI documentation [authored by Nathan] 2025-04-09 08:07:35 -05:00
xtreme5183 c623194948 Add Gigabyte RTX 5090 D MASTER 2025-04-06 13:48:13 +08:00
4rcheria a2330fea6a Add Wooting 80HE support 2025-04-05 13:31:26 +02:00
Oleksii Taranenko acca2baa57 Fixed Kingston Fury Beast DDR5 do not detect #4725 2025-04-04 08:26:33 +00:00
Shubham Vasaikar e856422674 Add support for ASUS ROG Astral GeForce RTX 5080 #4708 2025-04-03 17:39:21 -05:00
Zhi Yan 8088f81eff Add some DRGBController device IDs 2025-04-01 20:36:41 -05:00
RedBlackAka c5d5209154 Add Asus TUF RTX 5080 OC #4703 2025-03-31 23:03:25 -05:00
Alastair McFarlane ff392ba61d Add Gigabyte RTX 5070 Ti Eagle OC 2025-03-28 08:22:49 -05:00
Erik Olofsson 3ecd1eaaf1 Add Asus ROG Astral LC RTX 5090 OC 2025-03-27 23:24:29 +01:00
totesNotRosalyn fbf1e957a2 Initial commit for ZOTAC_GAMING_GeForce_RTX_2080_AMP 2025-03-26 16:11:02 -05:00
RedBlackAka a7de887036 Add Sapphire RX 6950 XT Nitro+ Pure and reorder #4697 2025-03-26 00:15:31 -05:00
RedBlackAka 9314bd23a2 Add Asus TUF RTX 4080S OC SPID #4688 2025-03-25 10:56:29 -05:00
toxyy 685b6c36ac Adds MSI GeForce RTX 5070 Ti 16G GAMING TRIO OC PLUS Implements #4705 2025-03-24 17:05:54 -05:00
Shauren d8b60fbc7c Add MSI GeForce RTX 5080 16G GAMING TRIO OC 2025-03-24 11:44:31 +01:00
Chris M 74446a3c67 Fixed profile loading on Asus ROG Strix Scope II
* Reverted regression introduced with b4d15b954
* Resolves #4632
2025-03-15 11:04:10 +11:00
RedBlackAka e0f40c52fe Add Asus ROG RTX 4090 White SPID #4676 2025-03-13 08:07:32 -05:00
Michal Malý 28e97cf2d9 Include missing <chrono> header 2025-03-10 22:53:42 +01:00
Michal Malý ef344506b7 Use qintptr instead of long when building against Qt6 2025-03-10 22:52:25 +01:00
berendi ce3ef333b7 call ResourceManager::Cleanup() on exit 2025-03-10 11:31:09 -05:00
Michal Malý 33ea73aac2 Add support for Sapphire Radeon RX 9070 XT Nitro+ 2025-03-10 08:32:08 -05:00
RedBlackAka a6094c26b1 Adds Asus TUF RTX 5070 Ti OC #4637 2025-03-09 23:49:46 -05:00
RedBlackAka 8175a273d0 Adds Nvidia RTX 5080 FE 2025-03-09 15:08:45 -05:00
RedBlackAka 7a3e8f7e52 Add Asus ROG Astral RTX 5090 OC #4666 2025-03-09 15:07:03 -05:00
IoXaM 9786ba8f24 Aorus 5090 Master Support 2025-03-09 03:59:26 +01:00
Adam Honse ed014ec73e Implement matrix for HYTE THICC Q60 LCD zone 2025-03-08 18:06:55 -06:00
RedBlackAka 9fb4314964 Add Asus ROG Astral RTX 5080 OC #4644 2025-03-08 15:14:15 -06:00
Alexander V 2157644ab1 Add simple fix for support hator skyfall/rockfall keyboards to winbond controller 2025-03-07 00:33:24 -06:00
Adam Honse 598066bfe4 Enable fractional scaling for Windows, fixes #2571 2025-03-06 23:10:31 -06:00
Chris M b6c08ef38e Added Asus ROG STRIX RTX3090 24GB Gaming GPU
* Added `0x87C5` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx3090-24g-gaming-model/)
2025-03-07 08:33:48 +11:00
Atome “Atom” Art f4b242328d Add Sony Playstation DualSense Edge PID 2025-03-06 13:31:51 -06:00
Adam Honse 84af91da9e Fix plugin removal issues 2025-03-06 11:36:10 -06:00
Daniil ひっかもりい (Hikkamorii) 3ce3447b65 Add support for Sapphire RX 7700XT Nitro+ 2025-03-05 09:50:46 -06:00
Aiden Vigue e91b5434fa Add MSI 5090 Gaming Trio OC to MSI GPU controller 2025-03-03 16:37:48 +00:00
RedBlackAka 3e32a5b36c Add Gigabyte Aorus RTX 4070 Elite 2025-03-01 18:24:54 +00:00
SytheZN 3226cda0ea Add Palit RTX 5090 Gamerock 2025-03-01 17:27:07 +00:00
Adam Honse 280646e231 Add ROG Ally X to ROG Ally controller 2025-02-28 21:44:52 -06:00
RedBlackAka 52b23717e3 Fixes for German translation 2025-02-26 00:43:59 +00:00
rom4ster c450d0a6ba Fix zone configuration in Mountain keyboard controller 2025-02-26 00:06:41 +00:00
Chris 3405fbb0eb Adjusted G502 detector from IPU to PU
* Adjusted Wired detector to accomodate old and new firmware.
* Resolves #4627
2025-02-25 17:25:43 +11:00
RedBlackAka 55b737c51c Add Norwegian translation 2025-02-25 06:11:48 +00:00
RedBlackAka 860a978676 Use NVIDIA_SUB_DEV instead of NVIDIA_DEV for sub vendor string 2025-02-25 06:10:46 +00:00
RedBlackAka d677f1e5e4 Remove unused help button from Windows titlebar 2025-02-25 06:09:15 +00:00
Adam Honse 6b84edb4fd Change suffix back to git after 1.0rc1 release candidate 2025-02-25 00:02:29 -06:00
Adam Honse 1fbacdea37 OpenRGB Release Candidate 1.0rc1 2025-02-22 11:06:06 -06:00
Adam Honse d3859ff200 Add prepare-artifacts script to download, extract, and rename CI jobs and other files to be published after a release 2025-02-22 03:21:36 -06:00
RedBlackAka 6091a16074 Add Palit RTX 2060 2025-02-21 16:06:03 +00:00
titoudoc b3dd0590cd Add support for Nvidia 5090 FE 2025-02-21 16:03:35 +00:00
RedBlackAka f6e17542f3 Installer: remove .orp association 2025-02-20 11:24:32 +00:00
RedBlackAka bf4f5480be Installer: remove Start Menu shortcut on uninstall 2025-02-18 19:42:02 +00:00
RedBlackAka 22f2c28a27 Add Gainward RTX 3060 8GB Pegasus 2025-02-18 18:41:05 +00:00
RedBlackAka c57d58d49b Miscellaneous cleanups 2025-02-17 15:46:33 +00:00
kmiit 75899a01a0 Add Colorful iGame GeForce RTX 4070 TI SUPER Ultra W 16GB 2025-02-17 17:22:55 +08:00
Adam Honse 015b28c7d1 Clean up build-msi.sh script and make XML generation more readable 2025-02-16 20:50:24 -06:00
Adam Honse b7c8d63505 Print out Wix XML when building MSI package for debugging 2025-02-16 19:40:51 -06:00
Adam Honse 1809c752ae Update mbedtls dependency to 3.2.1 2025-02-16 09:30:29 +00:00
RedBlackAka ce2dc2a042 Correct Spanish translation to fix build 2025-02-16 02:10:52 +00:00
Samuel Torres 8292575663 Edit OpenRGB_es_ES.ts 2025-02-16 01:49:47 +00:00
Adam Honse 0d6ae64b24 Update hueplusplus dependency to 1.2.0 2025-02-14 23:16:53 -06:00
RedBlackAka bb6f8e2ddd Consistent capitalization on Settings page 2025-02-13 13:54:27 +00:00
Topher Sheridan d1cdea47c7 Implement RGB support for Galax RTX 2080 Super 2025-02-12 20:26:16 +00:00
RedBlackAka 093ac9f37d Add Palit RTX 2070S Jetstream #4586 2025-02-12 20:25:46 +00:00
RedBlackAka f8b8da47a3 Add Palit 4080 SUPER GamingPro #4531 2025-02-11 21:39:37 +00:00
Adam Honse 14d3c68145 Fix warnings 2025-02-10 10:21:36 -06:00
Arimil 02af851705 Add ROG Strix RX EVA-02 Edition 2025-02-10 05:14:39 +00:00
Ivan ba0b44f12e Added another version of Gigabyte RTX 2070 Gaming OC 2025-02-10 05:09:43 +00:00
Valtekken 4b0110b33b Italian translation update 2025-02-09 19:30:18 +00:00
RedBlackAka 4b26a579f2 Add NVIDIA TITAN RTX 2025-02-09 07:11:55 +00:00
RedBlackAka 311712bf92 Add Palit RTX 3070 Gamerock #4593 2025-02-08 21:06:12 +00:00
RedBlackAka 9a5bff7a35 Capitalize Apply Changes and Get Hardware IDs on Supported page 2025-02-07 23:49:26 +00:00
Chris 7b72d11c97 Correcting G903 HERO wired Interface
*  Resolves #4212
2025-02-07 23:15:59 +11:00
Adam Honse 85625a37b2 SDK cleanup, update SDK documentation 2025-02-06 20:00:27 -06:00
Adam Honse e88f9a1f75 Fix resource manager interface 2025-02-06 20:00:27 -06:00
morg b3dfd3b4b0 Move ResourceManagerInterface to its own file. Refactor Plugin interface 2025-02-06 20:00:27 -06:00
Adam Honse 5e08608c56 Add controller flags to information tab 2025-02-06 20:00:27 -06:00
Adam Honse 8fbde8073d Do not save virtual or remote devices to sizes.ors 2025-02-06 20:00:27 -06:00
Adam Honse bb79fbfc07 Add controller flags field with flags for controller location and update behavior 2025-02-06 20:00:27 -06:00
Adam Honse 1967ec9526 Save sizes file when server processes segment changes 2025-02-06 20:00:27 -06:00
Adam Honse 012cb5e62d Fix segment creation and modification over the network protocol 2025-02-06 20:00:27 -06:00
Adam Honse e634a77860 Add LED alternate names field to SDK protocol 2025-02-06 20:00:27 -06:00
Adam Honse 1d9779d80e Add alternate LED name field to KLM overlay type for regional key layouts 2025-02-06 20:00:27 -06:00
Adam Honse 65615e2bcf Use string get functions in the Qt UI 2025-02-06 20:00:27 -06:00
Adam Honse 27cac898b0 Initial development for alternate LED names suppport in RGBController API
Alternate LED names allow an LED to have a secondary "alternate" name.  The led_alt_names vector should either be empty if alternate names are not used or be equal in size to the leds vector.  Empty strings in the led_alt_names vector indicate that a particular LED does not have an alternate name.
2025-02-06 20:00:27 -06:00
Adam Honse f627dfc2cd Increment plugin API version 2025-02-06 20:00:27 -06:00
Adam Honse 11d6b19cde Add protocol handling for resizable effects-only modes, increment protocol revision to 5 2025-02-06 20:00:27 -06:00
Adam Honse 032b6c6300 Resizable Effects-Only Zones 2025-02-06 20:00:27 -06:00
RedBlackAka e1a821f3c9 Minor cleanup of pci_ids.h 2025-02-06 21:04:00 +00:00
Shady Nawara aca9d27808 macOS smbus Piix4, SuperIO, and Nct6775 2025-02-06 17:20:30 +00:00
RedBlackAka 3eb14e411d Installer: remove unnecessary .0 from Wix version 2025-02-06 17:15:03 +00:00
morg 9dff3873ca Update FR translation file 2025-02-06 09:35:12 +01:00
RedBlackAka ec4973bd74 Update Japanese translation 2025-02-05 02:46:59 +00:00
RedBlackAka 6b54f62ad7 Add German translations for RM messages 2025-02-04 21:32:00 +00:00
RedBlackAka f65f486c5d Make capitalization of MR 2708 consistent 2025-02-04 20:45:43 +00:00
Kaladasas 8509f377df Add Asus ROG Poseidon Geforce GTX 1080 TI 2025-02-04 20:06:00 +00:00
Dmitry Kychanov 36889aafc1 Added Russian translations for RM messages 2025-02-04 17:12:30 +00:00
RedBlackAka 1f1ae20812 Add MSI RX 6650 XT Gaming X #4590 2025-02-04 14:03:45 +00:00
Chris 6934bbf802 Added translations for LOG messages
* Added C Macro to allow QT lupdate parsing
* Added QTtrranslation wrapper around dialog message
* Updated all translation files
2025-02-04 06:04:28 +00:00
Shady Nawara e39fafc64f Adds support for NZXT Kraken Elite 2024 2025-02-04 04:58:44 +00:00
RedBlackAka 58c609674d Update Japanese translation 2025-02-02 22:42:21 +00:00
RedBlackAka 2471511668 Remove a bunch of vanished entries from Chinese translations 2025-02-02 22:41:44 +00:00
RedBlackAka 9e0eb9f1a4 Installer: Remove InstallPath 2025-02-01 16:52:38 +00:00
RedBlackAka 18ac1aae7e Remove translation authors from titlebar 2025-01-31 00:07:51 +00:00
RedBlackAka a199464b4b Fix Japanese and Greek not being included 2025-01-30 20:02:17 +00:00
slichtzzz 7c46002ce0 Update Russian translation 2025-01-30 17:29:03 +00:00
RedBlackAka 5160ecd9ff Add Asus ROG RX 5700 OC #4578 2025-01-30 14:00:16 +00:00
RedBlackAka 08d00ffedc Installer: add InstallLocation to registry and allow downgrade 2025-01-29 02:42:51 +00:00
Dmitry K efb0dd607b Updated Russian translations 2025-01-28 17:06:53 +00:00
Adam Honse 0d16514899 Fix some copy paste string errors and capitalization in UI form titles caught during translation 2025-01-28 07:29:45 -06:00
RedBlackAka 041c7600b7 Add Asus ROG Radeon RX 480 non-OC #4287 2025-01-27 23:25:54 +00:00
Sebastian 47c6305f77 Added Initial Support for F360 RGB Fans with the NZXT RGB Controller 2025-01-27 20:56:35 +00:00
RedBlackAka f0025e817b Add Asus ROG RTX 4070 SUPER #4573 2025-01-26 08:03:01 +00:00
Chris 45d716d652 Adjusted Vendor name string
* Reverted Manufacturer string to Vendor name
* Added VendorID to log strings
* Other changes for Bash style and formatting
2025-01-25 09:53:31 +11:00
Chris M 220f1e6d1f Initial commit for Razer Huntsman V3 Pro
* Adding PID 0x02A6 for the Huntsman V3 Pro
* Added metadata to RazerDevices.cpp
* Registered detectors
* Added capabilities to RazerController.cpp
* Resolves #4477
2025-01-24 07:48:36 +11:00
enesuzun2002 1eb8ac2e19 Add Colorful iGame GeForce RTX 4070 SUPER Ultra W OC-V 2025-01-23 08:04:24 -06:00
RedBlackAka 13e496ff2f Add Gigabyte RTX 4070 Ti Eagle OC Rev 2 2025-01-23 13:22:28 +00:00
Андрей Белов 0b685dbc86 fix link 2025-01-23 01:12:58 -06:00
Mark Hermeling 7d37ec60b9 Add space for '\0'
ReceiveThreadFunction receives max 1024 bytes and then adds '\0' to it, so the buffer needs to be 1025 chars.
2025-01-23 01:12:30 -06:00
Adam Honse 27a37f65ea Fix AppImage patch 2025-01-23 00:30:30 -06:00
Adam Honse 3d62c5d452 Add StartupWMClass to .desktop, fix #4568 and icon on GNOME dock/taskbar 2025-01-22 23:52:42 -06:00
Adam Honse 8f67c22a4a Cleanup labels on Information page 2025-01-22 23:41:42 -06:00
RedBlackAka fc310dc440 Add Palit RTX 4070 Ti SUPER Gamingpro #4545 2025-01-22 19:35:23 +00:00
ericleco 43ab975ec1 Issue 4376 Adding support for SteelSeries Apex Pro Gen 3 keyboard 2025-01-22 19:01:05 +00:00
RedBlackAka 03190ff0fd Add Aorus RTX 2070 #1064 2025-01-22 13:56:21 +00:00
Dmitry K 894d792e23 Config option to limit the number of log files 2025-01-22 13:55:36 +00:00
Chris fc65a01a60 Added deterministic UUID's to allow MSI upgrade
* Adjusted UUID to ensure they are deterministic per App / Channel
2025-01-21 22:04:03 +00:00
Adam Honse 54802fdd4b Fix device type strings 2025-01-21 14:18:04 -06:00
Adam Honse 23dbabacc6 Set GIT_DEPTH to 0 to ensure tags are available 2025-01-20 18:08:44 -06:00
as3210 bc1e8c25ce A user complained his Cherry KB US-variant was not detected #4141 2025-01-20 20:29:50 +00:00
Milan Cermak 90b21fd977 Disabling of unneccessary DIMM DETECTOR is backwards. 2025-01-20 19:34:05 +01:00
Adam Honse a18ef1ad3a Prevent changing port settings on already opened serial port on Linux using advisory locks, default serial ports to flow control off 2025-01-19 18:35:01 -06:00
Adam Honse 116a031c6d Fix warning in PhilipsHueSettingsHandler.cpp 2025-01-19 01:45:10 -06:00
RedBlackAka 6ac3fae951 Capitalize theme names 2025-01-19 01:10:07 -06:00
RedBlackAka 29e384af98 Add MSI RTX 4070 Gaming X Slim White #4562 2025-01-19 04:13:42 +00:00
Peter Berendi 219b8909ed notice to install PowerShell 2025-01-18 02:43:47 +00:00
Adam Honse a04fe26014 Implement Hue Settings Handler to prevent json type conflicts that resulted in a multiply defined linker warning 2025-01-17 20:34:23 -06:00
berendi 236e67e46b improve retry algorithm in KingstonFuryDRAMControllerDetect.cpp 2025-01-17 18:59:19 +00:00
Adam Honse 8305572613 Fix overflow memset in JGINYUEInternalV2Controller.cpp 2025-01-17 11:24:22 -06:00
RedBlackAka 9ced0a9225 Clean up MSI GPU names 2025-01-17 14:51:26 +00:00
Adam Honse 51031cc1fe Try to fix git-get-branch.sh call on Windows 2025-01-17 08:12:32 -06:00
Chris M e2ddc03dfe Add rules to deploy MSI build
* Turn the deploy MSI build off for forks
2025-01-17 07:00:04 +00:00
Adam Honse 253bf9c077 Fix warnings about omitted parameter names in scsiapi_macos.c 2025-01-17 00:58:33 -06:00
Adam Honse d9d3bc2b6c Fix warning in JGINYUEInternalUSBV2Controller.h 2025-01-17 00:53:10 -06:00
Adam Honse 633662037a Fix warning in OpenRGBDialog.h 2025-01-17 00:48:27 -06:00
Adam Honse ce65818060 Fix warnings and improve robustness of scsiapi_linux.c 2025-01-17 00:27:21 -06:00
Adam Honse 815924b9ac Fix warning in LogitechProtocolCommon.cpp 2025-01-17 00:16:34 -06:00
Adam Honse b64b856dfd Fix warning in EVisionV2KeyboardController.cpp 2025-01-17 00:15:18 -06:00
Adam Honse 1b9ce719f8 Fix warning in OpenRGBDialog.cpp 2025-01-17 00:12:59 -06:00
Adam Honse f8cc8a38c7 Attempt to clean up Fedora build warnings 2025-01-16 23:58:17 -06:00
Adam Honse 8126fbc4a3 Fix warnings in net_port.cpp 2025-01-16 23:44:58 -06:00
Adam Honse 66487422ab Fix warning in RGBController.cpp 2025-01-16 23:44:58 -06:00
Adam Honse 39d7ce6a50 Fix warning in ResourceManager.cpp 2025-01-16 23:44:58 -06:00
Adam Honse 5db2c3af8c Fix warning in LogitechProtocolCommon.cpp 2025-01-16 23:44:58 -06:00
Anthony Moon e0a78f753d added H100i Elite PID and detector 2025-01-16 12:37:36 -08:00
Adam Honse f3c3a9cd44 Fix AUR version 2025-01-16 11:59:38 -06:00
Adam Honse ae248d6d32 Update versioning scheme 2025-01-16 17:51:20 +00:00
RedBlackAka 7f04d34179 Improve Windows installer header and allow upgrading 2025-01-15 03:40:52 +00:00
Adam Honse 77fd471915 Only load segments from profile if segment count differs from base controller, prevents segment duplication on devices with autogenerated segments 2025-01-14 12:34:32 -06:00
RedBlackAka 67a0f031a7 Add Asus Tuf 7800 XT OC SPID 2025-01-14 16:56:39 +00:00
Adam Honse 50f4bb5e5a Indicate that system plugins cannot be removed by changing remove button text 2025-01-14 01:40:29 -06:00
Adam Honse 17ad77f07a Don't unload/remove plugins immediately, instead require a restart to prevent unclean unload/crash 2025-01-14 00:41:32 -06:00
Adam Honse 6f55f0e0c0 Rename Windows 64 MSI CI job 2025-01-14 00:05:05 -06:00
Adam Honse 567ad09506 Check executable directory for system plugins (in plugins folder) on Windows 2025-01-13 23:53:26 -06:00
RedBlackAka b8bfd1dddc Clean up and finish Windows installer 2025-01-14 05:01:50 +00:00
Chris cc26827c57 Adding Windows 64bit MSI package to build
* Added Windows 64bit deploy stage to CI/CD
* Created deb builder to support WINE and Wix toolset
* Created build-msi.sh to create XML manifest
2025-01-14 05:01:50 +00:00
Chris 698ababc6d Added message for users submitting to Github 2025-01-13 02:24:10 +00:00
ffernn 12dd340912 Add support for EVGA 3060 Ti FTW3 Ultra Gaming LHR 2025-01-13 02:14:45 +00:00
Hepi34 44c839c116 Implement RGB support for KFA2 RTX 2070 OC 2025-01-12 01:54:15 +00:00
Adam Honse d424b1f2b4 More protocol documentation updates 2025-01-10 21:53:21 -06:00
Adam Honse ff2188ba45 Update SDK Documentation, fix plugin protocol version type in NetworkServer 2025-01-10 11:59:53 -06:00
llyyr 1c42cdc928 Added ROG RX6600XT O8G Gaming 2025-01-10 14:05:09 +00:00
morg 3e1a0ff5a3 Prevent crashing when removing the last plugin in the list 2025-01-10 10:56:25 +01:00
morg 59e303c882 Add missing tags in logs 2025-01-10 08:53:31 +01:00
thombo f8e04f5f0f Support for MSI board 7D33 added, configuration of 7D89 corrected 2025-01-09 21:42:02 +01:00
Adam Honse 1cc41bb4cd Clean up README.md 2025-01-09 11:48:26 -06:00
Chris 990f89b94f Turn off translation for SDK and API version
* Revert 6ff4919d with better fix
* Resolves #4538
2025-01-09 18:23:59 +11:00
Adam Honse 648c0fce92 Get rid of old early prototype OpenRGBDialog, rename OpenRGBDialog2 to OpenRGBDialog 2025-01-08 23:31:34 -06:00
Barry H 014ae33f0b Chinese Traditional translation updated for v1.0 2025-01-09 03:43:21 +00:00
Adam Honse d8d7c37cf1 Fix SDK/Plugin version not displaying correctly 2025-01-08 21:03:09 -06:00
Adam Honse 471f9d3e2e Add server option to disable the size check called legacy workaround, which can be enabled to allow some old SDK apps that didn't properly implement the size to still be used 2025-01-08 20:44:20 -06:00
Chris M 3117dd0885 Added Bloody W90 Pro Mouse
* Added new PID and usage to A4Tech_Detector
* Added PID to layout switch in RGBController_BloodyMouse
* Resolves #4466
2025-01-09 02:27:33 +00:00
RedBlackAka 034a8858c5 Further improvements and fixes for German translation 2025-01-08 22:22:33 +00:00
morg 309d25e047 Remove useless ResourceManager include 2025-01-08 11:10:38 -06:00
morg accdcf1bea Move some last second code to the about to quit signal. 2025-01-08 16:54:21 +00:00
Barry H 3336817c9a Chinese Simplified translation updated for v1.0 2025-01-08 16:51:24 +00:00
RedBlackAka e570ae2b3f Update German translation for 1.0 2025-01-08 14:21:06 +00:00
Dmitry Kychanov b30992bf28 Russian translation updated for v1.0 2025-01-08 02:10:58 +00:00
Chris M 6ff4919d75 Moved Software Info API values to ensure translation
* Resolves #4538
2025-01-08 02:10:11 +00:00
Dmitry Kychanov 210f7c4993 Last minute fixes for ASUS G18 layout & Direct mode brightness 2025-01-08 03:26:51 +04:00
Dmitry K d1f90e134f [Review needed] Fix Rescan Crash on MacOS 2025-01-07 19:44:21 +00:00
RedBlackAka 20ae2d3662 Clean up Gigabyte GPU detectors 2025-01-06 22:07:38 +00:00
morg d2a9fb7c3c Refresh plugin list after a plugins scan. Fixes #4505 2025-01-06 15:16:57 +01:00
RedBlackAka c91e1dcdd9 Add fullscreen mode toggleable with F11 2025-01-05 22:48:31 +00:00
Alexey Sokolov b2ea4212fd Use a common way to check for Qt6 instead of introducing UB 2025-01-05 22:46:12 +00:00
RedBlackAka 49036313d0 Add Zotac 3080 AMP Holo non-LHR and minor cleanup 2025-01-05 22:44:58 +00:00
Barry H 8142fade24 Added ROG RX6650XT O8G Gaming from #3977 & TUF RX7600XT O16G Gaming 2025-01-05 22:43:21 +00:00
Adam Honse 02db89f7fc Add settings option to enable/disable logging to file, default to enabled 2025-01-05 16:32:32 -06:00
Chris M 7b454ce5f4 Preliminary support for Logitech FP8071
* Updated detection for differences in FP8071
2025-01-03 16:12:49 +11:00
Milan Cermak 366adce39e Patriot Controllers to use DIMM_DETECTOR 2025-01-02 19:18:37 -06:00
RedBlackAka 3546788c44 Add RTX 2060, 2060S & 2070 FE support 2025-01-02 17:20:27 +00:00
RedBlackAka 427e9d0209 Add Asus ROG RTX 2060 6G #4509 2025-01-02 14:26:55 +00:00
Chris M 8d8199a6b3 Initial commit for Razer Huntsman V3 Pro TKL White
* Adding PID 0x02A7 for the Huntsman V3 Pro TKL White
* Added metadata to RazerDevices.cpp
* Registered detectors
* Added capabilities to RazerController.cpp
* Resolves #4418
2025-01-01 10:41:03 +11:00
nicolasyang c3e352d252 Initial commit for Gigabyte Radeon RX 7800 XT GAMING OC 16G 2024-12-29 19:04:20 +00:00
Andrew Velasquez 510528ed7b Add ASUS_ROG_STRIX_RTX_4060_O8G_GAMING to pci_ids.h Tested and works. 2024-12-29 19:03:02 +00:00
Will db19bcd712 Set Skyloong GK104 Pro maximum brightness to OEM maximum 2024-12-27 07:42:28 +00:00
RedBlackAka 914cf1b3ff Clean up names of several devices 2024-12-27 07:41:33 +00:00
RedBlackAka 7085106b45 Attempt to fix dark theme on macOS 2024-12-23 07:36:17 +00:00
Milan Čermák a2867e151d HyperX controller to use DIMM_DETECTOR 2024-12-23 07:26:58 +00:00
Adam Honse 560ff5ab33 Clean up SPDAccessor, split out classes into their own files, add comments, update coding style 2024-12-21 22:21:41 +00:00
Frans Meulenbroeks 38732a8fb4 Add Controller for CoolerMaster MM712 Mouse 2024-12-20 17:41:39 +00:00
Chris M 2652e92461 Initial commit for Razer Firefly V2 Pro
+ Adding PID `0x0C08` for the Firefly V2 Pro
+ Added metadata to RazerDevices.cpp
+ Registered detectors
+ Added capabilities to RazerController.cpp
+ Resolves #4239
2024-12-20 15:00:45 +11:00
thomisus f1965b4650 Added Razer Basilisk V3 35K and V3 Pro 35K 2024-12-19 21:52:01 +00:00
Peter Berendi 2a9b7c8115 fix Kingston Fury DDR5 detection (#4479) 2024-12-19 14:32:40 +00:00
RedBlackAka 1bfd0fbd1f Add additional PCIE ID for ROG 2060S #4469 2024-12-13 21:53:43 +00:00
RedBlackAka ac9f5bed50 Initial commit for Nvidia RTX 2080 Ti FE 2024-12-13 21:52:55 +00:00
Yunus Arkan c2215cbe11 Adding support for EVision keyboard named "Gamepower ogre rgb" 2024-12-12 06:12:34 +00:00
TheMasterofBlubb 241b977904 Added alternative Pid for EVGA Z20 2024-12-12 06:11:45 +00:00
Milan Čermák ae94ce1252 Fix null pointer dereference in SPD 2024-12-10 14:37:42 +00:00
Adam Kaczinski 48f0084a9f adding fix for crash when using effects with kasa devices 2024-12-04 17:46:42 -08:00
Milan Čermák b1d5e83adc Implement common DRAM SPD module with EE1004 and SPD5118 driver support to support detecting DRAM modules using SPD information. 2024-12-04 20:41:52 +00:00
Adam Honse 3d171c222b Fix HYTE THICC Q60 2024-12-02 19:15:16 -06:00
Fabian R fe240190b3 Major fixes and improvements for CoolerMaster ARGB Gen2 A1 V2 2024-11-30 10:08:37 +00:00
Chris M 82b56e3de7 Fix broken README links
* Resolves #4415
2024-11-29 08:05:10 +11:00
morg 9d229e2a0c Prevent non AMD devices to be registered from i2c_smbus_amdadl 2024-11-28 08:11:49 +01:00
Dmitry Kychanov 89e74e6268 Added 4070 Ti per Discord request from Sayanov 2024-11-27 20:33:56 +04:00
Cooper Hall 47f391a3a6 Initial Commit for Lenovo Legion 7 gen 9 2024-11-27 03:30:00 +00:00
Adam Honse 80ac9b3f0d Initial commit for HYTE Nexus controller 2024-11-26 21:12:33 +00:00
Zach Deibert bd3cc94212 Add support for loading profiles on suspend/resume 2024-11-26 20:07:28 +00:00
Adam Honse 7d96b27f28 Fix warning in OpenRGBDialog2.cpp 2024-11-26 02:34:34 -06:00
Adam Honse a8cbf4f52f Fix warnings in OpenRGBDevicePage.cpp 2024-11-26 02:33:30 -06:00
Adam Honse f1948dc3a6 Fix warnings in OpenRGBPluginsPage.cpp 2024-11-26 02:31:39 -06:00
Adam Honse 75bebb0a4b Fix warnings in scsiapi_windows.c 2024-11-26 02:30:23 -06:00
Adam Honse 9afc7285b5 Fix warnings in ResourceManager.cpp 2024-11-26 02:28:29 -06:00
Adam Honse 1586812112 Fix warnings in RGBController.cpp 2024-11-26 02:28:19 -06:00
Adam Honse cbfb8afa0c Fix warning in PluginManager.cpp 2024-11-26 02:06:40 -06:00
Adam Honse 9dafb5cb7f Fix warnings in KeyboardLayoutManager.cpp 2024-11-26 02:06:05 -06:00
Adam Honse 4df90b1b96 Fix warnings in ResourceManager.cpp 2024-11-26 02:00:36 -06:00
Adam Honse f1da4a3b2f Fix warning in RGBController.cpp 2024-11-26 01:57:01 -06:00
Adam Honse 39c968ff2a Fix some warnings in NetworkServer.cpp 2024-11-26 01:55:35 -06:00
Adam Honse b0c3856ab4 Fix warnings in ProfileManager.cpp 2024-11-26 00:38:56 -06:00
Adam Honse 9d3956c168 Fix warnings in NetworkClient.cpp 2024-11-26 00:37:30 -06:00
Adam Honse d0397bc23a Fix warning in cli.cpp 2024-11-26 00:34:56 -06:00
Adam Honse 7eb83f1a60 Fix warnings in Thermaltake Riing controllers 2024-11-26 00:34:16 -06:00
Adam Honse b4ee1f0fb8 Fix warnings in QMK OpenRGB controller 2024-11-26 00:32:10 -06:00
Adam Honse ac802b1aa8 Fix warnings in ASUS Aura Core laptop controller 2024-11-25 23:43:13 -06:00
Adam Honse 51e38ade01 Fix warnings in Mintaka keyboard controller 2024-11-25 23:37:17 -06:00
Adam Honse b213d3f37c Fix warnings in RGBController_Luxafor.cpp 2024-11-25 19:49:28 -06:00
Adam Honse b0ba64f178 Fix warnings in JGINYUE V2 controller 2024-11-25 19:48:01 -06:00
Adam Honse 69512cbf70 Fix warning in RGBController_HYTEKeyboard.cpp 2024-11-25 19:44:39 -06:00
Adam Honse b7a3de0f10 Fix warnings in RGBController_Luxafor.cpp 2024-11-25 18:43:09 -06:00
Adam Honse 540f785e90 Fix warnings and code cleanup in RGBController_JGINYUEInternalUSBV2.cpp 2024-11-25 18:42:08 -06:00
Adam Honse 01d9655781 Fix warnings in RGBController_HYTEKeyboard.cpp 2024-11-25 18:36:52 -06:00
Fotis Papadopoulos 224d75e0e8 PNY RTX 3080Ti Revel Epic-X 2024-11-17 20:39:13 +00:00
Chris b68dacec62 Setting Linux & Windows amd64 builds to compile on MR 2024-11-16 17:46:51 +11:00
morg f45e61d651 Add support for Sapphire 6950XT TOXIC 2024-11-14 23:40:01 +01:00
Adam Honse c734e6f929 Fix merge request pipeline again 2024-11-13 20:02:48 -06:00
Chris 0539e3faeb Switching Linux & Windows amd64 builds back to auto
* Created .default_rules reference
* Renamed "Linux amd64 AppImage" build to "Linux amd64 AppImage Base"
then extended "Linux amd64 AppImage" to automate local runners
* Renamed "Windows 64" to "Windows 64 Base" and extended "Windows 64"
to automate local runners
2024-11-14 11:50:35 +11:00
morg 43021f9a15 Add support for Turtle Beach - Vulcan TKL. Closes #4419 2024-11-13 16:25:57 +00:00
Sam B e81e294479 Add Riing Trio Controller support 2024-11-12 20:33:33 +00:00
Adam Honse 378f0af781 Try to fix merge request CI not having amd64 AppImage or Windows 64 builds 2024-11-11 21:18:43 -06:00
Milan Cermak 8eba52ec30 Controller registered but no device found 2024-11-11 01:45:37 +00:00
Vasily Galkin 777725c083 Reenable forks and their MRs ability to run pipelines on gitlab.com runners 2024-11-10 22:33:24 +00:00
Adam Honse 5b7cdf786b Allow switching format for hex color code entry box between RGB (HTML) and BGR (RGBColor) 2024-11-10 16:23:57 -06:00
Mark Li 330f6d6014 Add support for Cooler Master ARGB Gen2 A1 Mini 2024-11-10 06:42:57 +00:00
Marius Alexandersen 7a69aef99b Add Arrow Lake SMBus Support 2024-11-10 00:40:45 +01:00
Adam Honse 9e5bbc7598 Initial HYTE Keyboard controller 2024-11-08 14:55:37 +00:00
Lobo Tommy 986b21e02b Adding Turtle Beach Vulcan II support 2024-11-07 14:45:14 +00:00
JoshTripleH 2a8fdc486b Fix get location to avoid detection issues after relaunch 2024-11-05 01:04:22 +00:00
Thomas Ricci fa6a516543 Add new G733 hardware ID 2024-11-03 07:57:21 +00:00
rom4ster d627c91a4a Added Reactive Mode For Aerox 9 in General Aerox Controller And Deleted Old Controller 2024-11-02 23:00:49 +00:00
morg 1368f83d77 Adds a setting for automatically showing LED view 2024-11-02 17:34:28 +00:00
morg ab7e281c1c Adds a few checks before trying to init a serial device. Closes #2247 2024-11-02 17:32:17 +00:00
Chris M fc3e95e16a Fix regression in Linux DMIinfo
* Reversed Linux Name and Vendor paths to align with declarations
2024-10-31 19:32:56 +11:00
Chris M a61703da50 Initial commit for the G533ZW Aura Laptop
* Added new device layout to AsusAuraCoreLaptopDevices.cpp
* Resolves #4353
2024-10-31 05:15:12 +00:00
Chris M da13a0b3fe Add missing include for Mountain Keyboard Controller
* Missing <cstring> include required by memset
2024-10-31 11:46:29 +11:00
morg 8b9f128881 Nanoleaf: Check for connection error before accessing status/body. Closes #4390 2024-10-30 23:14:40 +00:00
rom4ster 43bd3774e8 Add Knob color support to mountain keyboard 2024-10-30 23:13:26 +00:00
Tiago Gomes b138405740 Add support for Omen 45L front fans, off mode and Wave and Radial effects 2024-10-30 16:09:49 +00:00
Adam Honse c45e743d87 Fix bad log call in dmiinfo trying to directly print std::string instead of c_str 2024-10-29 20:01:49 -05:00
Joe Petrakovich 5cfa0668b9 Add support for NZXT RGB & Fan Controller (New NZXT H9 Elite Model) 2024-10-30 00:47:44 +00:00
JAO1988 69f03e0e24 Update ThermaltakeRiingControllerDetect.cpp for additional controllers. 2024-10-30 00:46:56 +00:00
thombo 4d4dc7aaee Config of MSI board 7D98 corrected 2024-10-30 00:40:47 +00:00
Chris M 2e199593e9 Adding product name to DMI data class 2024-10-30 07:58:11 +11:00
gregorein 8565a3ddee feat: added new Asus PID (x670e motherboards) 2024-10-28 01:48:47 +00:00
Björn Bidar 24fc6bd749 Optionally support system libe131
Can be enabled by calling qmake with CONFIG+=system_libe131.
Includes comments for general structure to handle in-tree
vs. out-of-tree dependencies.

Handles only systems who use pkgconfig.
2024-10-26 21:17:23 +00:00
morg 90a0e5fac7 Add support for AORUS GeForce RTX™ 4070 Ti MASTER 12G. Closes #4323 2024-10-26 21:16:08 +00:00
Filip Krakowski a3ca22e6a1 spd5118 kernel driver conflicts with Kingston Fury DRAM 2024-10-26 19:13:34 +00:00
mike fc3116e596 DasKeyboard: Update detection of US keyboard, and minor change to keyboard layout. 2024-10-26 19:11:21 +00:00
Chris 19a69f4139 Corrected HIDAPI include for the Mintaka KB Controller
* Compile error on Windows introduced in d7e467a3
2024-10-22 16:58:37 +11:00
Julien "_FrnchFrgg_" Rivaud bdfd2a3290 Add support for Turtle Beach (ex ROCCAT) Vulkan II 2024-10-20 19:57:22 +00:00
Federico Scodelaro d7e467a37f Add VSG Mintaka keyboard 2024-10-20 19:56:31 +00:00
SU wuyi 7dcdef28c8 Initial commit for adding support to JGINYUE Motherboard Controller V2 2024-10-20 19:54:04 +00:00
Dmitry Kychanov 300abac9a8 Removed unused includes 2024-10-15 00:24:32 +00:00
Alexey Sokolov b3b9ebb3b7 Fix OPENRGB_SYSTEM_PLUGIN_DIRECTORY 2024-10-15 00:22:20 +00:00
Milan Čermák d5ef41bb80 Improve Kingston Fury detection 2024-10-09 02:34:08 +00:00
Arthas Lich f802547e7b Add Colorful iGame GeForce RTX 4070 SUPER Ultra W OC 12GB 2024-10-08 15:52:36 +00:00
Dmitry Kychanov a7cdbb3844 Fix --profile 2024-10-06 00:46:51 +04:00
Dmitry Kychanov b171906162 Fixed server 2024-10-05 02:47:02 +04:00
Adam Honse 98eab49e99 Change HyperX Microphone Controller zone type to single 2024-10-01 20:06:07 -05:00
BestPig e53e903b5e Add Gigabyte RTX 4070 SUPER Aero OC 16GB 2024-09-29 20:52:37 +02:00
Adam Honse 8a36717842 Remove LogManager dependency from NetworkClient.cpp
NetworkClient/Server code should have minimal internal dependencies as it is intended to be includable in external applications, pulling in only the absolutely necessary files so that it may be used in third party SDK applications.  LogManager is not a necessary dependency.
2024-09-27 11:25:55 -05:00
Dmitry Kychanov d612b8b8de Network shutdown optimization 2024-09-27 16:15:14 +00:00
Dmitry K 2c952a54d2 Loading optimization (no GUI changes) 2024-09-26 22:20:48 +00:00
Dmitry K 7e96e0efa5 Added Asus TUF Gaming M3 Gen II 2024-09-22 23:54:18 +00:00
Mark c4384f2a47 Add Palit RTX 4060 Dual support 2024-09-22 23:52:08 +00:00
Ojas Sinha 98b2c20d54 Add Gigabyte RTX 4070 SUPER Eagle OC ICE 12GB 2024-09-22 23:50:54 +00:00
Chris M ac8158ba9c Added MSI RTX4070Ti Super 16G Gaming X Slim White GPU
* Added `0xE13E` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-Ti-SUPER-16G-GAMING-X-SLIM-WHITE/Specification)
* Resolves #4329
2024-09-18 07:07:16 +10:00
Chris M d45d2bf7fc Corrected KLM layout for Blackwidow V4 1532:0287
* Resolves #4313
2024-09-15 19:07:50 +00:00
Vasily Galkin 175ebb61de Add alternative IDs to better detect already-supported Aorus GPUs 2024-09-15 19:06:03 +00:00
Mut Ze 8c642ac923 Add support for iGame 4070 Ti SUPER Advaned OC (AD102 version) 2024-09-14 19:09:39 +00:00
thombo 8248509377 Support for MSI boards 7D93 and 7E24 added 2024-09-14 19:05:34 +00:00
Oleh Polisan 77dbb4becf docs: add PiLED to apps, supporting ORGB SDK 2024-09-14 00:34:54 +00:00
Ensar Sarajčić 8c874181c0 Reuse Aerox3Wireless for other Aerox wireless mice 2024-09-13 16:44:25 +00:00
Ensar Sarajčić c84932df46 Add Aerox 3 wireless 2024-09-11 16:42:11 +00:00
LikMaiDong69 1342adefe4 Resolves Issue #4270: Added MSI 4080 SUPER Gaming X Trio 2024-09-11 16:39:50 +00:00
Dmitry K cc21027db2 Asus G17 Direct mode fix (with extra tight matrix map) 2024-09-08 00:14:24 +00:00
Adam Honse bf630245d0 Initial commit for Dream Cheeky Webmail Notifier 2024-09-06 23:42:47 -05:00
Adam Honse 062ecf69f0 Add luxafor-python to projectrs researched 2024-09-06 11:27:42 -05:00
Dimitri Marques bb5d93ddf6 ✨ - Add support for Dell G15 5530 RGB keyboard (RTX 4050) 2024-09-06 10:19:45 -03:00
Dmitry Kychanov e565120d29 Added ASUS ROG Strix G18 (G814JV) + Light Bar behavior fixes 2024-09-06 10:51:15 +04:00
Chris M e0cffcfb3a Migrated Asus Aura Core Laptop controller to the KLM
* Added AsusAuraCoreLaptopDevices to record device metadata.
* Adjusted AsusAuraCoreLaptopDevices to allow KLM layouts per zone
* Modified RGBController_AsusAuraCoreLaptop to use KLM layouts.
* Adjust AsusAuraCoreLaptopController to align with new data model
* Other code changes to accomodate
2024-09-06 04:36:06 +00:00
Adam Honse f115d2cbd9 Add Luxafor pattern modes 2024-09-05 22:59:20 -05:00
Adam Honse ae826f2fd0 Initial commit of Luxafor Flag controller, only supports direct mode for now 2024-09-05 22:18:24 -05:00
Chris M a675825224 Initial commit for Corsair K70 PRO V2 keyboard
* Added metadata to CorsairPeripheralV2Devices
* Added detector in CorsairPeripheralV2ControllerDetect.cpp
* Resolves #3912
2024-09-04 17:56:10 +10:00
Chris M 6d00a7fb23 Added media keys to K70 RGB Pro
* Added limit for packet size in CorsairPeripheralV2Controller
* Resolves #3862
2024-09-04 17:43:14 +10:00
Chris 4a74103e70 Revert hidraw version check
* `packagesExist(hidapi-hidraw>=0.10.1)` is not a valid qmake version test
2024-09-03 18:19:34 +10:00
Chris M 4fcf0d01a2 Fixed small typo in EKController import 2024-09-03 13:14:10 +10:00
Chris 67def7465c Initial commit for Corsair K70 Core keyboard
* Added metadata to CorsairPeripheralV2Devices
* Added detector in CorsairPeripheralV2ControllerDetect.cpp
* Resolves #4103
2024-09-02 21:29:44 +10:00
Maksims K 8fa92a0789 Fix bug in AsusAuraMainboardController.cpp where effect channel wasn't being incremented. Fixes #4114. 2024-09-01 16:30:56 +00:00
shafiahaz2478 406350f5f5 added ant esports GM600 mouse 2024-08-30 19:26:19 +00:00
Adam Honse 11bdaaa2fc Fix AOC GK500 mapping broken by changing KLM base layout from ANSI to Default (English ANSI + English ISO combined map). Rename the 'ansi' field to reflect that this is no longer an ANSI map. 2024-08-29 00:09:03 -05:00
Chris M c23bbbd32a Added Bloody W70 Max Mouse
* Added new PID and usage to A4Tech_Detector
* Added PID to layout switch in RGBController_BloodyMouse
* Resolves #4296
2024-08-29 09:51:29 +10:00
morg a6df80f87e Crash fix for linux nvapi 2024-08-28 13:57:18 +00:00
Tam D f2c99f22a8 fix #4292 sk620 support 2024-08-28 03:44:28 +00:00
Adam Honse 511c266178 Add u16string to string conversion function for CMKeyboardV2Controller.cpp 2024-08-25 20:49:31 -05:00
Chris c6fe58e635 Revert 8bf07f49 "Fix wstring to string conversion warning in CMKeyboardV2Controller.cpp"
* Linux throws a SIGABRT
2024-08-26 01:26:43 +00:00
Adam Honse 641c917605 Add Gigabyte RTX 4070Ti Eagle OC 12GB 2024-08-25 17:20:03 -05:00
verglor ea7f86b32a Fix indentation of device list in NVIDIAIlluminationControllerDetect_Windows_Linux.cpp 2024-08-23 18:40:01 +00:00
verglor 4b2781404a [New Device] Gainward GeForce RTX 4070 Ghost (OC) #3614 2024-08-23 18:40:01 +00:00
Tam Do d86f59cf17 add sk620 2024-08-23 11:15:19 -05:00
Adam Honse 3a1dd871ff Fix serial string containing invalid characters in Razer Kraken controller 2024-08-22 23:18:03 -05:00
liberodark c4ecf3ebcd Add Skillkorp K5 2024-08-20 13:08:12 +02:00
Adam Honse 428355761e Fix unrecognized escape sequence warning in i2c_smbus_piix4.cpp 2024-08-17 01:24:37 -05:00
Adam Honse a18211cc57 Fix unrecognized escape sequence and possible loss of data warnings in i2c_smbus_i801.cpp 2024-08-17 01:23:50 -05:00
Adam Honse 9caa009eb3 Fix unreferenced parameter warning in nvapi.cpp 2024-08-17 01:13:28 -05:00
Adam Honse 38818f7d88 Fix unreferenced local variable warning in OpenRGBNanoleafSettingsEntry.cpp 2024-08-17 01:02:54 -05:00
Adam Honse 20e4d18cb4 Fix unreferenced parameter warning in i2c_smbus_piix4.cpp 2024-08-17 00:54:20 -05:00
Adam Honse 62b6e7175f Fix unreferenced variable and parameter warnings in i2c_smbus_nct6775.cpp 2024-08-17 00:53:01 -05:00
Adam Honse cffac6c255 Fix unreferenced variable and parameter warnings in i2c_smbus_i801.cpp 2024-08-17 00:51:03 -05:00
Adam Honse 66a1496f18 Fix unreferenced parameter warning in i2c_smbus_amdadl.cpp 2024-08-17 00:46:33 -05:00
Adam Honse 7f90c69eb0 Fix warnings in scsiapi_windows.c 2024-08-17 00:29:25 -05:00
Adam Honse 1b26908104 Fix unreferenced local variable warning in i2c_smbus_nvapi.cpp 2024-08-17 00:25:30 -05:00
Adam Honse c1149da754 Fix possible loss of data warnings in NetworkServer.cpp 2024-08-17 00:24:18 -05:00
Adam Honse bb1ae9cf2e Fix possible loss of data warning in i2c_smbus.cpp 2024-08-17 00:22:53 -05:00
Adam Honse 8cbdb0a236 Fix warnings in ResourceManager.cpp 2024-08-17 00:15:17 -05:00
Adam Honse 6c729ff60f Fix possible loss of data warnings in RGBController.cpp 2024-08-16 23:54:14 -05:00
Adam Honse 9281f8ed5c Fix possible loss of data warnings in ProfileManager.cpp 2024-08-16 23:48:37 -05:00
Chris M d6cac9cb27 Added Asus ROG STRIX RTX4070Ti 12GB Gaming GPU
* Added `0x88A6` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4070ti-12g-gaming-model/)
* Resolves #4280
2024-08-17 10:29:13 +10:00
Adam Honse 0743bc49b3 Fix possible loss of data warning in RGBController_ThermaltakeRiingQuad.cpp 2024-08-16 11:31:51 -05:00
Adam Honse 1e3b6cae47 Fix possible loss of data warning in RGBController_ThermaltakeRiing.cpp 2024-08-16 11:30:37 -05:00
Adam Honse 5f1b3ba939 Fix type issue in SteelSeriesSenseiController.cpp 2024-08-16 11:09:57 -05:00
Adam Honse 8bf07f490e Fix wstring to string conversion warning in CMKeyboardV2Controller.cpp 2024-08-16 11:09:17 -05:00
qq b45b24b922 New Evision based keyboard 2024-08-15 20:57:43 +00:00
Adam Honse d554a18e8a Fix issues 2024-08-15 11:46:21 -05:00
Adam Honse 14f65a5728 Fix type conflicts and truncation warnings in SteelSeriesSiberiaController.cpp 2024-08-15 11:37:17 -05:00
Adam Honse 67b5803e63 Fix type conflicts and truncation warnings in SteelSeriesSenseiController.cpp 2024-08-15 11:35:39 -05:00
Adam Honse 2054cb566d Fix type conflicts and truncation warnings in SteelSeriesRivalController.cpp 2024-08-15 11:33:33 -05:00
Chris d3f30f3dc8 Added TU104 variant of Gigabyte RTX2060 8GB Gaming OC GPU
* Registered detector in GigabyteRGBFusionGPUControllerDetect.cpp
2024-08-15 18:34:22 +10:00
Adam Honse 6e66c6ff5e Fix possible loss of data warning in SteelSeriesApexTZoneController.cpp 2024-08-13 19:50:49 -05:00
Adam Honse 52a7412918 Fix possible loss of data warning in RoccatKoneAimoController.cpp 2024-08-13 19:49:53 -05:00
Adam Honse b88107664a Fix possible loss of data warnings in RGBController_RoccatKoneAimo.cpp 2024-08-13 19:49:01 -05:00
Adam Honse 83150696bf Fix possible loss of data warning in RGBController_RedSquareKeyroxTKLClassic.cpp 2024-08-13 19:45:34 -05:00
Adam Honse 15f7ba8b12 Fix possible loss of data warning in RGBController_Razer.cpp 2024-08-13 19:44:38 -05:00
Adam Honse fed58b3dc1 Fix possible loss of data warning in RGBController_MSIMysticLight64.cpp 2024-08-13 19:43:22 -05:00
Adam Honse 448e019702 Fix possible loss of data warning in RGBController_LogitechLightspeed.cpp 2024-08-13 19:42:10 -05:00
Adam Honse c7b6d18832 Fix possible loss of data warnings in RGBController_MSIGPU.cpp 2024-08-13 19:39:00 -05:00
Adam Honse 243ce886e1 Remove OpenRGB kernel patch 2024-08-13 19:34:54 -05:00
Chris M 31b752feed Avoid double free in SinowealthController destructor
* Non USE_HID_USAGE code path needs to avoid closing device twice
2024-08-14 00:07:55 +00:00
Thomas Boos dd91984b70 MSI boards added and some configs corrected 2024-08-14 00:06:58 +00:00
Chris M bd9b41e544 Removed redundant hid_close(dev) from inherited class
* Resolves #4274
2024-08-13 13:23:46 +00:00
crashniels 26e0cc545e Add support for the Wooting UwU RGB 2024-08-11 17:24:20 +02:00
LER0ever 27128373e2 Add Linux support for NVIDIA Founders Edition GPU Illumination Control 2024-08-09 06:07:19 +00:00
Adam Honse d778d470b1 Allow multiple operating systems to be specified in filename, i.e. _Windows_Linux.cpp 2024-08-09 00:16:52 -05:00
Adam Honse c35fd68c99 Fix possible loss of data warnings in SRGBmods controllers 2024-08-08 21:13:21 -05:00
Adam Honse 37a702416f Fix possible loss of data warnings in RoccatVulcanKeyboardController.cpp 2024-08-08 21:10:07 -05:00
Adam Honse 5a12e77b19 Fix possible loss of data warnings in RazerController.cpp 2024-08-08 21:06:31 -05:00
Adam Honse 2f3017fdfc Fix another possible loss of data warning in QMK controllers 2024-08-08 21:05:14 -05:00
Adam Honse e8bf3c35dc Fix type issues in QMK controllers 2024-08-08 20:54:20 -05:00
Adam Honse fb2b0aa8e1 Fix possible loss of data warning in RGBController_LogitechLightspeed.cpp 2024-08-08 20:32:35 -05:00
James Buren ffeaa033bc Fix output truncation warning in RazerController.cpp 2024-08-08 20:43:54 +00:00
James Buren e10b05654b Fix implicit fallthrough warning for RGBController_KingstonFuryDRAM.cpp 2024-08-08 11:29:17 -05:00
Adam Honse c6e315ff2a Fix wstring to string conversion warning in WootingTwoKeyboardController.cpp 2024-08-07 22:04:51 -05:00
Adam Honse 68709e91f9 Fix wstring to string conversion warning in WootingOneKeyboardController.cpp 2024-08-07 22:04:41 -05:00
Adam Honse 47af83e194 Fix wstring to string conversion warning in ThermaltakeRiingQuadController.cpp 2024-08-07 22:04:31 -05:00
Adam Honse 91e8fade99 Fix wstring to string conversion warning in RoccatKoneAimoController.cpp 2024-08-07 22:04:22 -05:00
Adam Honse c38e011924 Fix wstring to string conversion warning in LogitechLightspeedController.cpp 2024-08-07 22:04:11 -05:00
Adam Honse e84a9b5327 Fix wstring to string conversion warning in MSIMysticLight64Controller.cpp 2024-08-07 22:04:04 -05:00
Adam Honse 5ebd95b72a Fix wstring to string conversion warning in MSIMysticLight185Controller.cpp 2024-08-07 22:03:56 -05:00
Adam Honse e7d10a8582 Fix wstring to string conversion warning in MSIMysticLight162Controller.cpp 2024-08-07 22:03:49 -05:00
Adam Honse 8a272c07b7 Fix wstring to string conversion warning in MSIMysticLight112Controller.cpp 2024-08-07 22:03:38 -05:00
Adam Honse 445c8eade1 Fix signed/unsigned mismatch warning in RGBController_LogitechG915.cpp 2024-08-07 22:03:31 -05:00
Adam Honse da0f93e8b5 Fix truncation warning in LogitechG915Controller.cpp 2024-08-07 22:03:24 -05:00
Adam Honse 29c77edd37 Fix signed/unsigned mismatch warning in RGBController_LogitechG815.cpp 2024-08-07 22:03:17 -05:00
Adam Honse dae9cd2c3a Fix type in pair warning in RGBController_LenovoUSB.cpp 2024-08-07 22:03:10 -05:00
Adam Honse d8de91255f Remove unneeded argument for i386 build 2024-08-06 23:22:57 -05:00
Adam Honse ee9e1fbd2a Add -Wno-psabi to CXXFLAGS to silence armhf-specific ABI change warnings 2024-08-06 21:51:37 -05:00
Adam Honse d03701c58d Initial support for system-installed plugins in Linux 2024-08-06 18:22:17 -05:00
Adam Honse 806ababa05 Add Arch include and library paths for mbedtls2 library 2024-08-06 18:00:26 -05:00
liberodark 800c439431 Add MSI 7D98 2024-08-06 21:15:31 +02:00
Pieter Steyn cfd62f2b0f Add PID for Apex PRO TKL 2023. 2024-08-06 16:08:28 +00:00
Adam Honse d834b18a16 Don't include _Linux files in MacOS build, add support for _MacOS files 2024-08-05 23:17:35 -05:00
James Buren 698ae9debc Update display-library dependency to 17.1 2024-08-05 20:16:14 -05:00
James Buren 3da13705af Update hidapi dependency to 0.14.0 2024-08-05 15:07:10 -05:00
James Buren 5bcc105cd9 Update hueplusplus dependency to 1.1.0 2024-08-05 19:57:51 +00:00
James Buren 4aac04280c Update httplib dependency to 0.16.0 2024-08-05 19:56:39 +00:00
James Buren 2e64a82caa Update libe131 dependency to latest development release 2024-08-05 13:48:09 -05:00
James Buren 6157668057 Update mdns dependency to latest development release 2024-08-05 13:40:34 -05:00
James Buren 4bae567c4c Update json dependency to 3.11.3 2024-08-05 12:59:20 -05:00
James Buren 1e9e790c71 Update CRCpp dependency to 1.2.0.0 2024-08-05 12:30:07 -05:00
诺诺 4bc14630e9 Fix a bug in Nollie1 2024-08-05 16:21:04 +00:00
James Buren b398dcdcf9 Update mbedtls dependency to 2.28.8 2024-08-05 01:05:37 -05:00
James Buren bdad1df3d7 Update libusb dependency to 1.0.27 2024-08-04 23:40:28 -05:00
James Buren af3dc18841 Fix remaining FreeBSD build issues 2024-08-04 21:07:01 -05:00
James Buren 66109be668 Properly fix how how hidapi and libusb dependencies are handled 2024-08-05 01:14:17 +00:00
Abdullah Abid Ansari 6140849e28 Adds a better white calculation to philips wiz devices 2024-08-04 23:59:45 +00:00
Adam Honse bd689ee6d7 Switch arm Appimage builds to manually triggered 2024-08-05 08:50:46 +10:00
Adam Honse 5c26a864f0 Add Ubuntu 24.04 amd64 test 2024-08-04 16:43:51 -05:00
Adam Honse 3edaa65d1d Add MacOS to the introduction 2024-08-04 16:22:04 -05:00
Adam Honse 38f8fcc3f3 Update screenshot in README 2024-08-04 16:19:05 -05:00
Adam Honse de2c58739b Add ARM CI targets 2024-08-04 20:58:58 +00:00
James Buren c071da54ca Fix implicit fallthrough warning for RGBController_ValkyrieKeyboard.cpp 2024-08-04 05:51:28 -05:00
James Buren 6eac59cea4 Fix an implicit-fallthrough warning in CoolerMasterControllerDetect.cpp 2024-08-04 06:09:26 +00:00
Chris M 36a9991d59 Update pipeline builds to include Fedora 40
* Removed F35 and F36 builds
* Updated SPEC file to libusbx-devel
2024-08-04 12:22:51 +10:00
Adam Honse a5f1372537 Update documentation before 1.0 release 2024-08-03 02:16:09 -05:00
Adam Honse 894380a5d4 Fix signedness issue in LogitechGProKeyboardController.cpp 2024-08-02 11:51:16 -05:00
Adam Honse f95bd77366 Fix signedness issue in LogitechGLightsyncController.cpp 2024-08-02 11:49:45 -05:00
Adam Honse f1a85915f9 Fix signedness issue in LogitechG915Controller.cpp 2024-08-02 11:47:58 -05:00
Adam Honse 1ef8af75ae Fix signedness issue in LogitechG910Controller.cpp 2024-08-02 11:44:47 -05:00
Adam Honse edab781d44 Fix signedness issue in LogitechG815Controller.cpp 2024-08-02 11:43:15 -05:00
Adam Honse 1e4f8fdd5b Fix signedness issue in LogitechG810Controller.cpp 2024-08-02 11:40:40 -05:00
Adam Honse c8c632cddd Fix signedness issue in LogitechG213Controller.cpp 2024-08-02 11:39:07 -05:00
Adam Honse f167877a00 Fix possible loss of data warning in LianLiUniHubController.cpp 2024-08-02 11:36:41 -05:00
Adam Honse 03a5b11d09 Fix possible loss of data warning in LianLiUniHubSLV2Controller.cpp 2024-08-02 11:35:11 -05:00
Adam Honse 1089a29af0 Fix possible loss of data warning in RGBController_LianLiUniHubSLV2.cpp 2024-08-02 11:34:26 -05:00
Adam Honse e8c9f149a1 Fix possible loss of data warning in RGBController_LianLiUniHubSLInfinity.cpp 2024-08-02 11:32:58 -05:00
Adam Honse a1cffba1bf Fix possible loss of data warning in LianLiUniHubSLInfinityController.cpp 2024-08-02 11:31:42 -05:00
Adam Honse 848e96f64b Fix possible loss of data warning in RGBController_LianLiUniHubAL.cpp 2024-08-02 11:30:06 -05:00
Adam Honse 9be9e34be1 Fix wstring to string conversion warning in Logitech controllers 2024-08-02 00:31:04 -05:00
Adam Honse fc18e404ce Fix wstring to string conversion warning in LianLiUniHubSLV2Controller.cpp 2024-08-02 00:23:46 -05:00
Adam Honse 398afc721e Fix wstring to string conversion warning in LianLiUniHubSLInfinityController.cpp 2024-08-02 00:21:49 -05:00
Adam Honse 3b61a47ec2 Fix wstring to string conversion warning in LianLiStrimerLConnectController.cpp 2024-08-02 00:19:39 -05:00
Adam Honse 6548dea9c4 Update SinowealthGMOW controller files to new standardized header comment 2024-08-01 23:00:09 -05:00
Adam Honse 6f7f6d3fe7 Update Sinowealth controller files to new standardized header comment 2024-08-01 22:37:01 -05:00
Adam Honse 792a14cf3b Update Sinowealth1007 controller files to new standardized header comment 2024-08-01 22:30:18 -05:00
Adam Honse 9d9c6aa5c8 Update GenesisXenon200 controller files to new standardized header comment 2024-08-01 21:39:42 -05:00
Adam Honse d3993bf9df Organize Sinowealth controllers into their own folders 2024-08-01 11:35:51 -05:00
Adam Honse b98081771c Fix wstring to string conversion warning in LenovoUSBController_Gen7_8.cpp 2024-08-01 11:29:28 -05:00
Adam Honse deffa35975 Fix possible loss of data warnings in RGBController_LianLiUniHubAL.cpp 2024-08-01 11:24:58 -05:00
Adam Honse bf7f043e4f Fix warnings in Lian Li Strimer L Connect controller 2024-08-01 11:20:05 -05:00
Adam Honse 24c6bb2f5f Fix wstring to string conversion in some Lian Li controllers 2024-08-01 00:30:07 -05:00
Adam Honse 9b79a2263a Fix possible loss of data warning in RGBController_ZotacV2GPU.cpp 2024-08-01 00:30:07 -05:00
Adam Honse 0b05f93eee Fix possible loss of data warning in YeelightController.cpp 2024-08-01 00:30:07 -05:00
Adam Honse 4cdee33ae4 Fix possible loss of data warning in RGBController_WinbondGamingKeyboard.cpp 2024-08-01 00:30:07 -05:00
Adam Honse 0027936b1d Fix possible loss of data warning in RGBController_BlinkController.cpp 2024-08-01 00:30:07 -05:00
Adam Honse 28f7e09558 Fix possible loss of data warning in RGBController_SinowealthKeyboard90.cpp 2024-08-01 00:30:07 -05:00
Adam Honse dab4a95dc5 Fix possible loss of data warning in PhilipsWizController.cpp 2024-08-01 00:30:07 -05:00
Adam Honse c42a5ef9f5 Fix possible loss of data warning in PhilipsHueEntertainmentController.cpp 2024-08-01 00:30:07 -05:00
Adam Honse ebf5dbedb6 Fix possible loss of data warning in RGBController_NZXTHuePlus.cpp 2024-08-01 00:30:07 -05:00
Adam Honse 5bda1dc79f Fix possible loss of data warning in RGBController_Nollie.cpp 2024-08-01 00:30:07 -05:00
Adam Honse aec411e721 Fix possible loss of data warning in LianLiUniHubALController.cpp 2024-07-31 23:50:53 -05:00
Adam Honse 34957180be Fix type warning in RGBController_LenovoUSB.cpp 2024-07-31 23:41:27 -05:00
Adam Honse aae377a555 Fix wstring to string conversion warning in LenovoUSBController.cpp 2024-07-31 23:39:39 -05:00
Adam Honse 1ba692a0ea Fix possible loss of data warning in RGBController_EVGAKeyboard.cpp 2024-07-31 23:28:18 -05:00
Adam Honse c392e2c6ca Fix no return warning in ENESMBusInterface_SpectrixS40G_Windows.cpp 2024-07-31 23:27:01 -05:00
Adam Honse ebcc0deac1 Fix possible loss of data warning in RGBController_OKSKeyboard.cpp 2024-07-31 23:17:29 -05:00
Adam Honse 643c81e9db Fix possible loss of data warning in RGBController_NZXTKraken.cpp 2024-07-31 23:15:59 -05:00
Adam Honse d3747a2465 Fix possible loss of data warning in NZXTHuePlusController.cpp 2024-07-31 23:14:12 -05:00
Adam Honse 09bdffab54 Fix possible loss of data warning in NZXTHue2Controller.cpp 2024-07-31 23:13:30 -05:00
Adam Honse 656d3a40c8 Fix possible loss of data warning in NZXTKrakenController.cpp 2024-07-31 23:00:23 -05:00
Adam Honse 749c4d0f37 Fix possible loss of data warning in NanoleafController.cpp 2024-07-31 22:59:23 -05:00
Adam Honse b258f9a683 Fix possible loss of data warning in RGBController_NZXTHue2.cpp 2024-07-31 22:58:11 -05:00
Adam Honse 733d7fb0e5 Fix wstring to string conversion warning in Lenovo4ZoneUSBController.cpp 2024-07-31 22:42:52 -05:00
Adam Honse a87bd8197c Fix wstring to string conversion warning in EVGAMouseController.cpp 2024-07-31 22:41:28 -05:00
Adam Honse 3e75452ec8 Fix wstring to string conversion warning in EVGAKeyboardController.cpp 2024-07-31 22:30:15 -05:00
Adam Honse d94a496808 Fix wstring to string conversion warning in ENESMBusInterface_SpectrixS40G_Windows.cpp 2024-07-31 22:26:31 -05:00
Adam Honse 773a59cf2e Fix wstring to string conversion warning in CougarKeyboardController.cpp 2024-07-31 22:07:14 -05:00
Adam Honse 4ef2917cf4 Fix warnings in RGBController_Nanoleaf.cpp 2024-07-31 21:54:26 -05:00
Adam Honse 102dccee72 Fix warning in RGBController_NZXTHue1.cpp 2024-07-31 21:53:20 -05:00
Adam Honse 8c2ff38d8d Fix warnings in NZXTHue1Controller.cpp 2024-07-31 21:52:30 -05:00
Adam Honse 8f7e4963de Fix wstring to string conversion in CoolerMaster controllers 2024-07-31 01:02:34 -05:00
Adam Honse 10e6e8c91f Fix emplace warning in LogitechProtocolCommon.cpp 2024-07-31 00:36:36 -05:00
Adam Honse d2be38c992 Fix possible loss of data warnings in LogitechProtocolCommon.cpp 2024-07-30 21:38:28 -05:00
Adam Honse 3a62cc8379 Fix possible loss of data warning in RGBController_KingstonFuryDRAM.cpp 2024-07-30 21:16:31 -05:00
Adam Honse bbe97538d8 Fix warnings in KingstonFuryDRAMController.cpp 2024-07-30 21:15:53 -05:00
Adam Honse 05637ba93d Fix wstring to string conversion warnings in AsusAuraCoreLaptopController.cpp 2024-07-30 00:26:47 -05:00
Adam Honse f825e476b9 Fix wstring to string conversion warnings in BloodyMouseController.cpp 2024-07-30 00:25:57 -05:00
Adam Honse 32d9211e7d Fix wstring to string conversion warnings in AlienwareAW510KController.cpp 2024-07-30 00:24:45 -05:00
Adam Honse 9f09c7b503 Fix wstring to string conversion warnings in AlienwareAW410KController.cpp 2024-07-30 00:24:17 -05:00
Adam Honse b12c27c21e Fix wstring to string conversion warnings in BloodyB820RController.cpp 2024-07-30 00:23:15 -05:00
Adam Honse 0f0f3885aa Fix possible loss of data warning in ZETBladeOpticalController.cpp 2024-07-30 00:21:24 -05:00
Adam Honse 7c1d096d46 Fix possible loss of data warning in RGBController_ZalmanZSync.cpp 2024-07-30 00:20:10 -05:00
Adam Honse 27342c71ac Fix possible loss of data warning in RGBController_WootingKeyboard.cpp 2024-07-30 00:19:34 -05:00
Adam Honse a410c3b350 Fix wstring to string conversion warnings in SinowealthKeyboard16Controller.cpp 2024-07-30 00:18:31 -05:00
Adam Honse 71b27d37a4 Fix wstring to string conversion warnings in SinowealthKeyboard90Controller.cpp 2024-07-30 00:17:16 -05:00
Adam Honse 67dadcbefb Fix signed/unsigned mismatch warning in NanoleafController.cpp 2024-07-30 00:15:49 -05:00
Adam Honse 43de81819b Fix wstring to string conversion warnings in BlinkController.cpp 2024-07-30 00:02:59 -05:00
Adam Honse d1be4288d3 Fix signed/unsigned mismatch warning in SkyloongGK104ProController.cpp 2024-07-30 00:01:16 -05:00
Adam Honse 9065cac1fd Fix possible loss of data warning in RGBController_SinowealthGMOW.cpp 2024-07-30 00:00:26 -05:00
Adam Honse b834cd108d Fix signedness issue/warning in RedragonMouseController.cpp 2024-07-29 23:59:23 -05:00
Adam Honse 97eace697a Fix possible loss of data warning in PalitGPUControllerDetect.cpp 2024-07-29 23:57:41 -05:00
Adam Honse a9406804db Fix register type in PatriotViper and PatriotViperSteel controllers 2024-07-29 23:56:30 -05:00
Adam Honse 93f1a18b52 Fix possible loss of data warning in NZXTHuePlusController.cpp 2024-07-29 23:54:14 -05:00
Adam Honse b824dbb9db Fix possible loss of data warnings in RGBController_NZXTHuePlus.cpp 2024-07-29 23:53:35 -05:00
Adam Honse 2219c7529d Fix warnings and size typing issue in NanoleafController.cpp 2024-07-29 23:52:22 -05:00
Adam Honse 5ff7bfc168 Fix possible loss of data warnings in RGBController_NZXTHue2.cpp 2024-07-29 23:49:16 -05:00
Adam Honse 31656bda27 Fix possible loss of data warning in NZXTHue1Controller.cpp 2024-07-29 23:40:50 -05:00
Adam Honse ab0dfb0f6a Fix possible loss of data, switch double to float in NvidiaESAController.cpp 2024-07-29 23:39:49 -05:00
Adam Honse 3b9aa16ce6 Fix possible loss of data warning in RGBController_Nollie.cpp 2024-07-29 23:36:19 -05:00
Adam Honse d5b682e8b3 Fix warnings in MSIVigorGK30Controller.cpp 2024-07-29 23:35:19 -05:00
Adam Honse 91adb32c5b Fix warnings in LIFXController.cpp 2024-07-29 23:24:32 -05:00
Adam Honse 384fdb2376 Fix warnings in LogitechProtocolCommon.cpp 2024-07-29 23:18:41 -05:00
Adam Honse a44460b48e Fix warnings in KingstonFuryDRAMController.cpp 2024-07-29 23:14:50 -05:00
Adam Honse c3dccb071e Fix wstring to string conversion warnings in TecknetController.cpp 2024-07-29 23:01:05 -05:00
Adam Honse 840bf4189a Fix wstring to string conversion warnings in SinowealthController1007.cpp 2024-07-29 22:59:03 -05:00
Adam Honse aeca035fa3 Fix wstring to string conversion warnings in SinowealthGMOWController.cpp 2024-07-29 22:58:03 -05:00
Adam Honse 091c4e46f5 Fix wstring to string conversion warnings in SinowealthController.cpp 2024-07-29 22:56:59 -05:00
Adam Honse 61c3fc7975 Fix wstring to string conversion warnings in SinowealthKeyboardController.cpp 2024-07-29 22:55:07 -05:00
Adam Honse fd0ad07a96 Fix wstring to string conversion warnings in LightSaltController.cpp 2024-07-29 22:53:18 -05:00
Adam Honse bb34aba76e Fix wstring to string conversion warnings in GigabyteAorusMouseController.cpp 2024-07-29 22:50:56 -05:00
Adam Honse 2225ca0ec4 Fix wstring to string conversion warnings in GigabyteAorusLaptopControllercpp 2024-07-29 22:49:56 -05:00
Adam Honse 2805476fb8 Fix wstring to string conversion warnings in EVisionV2KeyboardController.cpp 2024-07-29 22:42:59 -05:00
Adam Honse 564d817b1c Fix warnings in RGBController_GaiZhongGai.cpp 2024-07-29 22:37:47 -05:00
Adam Honse 8b9a5b460f Fix wstring to string conversion warnings in EpomakerController.cpp 2024-07-29 21:27:41 -05:00
Adam Honse b0d2954a56 Fix possible loss of data warning in StringUtils.cpp 2024-07-29 21:24:13 -05:00
Adam Honse 2ce0163eca Fix another possible loss of data warning in RGBController_DRGB.cpp 2024-07-28 19:09:06 -05:00
Adam Honse 073203d3b5 Fix wstring to string conversion warnings in EKController.cpp 2024-07-28 18:58:46 -05:00
Adam Honse e2ec7c818e Fix possible loss of data warning in RGBController_DRGB.cpp 2024-07-28 18:54:27 -05:00
Adam Honse b5638eee12 Use wstring_to_string function for device name string on CorsairPeripheralV2Controller.cpp 2024-07-28 18:38:34 -05:00
Adam Honse 61802ed664 Fix signed/unsigned comparison and assignment in AsusTUFLaptopController_Windows.cpp 2024-07-28 18:28:49 -05:00
Adam Honse 69f8f644e6 Fix another possible loss of data warning in AlienwareController.cpp 2024-07-28 18:08:21 -05:00
Adam Honse fdd04a1511 Allow data size of zero for data length checks if protocol version is 4 or lower, this is to fix backwards compatibility with a bug in older versions OpenRGB.NET that has since been fixed. 2024-07-28 18:05:47 -05:00
Adam Honse 068761872e Fix possible loss of data warning in AlienwareController.cpp 2024-07-28 17:58:35 -05:00
Adam Honse b4d15b9545 Move wstring to string conversion to StringUtils.cpp and update most HID get serial number functions to use it 2024-07-28 17:42:01 -05:00
Adam Honse 366fda30f5 Test fixing Windows string conversion warning in AMDWraithPrismController 2024-07-28 02:45:29 -05:00
James Buren 5dc31a81a0 Fix error checking on CreateFile() usage 2024-07-28 05:30:14 +00:00
Adam Honse e2126b9d29 Fix resizing zones over the network 2024-07-27 17:56:12 -05:00
Adam Honse a2fb9a00fe Add vendor string to HYTE mousemat controller 2024-07-27 16:55:28 -05:00
Adam Honse e7240ecca0 Improve logging in NetworkServer.cpp and close listener if any packet with an invalid size is received 2024-07-27 16:38:41 -05:00
Adam Honse 99c1aa0c26 Add a mutex around groups of send() calls in NetworkClient.cpp to fix corrupt packets due to race conditions. If two network RGBControllers try to send a packet with data at the same time, a race condition could cause data from another thread to send in between the header and data for the active thread, corrupting the data stream. 2024-07-27 16:23:54 -05:00
Adam Honse 44268596b3 Add a size check to the client on controller data receiving 2024-07-26 00:39:45 -05:00
Adam Honse 64a0d2c061 Add some size checks on the server to ensure received data matches the size from the packet header 2024-07-26 00:19:19 -05:00
Adam Honse 215ae6118a Fix uninitialized bytes valgrind warning in JGINYUEInternalUSBController.cpp 2024-07-25 23:49:14 -05:00
Adam Honse f4ff81bd45 Fix uninitialized bytes valgrind warning in ProfileManager.cpp 2024-07-25 23:36:11 -05:00
James Buren e42cefdf09 Fix LightSalt build errors on Windows 2024-07-25 03:09:55 -05:00
James Buren 4d8466cd60 Initial commit for LightSalt Peripherals 2024-07-25 01:20:25 +00:00
Pavel Kuzminov c87efc5d67 Added Kingston Fury Beast RGB White DDR5 version 2024-07-25 00:51:34 +00:00
P4uLT a970cd9a23 Initial commit for the Steelseries Arctis 5 (Original) to resolve #2291 2024-07-24 19:53:27 +00:00
Hampus Andersson 94d7703e9e Added support Razer Cobra Pro Device Support 2024-07-24 16:41:47 +00:00
Adam Honse 2ec4183789 Ensure Device View updates when segments are configured 2024-07-23 22:47:03 -05:00
Adam Honse a36162a971 Update SteelSeries common files to new standardized header format 2024-07-23 21:11:56 -05:00
Adam Honse ef48039a1b Update SteelSeriesSiberiaController files to new standardized header format 2024-07-23 20:57:07 -05:00
Milan Čermák c366de98e7 Support for Kingston Fury DDR4/5 DIMMs 2024-07-23 19:37:15 +00:00
Kipi000 6fdcca3ca1 Added support for Gigabyte GTX 1660 Ti Gaming OC 2024-07-22 21:03:14 +00:00
Adam Honse 9c7aad8259 Update SteelSeriesSenseiController files to new standardized header format 2024-07-19 20:43:14 -05:00
Adam Honse a4a457ad5c Update SteelSeriesRivalController files to new standardized header format 2024-07-19 19:31:37 -05:00
Adam Honse 6d0c990834 Update SteelSeriesRival3Controller files to new standardized header format 2024-07-19 18:50:40 -05:00
Essem 5948da2372 Fix buffer overflow when zeroing Logitech G815/G915 little frame buffer data 2024-07-13 20:11:47 -05:00
Adam Honse dec9081be2 Update SteelSeriesQCKMatController files to new standardized header format 2024-07-11 22:36:20 -05:00
Adam Honse ac1c823ca1 Update SteelSeriesOldApexController files to new standardized header format 2024-07-11 22:34:10 -05:00
Adam Honse 05d707b8d4 Update SteelSeriesMouseController files to new standardized header format 2024-07-11 11:41:59 -05:00
Adam Honse b8ca869b19 Update SteelSeriesArctis5Controller files to new standardized header format 2024-07-11 11:40:02 -05:00
Adam Honse 79527ef39a Update SteelSeriesApexTZoneController files to new standardized header format 2024-07-11 11:37:05 -05:00
Adam Honse 3717c752c4 Update SteelSeriesApexMController files to new standardized header format 2024-07-11 11:34:40 -05:00
Adam Honse 7d9279abad Update SteelSeriesApexController files to new standardized header format 2024-07-11 11:34:30 -05:00
Adam Honse 0709b0768f Update SteelSeriesApex8ZoneController files to new standardized header format 2024-07-11 11:23:40 -05:00
Adam Honse dac57f5a13 Update SteelSeriesApex3Controller files to new standardized header format 2024-07-09 23:32:05 -05:00
Adam Honse ea19efd490 Update some SteelSeries files to new standardized header format 2024-07-09 22:50:43 -05:00
Adam Honse ad9b1fb61a Organize SteelSeries controllers into subfolders 2024-07-09 21:53:46 -05:00
Adam Honse 3d93134e86 Fix unused field warning in RazerKrakenController 2024-07-09 21:30:20 -05:00
Adam Honse 545cb4c9e1 Fix unused field warning in RazerController 2024-07-09 21:29:45 -05:00
Adam Honse 1772f5036e Fix unused variable warning in RGBController_LogitechG915.cpp 2024-07-09 21:28:38 -05:00
Adam Honse 0856701f90 Fix unused field warning in LogitechGLightsyncController 2024-07-09 21:27:29 -05:00
Adam Honse 7e501b3a98 Fix override warnings in SteelSeriesAerox controller header files 2024-07-09 21:12:59 -05:00
Givo eca69360e1 Resolve missing includes for Skyloong GK104 Pro 2024-07-09 20:12:02 -05:00
Will 1b4598576d Added Skyloong GK104 Pro support 2024-07-09 23:48:31 +00:00
Zhi Yan 91b7c649c9 Fix some errors and increase the readability of some code 2024-07-09 15:56:16 +00:00
Adam Honse 474b33fef4 Fix string concatenation in NZXTMouseController 2024-07-09 00:07:40 -05:00
Adam Honse 52eda68a4e Fix braces around subobject warning in GigabyteRGBFusion2USBController.cpp 2024-07-09 00:02:44 -05:00
Adam Honse e2a0032657 Fix warnings in LianLiUniHubSLV2Controller 2024-07-08 23:00:55 -05:00
Adam Honse 535e0f177d Fix warnings in LianLiUniHubSLInfinityController 2024-07-08 22:59:01 -05:00
Adam Honse 5295132f37 Fix warnings in LianLiUniHubALController 2024-07-08 22:56:28 -05:00
Adam Honse da6067d708 Fix unused variable warning in HyperXAlloyOrigins60and65 controller 2024-07-08 22:53:27 -05:00
Adam Honse 30869378a4 Fix unused field warning in AsusAuraUSB controller 2024-07-08 21:23:36 -05:00
Adam Honse 026740eb9a Fix unused field warning in SinowealthKeyboard90 controller 2024-07-08 21:21:08 -05:00
Adam Honse 88bd7433e2 Fix unused field warning in PatriotViperSteel controller 2024-07-08 21:19:09 -05:00
Adam Honse 209b62bccc Fix unused field warning in MSIVigorGK30 controller 2024-07-08 21:17:29 -05:00
Adam Honse 4090d556aa Fix unused field warning in MountainKeyboard controller 2024-07-08 21:16:21 -05:00
Adam Honse e99192895b Fix unused field warning in GigabyteRGBFusion2USB controller 2024-07-08 21:15:04 -05:00
Adam Honse a8781ba96b Fix unused field warning in Espurna controller 2024-07-08 21:12:23 -05:00
Adam Honse 8c1a9cd0c7 Fix unused field warning in CorsairK55RGBPROXT controller 2024-07-08 21:10:55 -05:00
Adam Honse 032e3c82d5 Fix unused field warnings in ASRockPolychromeUSBController 2024-07-08 20:45:11 -05:00
PePeReno fa35a490e1 Add Mars Gaming mkmini (EVision) 2024-07-08 16:59:13 +00:00
Adam Honse f127ae9e41 Fix more warnings in scsiapi_linux 2024-07-08 02:23:37 -05:00
Adam Honse afab4a9447 Fix pragma once in C file warning in scsiapi 2024-07-07 22:32:51 -05:00
Chris M 486ecedc12 Added Asus ROG KO RTX3070 8GB Gaming OC GPU
* Added `0x8843` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/ko/ko-rtx3070-o8g-v2-gaming/)
* Resolves #4208
2024-07-08 12:02:57 +10:00
Adam Honse cb8ea601cf Fix warning related to sizeof() on const char array, the null terminator is not used here so reworked the array to explicitly be 4 elements 2024-07-07 19:29:54 -05:00
Adam Honse 005212b463 Fix unused variable warning in RoccatVulcanKeyboardController.cpp 2024-07-07 18:32:55 -05:00
Adam Honse d37068b65d Fix signedness comparison warning in RGBController_RoccatVulcanKeyboard.cpp 2024-07-07 18:32:04 -05:00
Adam Honse 9699cd60ac Fix enumerated and non-enumerated type warning in RoccatKoneProAirController.cpp 2024-07-07 18:13:49 -05:00
Adam Honse 44aaf3a131 Fix signedness comparison warning in RGBController_Lenovo_Gen7_8.cpp 2024-07-07 18:10:59 -05:00
Adam Honse 260044df0c Fix potentially uninitialized variable warning in CMKeyboardV2Controller.cpp 2024-07-07 18:08:52 -05:00
Adam Honse 88493da3ab Fix unused parameter warning in ENESMBusInterface_ROGArion.cpp 2024-07-07 18:06:27 -05:00
Adam Honse 0c22a29130 Fix signedness comparison warning in RGBController_AsusROGStrixLC.cpp 2024-07-07 18:04:12 -05:00
Adam Honse 06c4d8a66e Fix signedness comparison warning in RGBController_AsusSagarisKeyboard.cpp 2024-07-07 18:02:29 -05:00
Bobby Quantum e9b3507526 SteelSeries Aerox 5 Wired Support resolves #4134 2024-07-07 22:52:13 +00:00
Aytaç Kayadelen 949991f608 Razer Mutex on Windows 2024-07-07 22:10:03 +00:00
Adam Honse b9402d8e94 Fix signedness comparison warning in RGBController_AsusAuraRyuoAIO.cpp 2024-07-07 16:54:07 -05:00
Adam Honse a5da1adf09 Fix signedness comparison warning in RGBController_AsusROGSpatha.cpp 2024-07-07 16:43:06 -05:00
Adam Honse 1c10a37ec5 Fix signedness comparison warning in RGBController_ASRockPolychromeV2SMBus.cpp 2024-07-07 16:22:45 -05:00
Adam Honse 222a27ed9e Fix signedness comparison warning in RGBController_ASRockASRRGBSMBus.cpp 2024-07-07 16:21:57 -05:00
Adam Honse ccfb6c9f16 Fix warnings in ValkyrieKeyboardController.cpp 2024-07-07 16:15:22 -05:00
Adam Honse 8aeab21ba3 Comment out disabled functions in SinowealthControllerDetect.cpp 2024-07-07 16:07:29 -05:00
Adam Honse 4156b193b2 Fix unused parameters warning in RGBController_GenesisXenon200.cpp 2024-07-07 15:53:13 -05:00
Adam Honse f8fd3138ef Fix unused parameters warning in DRGBController.cpp 2024-07-07 15:30:03 -05:00
Chris M b03edcb869 Adjust LED number for Basilisk Ultimate
* Adjusted both the LED ID and transaction ID in metadata for both Wired and Wireless PIDs
* Resolves #3402
2024-07-08 00:20:16 +10:00
Adam Honse d7c3fd1fb1 Add firmware version retrieval to Thermaltake Riing controller 2024-07-07 01:46:58 -05:00
Zhi Yan f93baffae6 Correcting DRGBcontroller error, ensuring correct compilation and running on Windows 2024-07-06 16:54:19 +00:00
Zhi Yan 6928c50f48 Add new device, DRGB LED controller, including multiple versions 2024-07-06 05:34:28 +00:00
Adam Honse 9284ec7360 Fix unused parameter warning in SeagateController.cpp 2024-07-05 19:38:54 -05:00
Adam Honse 53ff1a628b Fix unused parameter warnings in RGBController_NZXTMouse.cpp 2024-07-05 19:37:20 -05:00
Adam Honse 813fcec591 Fix unused variable warning in NZXTMouseController.cpp 2024-07-05 19:36:23 -05:00
Adam Honse a367c0023f Fix sequence point warning in LGMonitorController.cpp 2024-07-05 19:34:52 -05:00
Adam Honse e33dc2290b Fix potentially uninitialized variable warnings in RGBController_EVisionV2Keyboard.cpp 2024-07-05 19:31:04 -05:00
Adam Honse d9ed4df0bf Fix potentially uninitialized variable warning in EVisionV2KeyboardController.cpp 2024-07-05 19:29:34 -05:00
Adam Honse f6259a3139 Fix sign mismatch comparison warning in RGBController_EVGAACX30SMBus.cpp 2024-07-05 18:55:09 -05:00
Adam Honse fff639ddd5 Remove unsigned less than zero check which always returns false in ElgatoLightStripController.cpp 2024-07-05 18:52:28 -05:00
Zach Leytus 3ed0bb6918 Add Gigabyte RTX 4070 Ti SUPER EAGLE OC 16G 2024-07-05 13:20:49 -04:00
Chris M c88eb992f5 Adding pkgconf and git to the Fedora build instructions
* Resolves #4201
2024-07-05 08:08:54 +10:00
Chris M 78c91eb7bf Adjust LED number for Deathadder V2
* Resolves #1265
2024-07-04 09:26:56 +10:00
Phoebe C e964a874bc Adding MSI RTX 4070Ti Super Gaming X Slim 2024-07-03 16:39:38 +00:00
Adam Honse e300b48f5b Fix signed/unsigned mismatch warning in DasKeyboardController.cpp 2024-06-30 19:38:18 -05:00
Adam Honse ef9170ac9a Fix signed/unsigned mismatch warning in RGBController_ColorfulTuringGPU.cpp 2024-06-30 19:35:00 -05:00
Adam Honse 27c798fb22 Code cleanup in AsusTUFLaptopController_Windows.cpp 2024-06-30 19:33:17 -05:00
Adam Honse e2f08351a0 Fix signed/unsigned mismatch warning in RGBController_AsusAuraGPU.cpp 2024-06-30 19:32:54 -05:00
Adam Honse 68b8024c84 Fix signed/unsigned mismatch warning in DeviceView.cpp 2024-06-30 19:22:18 -05:00
Chris M 7a2ae83cd0 Added Gigabyte RTX 4070 Gaming OC 12GB V2 GPU
* Added `0x412B` to pci_ids.h
* Registered detector in GigabyteRGBFusion2GPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N4070GAMING-OCV2-12GD#kf)
* Resolves #4197
2024-07-01 00:11:53 +00:00
Adam Honse 7eaae7cf7d Update Zotac V2 GPU controller files to new standardized header comment 2024-06-30 19:09:28 -05:00
Adam Honse 494769177f Update Zotac Turing GPU controller files to new standardized header comment 2024-06-30 19:06:29 -05:00
Adam Honse 0289f0b2d4 Update ZET Blade controller files to new standardized header comment 2024-06-30 19:01:25 -05:00
Adam Honse ce1cdf62aa Update ZET Edge Air Pro controller files to new standardized header comment 2024-06-30 17:50:58 -05:00
Adam Honse b62c7fb432 Update Zalman Z Sync controller files to new standardized header comment 2024-06-30 13:33:02 -05:00
Adam Honse db8932749e Update Yeelight controller files to new standardized header comment 2024-06-30 13:27:36 -05:00
Adam Honse 5bfa134414 Update Wushi L50 controller files to new standardized header comment 2024-06-30 13:23:40 -05:00
Chris M 82a23344f8 Aligned Monitor metadata
* Adjusted Metadata to reflect Accessory
* Changed ENUM to display correct icon for Accessory
2024-06-30 17:24:34 +00:00
Олег Баган 80b5072754 Update file GigabyteAorusLaptopControllerDetect.cpp 2024-06-28 22:48:35 +00:00
Tam D 5df9dcdf9c coolermaster keyboard rescan crash 2024-06-27 13:09:52 +00:00
Adam Honse d1a638e6f0 Update Wooting keyboard controller files to new standardized header comment 2024-06-22 19:29:35 -05:00
Adam Honse d7ffb9e13f Update Winbond Gaming Keyboard controller files to new standardized header comment 2024-06-22 19:21:43 -05:00
Adam Honse d1673b3304 Update ViewSonic controller files to new standardized header comment 2024-06-22 19:18:31 -05:00
Adam Honse e3348ea3e6 Update Valkyrie keyboard controller files to new standardized header comment 2024-06-22 19:13:15 -05:00
Adam Honse 066d48e22f Update Trust common controller files to new standardized header comment 2024-06-22 19:05:34 -05:00
Adam Honse 796fadd3bc Update Trust GXT 180 controller files to new standardized header comment 2024-06-22 19:02:02 -05:00
Adam Honse 0227864ae3 Update Trust GXT 114 controller files to new standardized header comment 2024-06-22 18:58:31 -05:00
Chris M 15c3d8591c Update static shebangs to flexible /usr/bin/env
* Also fixes static /bin/chmod executable call in UDEV rules
* Resolves #4166
2024-06-21 07:07:53 +10:00
Tam D 72507ea108 fix ck530_v2 keymap 2024-06-20 13:36:35 +00:00
Adam Honse 89c11b5eeb Update ThingM controller files to new standardized header comment 2024-06-17 23:26:21 -05:00
Adam Honse ec8921381f Update Thermaltake Riing common controller files to new standardized header comment 2024-06-17 23:17:09 -05:00
Adam Honse 5e9a180c79 Update Thermaltake Riing Quad controller files to new standardized header comment 2024-06-17 23:15:32 -05:00
Adam Honse 49b6ba0303 Update Thermaltake Riing controller files to new standardized header comment 2024-06-17 23:13:17 -05:00
Adam Honse 7e0c9cf3e3 Update Thermaltake Poseidon Z RGB controller files to new standardized header comment 2024-06-17 23:10:10 -05:00
Adam Honse 90d92ddbd5 Update Tecknet controller files to new standardized header comment 2024-06-17 23:05:48 -05:00
Adam Honse ff404bfd99 Update SRGBmods common controller files to new standardized header comment 2024-06-17 22:48:12 -05:00
Adam Honse 0934020873 Update SRGBmods Pico controller files to new standardized header comment 2024-06-17 22:42:12 -05:00
Adam Honse a3ded7574c Update SRGBmods LED Controller V1 controller files to new standardized header comment 2024-06-17 22:33:55 -05:00
Adam Honse 410423fdc1 Update Sony Gamepad common controller files to new standardized header comment 2024-06-17 22:24:59 -05:00
Adam Honse 51f162bd37 Update Sony DualSense controller files to new standardized header comment 2024-06-17 22:21:59 -05:00
Adam Honse 9360466b6f Update Sony DS4 controller files to new standardized header comment 2024-06-17 22:18:51 -05:00
Adam Honse 9e98983c75 Update Seagate common controller files to new standardized header comment 2024-06-17 21:38:41 -05:00
Adam Honse 6aa6f6e456 Update Sapphire Nitro Glow common controller files to new standardized header comment 2024-06-17 21:35:15 -05:00
Adam Honse 3ab8f00af9 Update Sapphire Nitro Glow V3 controller files to new standardized header comment 2024-06-17 21:29:56 -05:00
Adam Honse f1f1ea37a2 Update Sapphire Nitro Glow V1 controller files to new standardized header comment 2024-06-17 21:27:38 -05:00
Adam Honse 90744b58dd Update Roccat Vulcan keyboard controller files to new standardized header comment 2024-06-17 21:22:23 -05:00
Mola19 edb6a8aed0 Add support for Roccat Kone XP 2024-06-18 01:36:00 +00:00
Gabriel de Souza 357b236fae Add Attack Shark k86 keyboard 2024-06-17 16:08:45 +00:00
EasyNetDev 4cd754530e Fix the confusing warning: ERROR! Source file debian/changelog.in missing. 2024-06-17 15:15:20 +02:00
Adam Honse 0139b47d85 Update Roccat Sense Aimo controller files to new standardized header comment 2024-06-14 11:44:37 -05:00
Adam Honse 339c146c67 Update Roccat Kova controller files to new standardized header comment 2024-06-14 11:41:53 -05:00
Adam Honse 940e14c07a Update Roccat Kone Pro controller files to new standardized header comment 2024-06-14 11:36:38 -05:00
Adam Honse b3379e8ef3 Update Roccat Kone Aimo controller files to new standardized header comment 2024-06-14 11:34:22 -05:00
Adam Honse 86010b3e8e Update Roccat Horde Aimo controller files to new standardized header comment 2024-06-14 11:31:53 -05:00
Adam Honse ae7caf002b Update Roccat Elo controller files to new standardized header comment 2024-06-14 11:29:55 -05:00
Adam Honse bba59be497 Update Roccat Burst Pro Air controller files to new standardized header comment 2024-06-14 11:29:55 -05:00
Barry H b84de85891 Added ROG Strix GTX 1650S A4G & TUF 7700XT 2024-06-14 16:28:58 +00:00
Plunti ea9369f799 Add Roccat Kone Pro Air 2024-06-10 02:05:02 +02:00
Yami Life a0adf9f47d Add Gainward GTX 1660 Super Ghost GPU 2024-06-09 12:17:05 +00:00
Chris M 481cc6f1bf Corrected REGEX creating duplicates in supported devices 2024-06-08 10:21:38 +10:00
Adam Honse d637d0f850 Update Roccat Burst controller files to new standardized header comment 2024-06-07 11:45:43 -05:00
Adam Honse 7d1106171c Update Red Square Keyrox TKL Classic controller files to new standardized header comment 2024-06-07 11:42:36 -05:00
Adam Honse 3147da5c73 Update Red Square Keyrox controller files to new standardized header comment 2024-06-07 11:40:25 -05:00
Adam Honse a4a3a7b970 Update Redragon controller files to new standardized header comment 2024-06-07 11:37:00 -05:00
Adam Honse 34ce3b928b Update Razer common controller files to new standardized header comment 2024-06-07 11:33:03 -05:00
Adam Honse 7c1cb2e4e0 Update Razer Kraken controller files to new standardized header comment 2024-06-07 11:29:57 -05:00
Adam Honse d2d342ade7 Update Razer controller files to new standardized header comment 2024-06-07 11:27:32 -05:00
Barry H 16bc33c18a Added some more Zotac GPUs 2024-06-06 06:02:43 +00:00
Chris M cc5aaadf08 Added Asus ROG Strix RTX4060Ti 8GB Gaming OC GPU
* Added `0x88FB` 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-rtx4060ti-o8g-gaming/)
* Resolves #4120
2024-06-06 06:01:58 +00:00
Chris M a7d7a35b93 Added MSI RTX2080 8G Gaming X Trio GPU
* Added `0x3727` to pci_ids.h
* Registered detector in MSIGPUControllerDetect.cpp
* Link to [webpage](https://msi.com/Graphics-Card/GeForce-RTX-2080-GAMING-X-TRIO/Specification)
* Resolves #4146
2024-06-05 08:25:40 +10:00
Adam Honse d9b88ae1b9 Update OpenRGB QMK common controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Adam Honse 8bf11c6270 Update OpenRGB QMK Revision E controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Adam Honse dde3e454e7 Update OpenRGB QMK Revision D controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Adam Honse 314319c36a Update OpenRGB QMK Revision B controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Adam Honse c48206dade Update OpenRGB QMK Revision 9 controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Adam Honse 5c9951af47 Update PNY Lovelace GPU controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Adam Honse bd5473663b Update PNY GPU controller files to new standardized header comment 2024-06-04 11:49:44 -05:00
Chris M 3cf1f58f30 Updated UDEV rules script
* Improved device processing
* Updated shebang to improve compatibility
* Converted SteelSeriesControllerDetect to UNIX line endings
* Corrected hex literals in Artic and SteelSeries detection
2024-06-03 18:02:24 +00:00
Adam Honse f9c17c75c5 Update Philips Wiz controller files to new standardized header comment 2024-06-03 11:46:18 -05:00
Adam Honse 2fd4cfb2a8 Update Philips Hue controller files to new standardized header comment 2024-06-03 11:43:51 -05:00
Adam Honse 59d1c07075 Update Patriot Viper Steel controller files to new standardized header comment 2024-06-03 11:39:10 -05:00
Adam Honse a87803ff26 Update Patriot Viper controller files to new standardized header comment 2024-06-03 11:36:47 -05:00
Adam Honse 281d3d8c62 Update Palit GPU controller files to new standardized header comment 2024-06-03 11:33:54 -05:00
Adam Honse aac70462c5 Update OKS keyboard controller files to new standardized header comment 2024-06-03 11:30:50 -05:00
morg 35b6fd8c28 Revert "Fix Razer Chroma Addressable RGB Controller on Linux" 2024-06-03 12:53:18 +00:00
Adam Honse 853f12e9c1 Update NZXT Mouse controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
Adam Honse e4eaef00ca Update NZXT Kraken controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
Adam Honse 1d2a57b8e0 Update NZXT Hue Plus controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
Adam Honse e0fa66a82a Update NZXT Hue 2 controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
Adam Honse a862af2c80 Update NZXT Hue 1 controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
Adam Honse ffe99f0310 Update NVIDIA Illumination controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
Adam Honse 1d766d4a10 Update NVIDIA ESA controller files to new standardized header comment 2024-06-01 20:47:59 -05:00
mfletcher_2 a7e76b5869 Add support for Kasa Smart LED light strips 2024-06-02 00:18:35 +00:00
Adam Honse 1526cbec6c Update Nollie controller files to new standardized header comment 2024-06-01 01:10:49 -05:00
Adam Honse 9df2289bf4 Update Nanoleaf controller files to new standardized header comment 2024-06-01 01:07:22 -05:00
Adam Honse feefc79757 Update N5312A controller files to new standardized header comment 2024-06-01 01:03:08 -05:00
Adam Honse 75f895799c Update MSI Vigor controller files to new standardized header comment 2024-06-01 00:55:54 -05:00
Adam Honse 67f7c40fa5 Update MSI-RGB controller files to new standardized header comment 2024-06-01 00:50:19 -05:00
Adam Honse 803d1681c4 Update MSI Optix controller files to new standardized header comment 2024-06-01 00:45:53 -05:00
Adam Honse 9c19195625 Update MSI Mystic Light common controller files to new standardized header comment 2024-06-01 00:35:14 -05:00
Adam Honse eb5c9d91d3 Update MSI Mystic Light 185-byte controller files to new standardized header comment 2024-06-01 00:30:04 -05:00
Adam Honse 1c32d819eb Update MSI Mystic Light 162-byte controller files to new standardized header comment 2024-06-01 00:24:43 -05:00
Adam Honse f95cfc9aeb Update MSI Mystic Light 112-byte controller files to new standardized header comment 2024-06-01 00:24:34 -05:00
Adam Honse aa4f58694b Update MSI Mystic Light 64-byte controller files to new standardized header comment 2024-06-01 00:24:27 -05:00
Adam Honse e924257ddd Update MSI GPU V2 controller files to new standardized header comment 2024-05-31 11:45:11 -05:00
Adam Honse ec59cc59b0 Update MSI GPU controller files to new standardized header comment 2024-05-31 11:41:23 -05:00
Adam Honse 281b02b049 Update MSI 3-zone keyboard controller files to new standardized header comment 2024-05-31 11:38:22 -05:00
Adam Honse a9ddbf1b95 Update Mountain keyboard controller files to new standardized header comment 2024-05-31 11:34:47 -05:00
Adam Honse d15ce7d7ab Update Logitech common controller files to new standardized header comment 2024-05-31 11:31:32 -05:00
Adam Honse 651adb61d6 Move and update Logitech X56 controller files to new standardized header comment 2024-05-31 11:28:04 -05:00
Chris M bb488b2a55 Added Asus ROG Strix RTX4070Ti Super 16GB Gaming OC GPU
* Added `0x896D` to pci_ids.h
* Changed `0x896B` model to non OC based on [TechPowerUp GPU entry](https://www.techpowerup.com/vgabios/264927/264927)
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4070tis-o16g-gaming/)
2024-05-31 16:23:45 +00:00
Chris M aa4483183c Removed *.md file creation from Supported Devices
* Added Dummy Controller processing
* Other fixes to broken detector replacements
* Removed file exemptions in runner script
2024-05-31 16:22:34 +00:00
Adam Honse b06ce22abb Move and update Logitech Lightspeed controller files to new standardized header comment 2024-05-31 11:08:49 -05:00
Adam Honse 3c08177b58 Move and update Logitech G Pro keyboard controller files to new standardized header comment 2024-05-31 11:08:11 -05:00
Adam Honse 0760e13808 Move and update Logitech G Lightsync controller files to new standardized header comment 2024-05-30 11:51:22 -05:00
Adam Honse 94ccb0a3ba Move and update Logitech G933 controller files to new standardized header comment 2024-05-30 11:45:30 -05:00
Adam Honse 6e9fd99e0e Move and update Logitech G915 controller files to new standardized header comment 2024-05-30 11:42:39 -05:00
Adam Honse a0c975f186 Move and update Logitech G910 controller files to new standardized header comment 2024-05-30 11:39:50 -05:00
Adam Honse 56d26fa3cf Move and update Logitech G815 controller files to new standardized header comment 2024-05-30 11:36:06 -05:00
Adam Honse 7a6f86966f Move and update Logitech G810 controller files to new standardized header comment 2024-05-30 11:31:19 -05:00
Adam Honse d995593e76 Reorganize Hue 2 detectors and update detectors metadata to fix udev rule generation
Fixes #4079
2024-05-30 11:28:13 -05:00
Adam Honse 433ac0b8ce Move and update Logitech G560 controller files to new standardized header comment 2024-05-30 11:23:58 -05:00
Adam Honse 6c30e92b21 Move and update Logitech G213 controller files to new standardized header comment 2024-05-30 11:23:58 -05:00
Adam Honse 52423a325e Update Logitech G203L controller files to new standardized header comment 2024-05-30 11:23:58 -05:00
Adam Honse 523b01054a Update Linux LED controller files to new standardized header comment 2024-05-30 11:23:58 -05:00
Adam Honse baa6c1a2e4 Update LIFX controller files to new standardized header comment 2024-05-30 11:23:58 -05:00
Adam Honse 841b85a589 Increase Corsair Lighting Node read timeout to 15ms to fix issues with some CorsairLightingProtocol setups 2024-05-29 19:24:10 -05:00
Adam Honse 8d14059d2e Update Lian Li Strimer L Connect controller files to new standardized header comment 2024-05-25 18:15:04 -05:00
Adam Honse cdcbf5209c Update Lian Li SLV2 Uni Hub controller files to new standardized header comment 2024-05-25 17:56:54 -05:00
Adam Honse 86784b983c Update Lian Li Uni Hub SL Infinity controller files to new standardized header comment 2024-05-25 13:23:01 -05:00
Adam Honse 3806a8ae04 Update Lian Li Uni Hub controller files to new standardized header comment 2024-05-25 13:18:04 -05:00
Adam Honse edbcc38518 Update Lian Li AL Uni Hub controller files to new standardized header comment 2024-05-25 13:14:06 -05:00
Adam Honse 58f9943151 Update Lian Li AL10 Uni Hub controller files to new standardized header comment 2024-05-25 13:09:01 -05:00
Adam Honse be6e890402 Update Lian Li GAII Trinity controller files to new standardized header comment 2024-05-25 13:05:11 -05:00
Adam Honse de17f6b7cb Update LG monitor controller files to new standardized header comment 2024-05-25 12:57:52 -05:00
Adam Honse cb41353622 Update Lexip mouse controller files to new standardized header comment 2024-05-25 12:53:50 -05:00
Adam Honse e8264ae616 Update Lenovo motherboard controller files to new standardized header comment 2024-05-25 12:49:56 -05:00
Adam Honse 4723c64666 Update Lenovo USB Gen7/Gen8 controller files to new standardized header comment 2024-05-25 12:46:23 -05:00
Adam Honse f6e42f0c6d Update Lenovo USB controller files to new standardized header comment 2024-05-25 12:37:54 -05:00
Adam Honse 47a81009c8 Update Lenovo M300 controller files to new standardized header comment 2024-05-25 12:34:09 -05:00
Adam Honse a460e01718 Update Lenovo 4-zone controller files to new standardized header comment 2024-05-25 12:28:11 -05:00
Adam Honse 5f79126313 Update Lego Dimensions Toypad Base controller files to new standardized header comment 2024-05-25 12:19:46 -05:00
Adam Honse 8b0b5bc526 Update LED strip controller files to new standardized header comment 2024-05-25 12:12:20 -05:00
Adam Honse fae1e8e9eb Update Keychron keyboard controller files to new standardized header comment 2024-05-25 09:34:30 -05:00
Adam Honse 56753a5821 Update Kasa Smart controller files to new standardized header comment 2024-05-25 09:29:04 -05:00
Adam Honse beac78dcb6 Update JGINYUE USB controller files to new standardized header comment 2024-05-25 09:23:09 -05:00
Adam Honse 680821f164 Update Ionico controller files to new standardized header comment 2024-05-25 09:17:29 -05:00
Adam Honse 13ba7b19ea Update Intel Arc A770 LE controller files to new standardized header comment 2024-05-25 09:14:13 -05:00
Adam Honse 84077e9dc2 Update Instant mouse controller files to new standardized header comment 2024-05-25 09:10:47 -05:00
Adam Honse 1f3bcaf52a Update HYTE mousemat controller files to new standardized header comment 2024-05-24 14:04:28 -05:00
Adam Honse 056485fabf Update HyperX mousemat controller files to new standardized header comment 2024-05-24 13:57:38 -05:00
Adam Honse b43f31ebfb Update HyperX mouse controller files to new standardized header comment 2024-05-24 13:57:28 -05:00
balika011 1975c63b71 Fix Razer Chroma Addressable RGB Controller on Linux 2024-05-23 18:32:21 +02:00
morg c4917d30b0 Add F120 RGB Core Case version to NZXT Hue2 Controller 2024-05-23 15:11:58 +00:00
Balázs Triszka 540eaa5366 EVGA ACX30 Motherboard 2024-05-22 20:50:16 +00:00
TheRogueZeta 11bb1dcedb Initial commit for Gigabyte RTX 4070 TI Super Gaming OC 16G Rev 1.0 2024-05-21 15:05:11 -07:00
Julian Fellinger b3ad41a572 Added MSI RTX4060 Ti Super 16G Gaming X Slim White GPU 2024-05-20 19:42:41 +00:00
Adam Honse d9671e50ad Add metadata to HYTE mousemat controller 2024-05-20 12:10:40 -05:00
Adam Honse 40e1d7f0bc Update HyperX microphone controller files to new standardized header comment 2024-05-19 20:03:39 -05:00
Adam Honse 080e40c4d4 Update HyperX keyboard controller files to new standardized header comment 2024-05-19 19:53:45 -05:00
Adam Honse af830e5b21 Update HyperX DRAM controller files to new standardized header comment 2024-05-19 19:33:14 -05:00
Adam Honse acff88590c Update HP Omen 30L controller files to new standardized header comment 2024-05-19 19:28:53 -05:00
Adam Honse 4aa92c6272 Update Holtek controller files to new standardized header comment 2024-05-19 19:24:17 -05:00
Adam Honse de7d0a4c76 Update Gigabyte Aorus Super IO motherboard controller files to new standardized header comment 2024-05-19 18:15:18 -05:00
Adam Honse 75d77ea608 Update Gigabyte Aorus RGB Fusion GPU controller files to new standardized header comment 2024-05-19 18:11:00 -05:00
Adam Honse d19df6d931 Update Gigabyte Aorus RGB Fusion motherboard controller files to new standardized header comment 2024-05-19 18:07:05 -05:00
Adam Honse 6a8b5ecfa9 Update Gigabyte Aorus RGB Fusion 2 USB motherboard controller files to new standardized header comment 2024-05-19 18:03:14 -05:00
Adam Honse e27c7e8d64 Update Gigabyte Aorus RGB Fusion 2 motherboard controller files to new standardized header comment 2024-05-19 17:56:19 -05:00
Adam Honse cee3be9113 Update Gigabyte Aorus RGB Fusion 2 GPU controller files to new standardized header comment 2024-05-19 17:47:34 -05:00
Adam Honse 0b78dd3d86 Update Gigabyte Aorus RGB Fusion 2 RAM controller files to new standardized header comment 2024-05-19 17:40:29 -05:00
Adam Honse e22267fbeb Update Gigabyte Aorus case controller files to new standardized header comment 2024-05-19 17:36:17 -05:00
Adam Honse c8bafd10aa Update Gigabyte Aorus mouse controller files to new standardized header comment 2024-05-19 17:32:41 -05:00
Adam Honse e086085375 Update Gigabyte Aorus laptop controller files to new standardized header comment 2024-05-19 17:26:14 -05:00
Mike Wang efd26d4e49 Fix Gigabyte RTX 4070 Gaming OC fan RGB #3345 2024-05-19 22:19:09 +00:00
Adam Honse 3debbc36dd Update Gigabyte CPU cooler controller files to new standardized header comment 2024-05-19 02:08:03 -05:00
Adam Honse b0bb6e7b1b Update Galax GPU controller files to new standardized header comment 2024-05-19 01:26:47 -05:00
Adam Honse 019b049d06 Update GaiZhongGai keyboard controller files to new standardized header comment 2024-05-19 01:09:29 -05:00
Adam Honse 1b0d915a63 Update Gainward GPU controller files to new standardized header comment 2024-05-19 00:44:51 -05:00
Adam Honse 2c3e102772 Update Faustus controller files to new standardized header comment 2024-05-17 20:27:02 -05:00
Adam Honse 502f23e102 Update FanBus controller files to new standardized header comment 2024-05-17 20:23:15 -05:00
Adam Honse cd5b8e08c7 Update EVision keyboard controller files to new standardized header comment 2024-05-17 11:49:02 -05:00
Adam Honse 8650ec51ae Update EVGA USB controller files to new standardized header comment 2024-05-17 11:33:36 -05:00
Adam Honse b93e6be0b0 Update EVGA V2 GPU controller files to new standardized header comment 2024-05-17 11:33:17 -05:00
Adam Honse 211497193d Update EVGA V1 GPU controller files to new standardized header comment 2024-05-17 11:32:56 -05:00
Adam Honse 794f6a81e9 Update EVGA GP102 GPU controller files to new standardized header comment 2024-05-17 11:32:20 -05:00
TomHashNL df379e680f Add support for ASUS ROG MATRIX PLATINUM RTX 4090 24G 2024-05-17 13:58:40 +02:00
Adam Honse 1bdc8dfa7a Add silent configuration to suppress compiler commands in qmake output, should hopefully make the logs more readable (and not overflow the buffer) 2024-05-17 01:25:45 -05:00
Adam Honse a6c3bdd4f1 Move windows.h out of alphabetical order because it needs to be first to compile 2024-05-17 01:20:54 -05:00
Adam Honse 19e5626d50 Update EVGA V3 GPU controller files to new standardized header comment 2024-05-16 22:33:38 -05:00
Adam Honse 9f98e8767c Update Espurna controller files to new standardized header comment 2024-05-16 22:28:01 -05:00
Adam Honse d5590ed427 Update Epomaker controller files to new standardized header comment 2024-05-16 22:22:23 -05:00
Adam Honse 50ec1095c1 Update ENE SMBus controller files to new standardized header comment 2024-05-16 22:06:29 -05:00
Adam Honse 9b1ea375b8 Fix name redefinition/conflict in plugin manager 2024-05-16 21:39:04 -05:00
Adam Honse d9866e3bd4 Update Elgato Light Strip controller files to new standardized header comment 2024-05-16 11:48:14 -05:00
Adam Honse 8a77fe5525 Update Elgato Key Light controller files to new standardized header comment 2024-05-16 11:43:53 -05:00
Adam Honse a51febd0f7 Update EK controller files to new standardized header comment 2024-05-16 11:39:32 -05:00
Adam Honse acc85f8891 Update E1.31 controller files to new standardized header comment 2024-05-16 11:36:27 -05:00
Adam Honse d8f3baf8e8 Update Dygma Raise controller files to new standardized header comment 2024-05-16 11:33:12 -05:00
Adam Honse 4f870489ad Update Ducky controller files to new standardized header comment 2024-05-16 11:30:05 -05:00
Adam Honse d78b8d5d40 Update DMX controller files to new standardized header comment 2024-05-16 11:30:05 -05:00
Adam Honse 89fd45f1ac Update Debug controller files to new standardized header comment 2024-05-16 11:30:05 -05:00
Qwex 66a53cde3d Mac Update info product name 2024-05-16 13:24:19 +00:00
Adam Honse e4fb4f53ae Update Das Keyboard controller files to new standardized header comment 2024-05-15 11:53:02 -05:00
Adam Honse 1630d50e72 Update Dark Project controller files to new standardized header comment 2024-05-15 11:46:59 -05:00
Adam Honse 0231a27861 Update Cryorig H7 Quad Lumi controller files to new standardized header comment 2024-05-15 11:42:56 -05:00
Adam Honse 1eb2a68a16 Update Crucial controller files to new standardized header comment 2024-05-15 11:38:36 -05:00
Adam Honse e9d7b6b103 Update Creative controller files to new standardized header comment 2024-05-15 11:34:11 -05:00
Adam Honse 1e53aae676 Update Cougar controller files to new standardized header comment 2024-05-15 11:31:40 -05:00
Adam Honse da8469f478 Update all Corsair controller files to use new standardized file header comment 2024-05-14 19:14:09 -05:00
Adam Honse fc97d6130b Update file header comments to standardized new format for Cherry, Colorful, and Cooler Master files 2024-05-12 17:16:31 -05:00
Barry H 889110961a Add 3 new Asus ROG Strix AMD cards RX560, RX590 & 5700XT (Q Bios) 2024-05-12 19:16:59 +00:00
Adam Honse 02d3b27073 Update file header comments to standardized new format for BlinkyTape files 2024-05-11 21:41:01 -05:00
Adam Honse 88929f9e4c Update file header comments to standardized new format for Asus TUF laptop files 2024-05-11 21:28:16 -05:00
Adam Honse 93573a93ca Update file header comments to standardized new format for Asus legacy USB files 2024-05-11 21:05:39 -05:00
Adam Honse 08304c5474 Update file header comments to standardized new format for Asus Aura USB files 2024-05-11 20:38:00 -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
Adam Honse b25dacd0c0 Remove unnecessary header file OpenRGB.h 2023-02-01 00:33:23 -06:00
Adam Honse b3ff39138a Save settings for wrapped HID device detectors 2023-01-31 19:18:32 -06:00
Ayexor 51a2fdb09d Gigabyte aorus geforce rtx380 ti extreme waterforce wb 12g lhr 2023-01-31 03:19:17 +00:00
Adam Honse 1930080bc6 Add Kraken X53 PID 2023-01-30 18:30:21 +00:00
Chris M a3e22bedcb Initial commit for Razer Mouse Dock Pro to resolve #3068
+ Added PID entry for the Mouse Dock Pro
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
2023-01-30 14:14:55 +00:00
Adam Honse b072b508ae Add wrapped hidapi devices to udev rules 2023-01-29 17:31:05 -06:00
Michael Stummvoll 3c7f53b544 Add support for Das Keyboard 5QS 2023-01-29 21:57:37 +00:00
Chris M 532eaa7478 Adding MSI 3090 Suprim 24G GPU
* Code clean up for the MSI GPU V1
* Registered detector in `MSIGPUControllerDetect.cpp`
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3090-
SUPRIM-24G/Specification)
2023-01-29 13:51:34 +11:00
Adam Honse 4c67d849b4 Use hidapi wrapper for HyperX mousemat controller 2023-01-28 11:46:31 -06:00
Adam Honse e30fbdef71 Fix build on musl and rename wrapper function to match hidapi's name 2023-01-28 11:37:18 -06:00
JDinABox 6fdc70d650 Add support for Razer Ornata V3X
Commit amended to address minor style issues by Adam Honse <[email protected]>
2023-01-27 22:39:23 -06:00
AnAvrgDev 9e9a583009 Added support for newer version (HP version) of Hyperx Pulsefire Dart (Wired & Wireless) 2023-01-27 14:26:56 +01:00
Chris M 97234c811f Adding media keys to Razer Cynosa V2 Keymap
* Resolves #3062
2023-01-27 17:52:17 +11:00
Adam Honse a7b6ef9e21 Remove redundant code that is no longer necessary with all controllers being registered via RegisterRGBController() 2023-01-26 23:07:30 -06:00
Adam Honse 92f0720639 Remove RGB controllers argument from standard detector 2023-01-26 20:36:02 -06:00
Adam Honse 060567548f Use RegisterRGBController for standard detectors 2023-01-26 20:35:52 -06:00
Adam Honse 29d34f7768 Implement the wrapper for Linux in ResourceManager, change IPU to I for HyperX Quadcast S, code cleanup 2023-01-26 23:56:36 +00:00
Adam Honse 45408ae159 Remove fake Off mode and color saving, as it was messing with the Set All Devices functionality 2023-01-26 23:56:36 +00:00
Adam Honse aec234e7c3 Update USB ID names for HyperX Quadcast S 2023-01-26 23:56:36 +00:00
Matt Silva 72fa099088 Initial commit for HyperX Quadcast S 2023-01-26 23:56:36 +00:00
Chris 856fbc1bb2 Fixing regression bug for the Logitech x56 HOTAS introduced in cac67592
* Added extra IPU detectors for the older x56 hardware
* Closes #2574
2023-01-26 04:30:00 +00:00
Shady Nawara b05b5205de Fix segments load from profile 2023-01-26 04:29:26 +00:00
Jack e15b299684 SDK Plugins Fix 2023-01-25 20:28:50 +00:00
Will Kennedy 3cf9750660 Support for Lian Li UNI Hub SL V2 2023-01-25 19:05:09 +00:00
Jack 4baf19f13a SDK plugin control 2023-01-25 17:50:28 +00:00
Wojciech Lazarski 98c5c177ab Added Polish translations 2023-01-25 15:51:20 +01:00
morg dbf055a89b HyperX Alloy Origins 60 detection fix for Linux. Closes #3074 2023-01-25 00:56:20 +00:00
Wojciech Łazarski 61b1638bb5 Added support for Mountain Everest Keyboard resolves #1085 2023-01-24 17:21:28 +00:00
Wojciech Lazarski 56e4f94be3 Added brightness support for HyperX Origin Core 2023-01-23 22:51:06 +01:00
Wojciech Lazarski 878e6c6d8b Fixed LED mapping for Aorus Master X570 2023-01-23 20:31:28 +01:00
Cyril Bosselut ec6ccf3011 Aorus rtx 4080 master 16g 2023-01-23 14:32:24 +00:00
Neshura d6ec41aba4 Support for Corsair Vengeance DDR5 2023-01-21 02:27:43 +00:00
Alexey Sokolov ba396da13e Fix build after !1239 2023-01-21 02:12:49 +00:00
flora bacbae7e7d Moved TUF RX6800 from AuraGPU to ENESMBus 2023-01-20 22:44:08 +00:00
Adam Honse c27bfe2f5f Fix zone box index processing when clicking the resize/edit button 2023-01-20 19:00:45 +00:00
Adam Honse 890a5846e6 Update UI after editing a zone to refresh zone list 2023-01-20 19:00:45 +00:00
Adam Honse b41ce2dd9d Increment plugin API version as Segments breaks the existing API 2023-01-20 19:00:45 +00:00
Adam Honse 5ee1968b25 Fix DeviceView clicking on Zone and Segment names 2023-01-20 19:00:45 +00:00
Adam Honse 72d8e66c91 Allow selection of segments within Zone box 2023-01-20 19:00:45 +00:00
Adam Honse 447e936464 Segments 2023-01-20 19:00:45 +00:00
Adam Honse ead55f4ea6 Fix is_directory on older versions of filesystem 2023-01-20 12:31:12 -06:00
flora 4913ee8502 Added colorful 4080 2023-01-20 10:48:02 +01:00
Flora Aubry 604c4cf39c Fixed incorrect detection for MSI 6700XT Gaming X closes #2994 2023-01-20 02:26:40 +00:00
flora 11ce757ae3 Support for TUF RX 6950XT 2023-01-20 02:25:24 +00:00
Markus Meissner 73d31a17ab Support for Corsair Dominator Platinum DDR5, closes #2435 2023-01-20 02:24:42 +00:00
flora ac987d5200 Ignore directories while checking for plugins 2023-01-19 19:48:05 +01:00
Flora Aubry a35521e987 Support for TUF RTX 4070TI closes #3065 2023-01-19 17:19:32 +00:00
Adam Honse 7bf0e40fd8 Load sizes for hardware controllers registered using RegisterRGBController() before putting them in the general controllers list and updating the UI 2023-01-18 22:56:44 -06:00
Shady Nawara 6cda8f56ab Asrock Polychrome USB RGSwap Reset Fix 2023-01-18 14:08:06 +00:00
Dmitry K b409b5f7cc Added support for unicode paths (filesystem::path approach) 2023-01-18 06:02:55 +00:00
Shady Nawara 351515f025 Asrock Polychrome USB Fix 2023-01-18 04:45:40 +00:00
flora edf05dc121 Support for Rog Strix RX 6800 2023-01-16 15:55:46 +01:00
Cooper Knaak 895566b8c1 Annotate RGBController_EVGAMouse.cpp to properly generate UDEV rules 2023-01-16 03:37:42 +00:00
César Navarro 6deda6f7d4 Added AORUS RTX 2070 XTREME 2nd vBIOS 2023-01-15 23:34:30 +00:00
Wojciech Łazarski e8f8d01447 Refactoring of MSI GPU 40xx 2023-01-15 23:33:28 +00:00
Flora Aubry 5c5ee6509a Support for Razer Basilisk V3 Pro 2023-01-15 19:05:51 +00:00
flora 5e1d817dea Removed IPU for viewsonic XG270QG 2023-01-15 15:18:43 +01:00
Chris 915ecefd16 Formatting and style fixes for the MSIGPUv2Controller
* Change Hex literals to uppercase
* Adjusting Metadata to correctly reflect the declared controller
* Adding defines for Speed and Brightness values and adjusting mode declarations to suit
* Replacing brightness array in favour of more flexible multiple
2023-01-14 03:26:22 +00:00
Flora Aubry 94a8ce3cbe Reworked "Save as" to include a profile list 2023-01-13 16:34:11 +00:00
Chris M 9ef8ea3fba Correction for the MSI RTX4070Ti Gaming X Trio detector name
* Minor correction to the detector name (refer #3059)
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-
Ti-GAMING-X-TRIO-12G)
2023-01-13 17:55:03 +11:00
Wojciech Łazarski 6f684f1d1e Added support for MSI 4080 & 4070TI Gaming X - closes #3059 2023-01-13 02:21:04 +00:00
Tim Demand dc92567202 Add support for Corsair HydroSeries H100i v2 2023-01-13 02:19:29 +00:00
Flora Aubry a936f91509 Support for Gigabyte 3060 eagle variant closes #3060 2023-01-12 17:12:08 +00:00
Wojciech Lazarski d6b6df3d86 Corrected IDs for MSI 4090 Suprim cards 2023-01-09 22:33:56 +01:00
LucasStf e663bc9114 Added Ionico laptop closes #2995 2023-01-09 19:25:53 +00:00
Adam Honse 2f1212444c Razer Core (v1) IPU changes 2023-01-09 02:19:44 +00:00
David Henry 9f1e53aa4e Add support for ZOTAC GAMING RTX 2070 SUPER Twin Fan 2023-01-08 18:57:41 +01:00
Chris 4cfe8c5d72 Adjusting IPU of Razer Core X Chroma due to 309557226
* Closes #2755
2023-01-08 16:29:56 +11:00
flora 1b8ae08726 Sorted GPU per Brand 2023-01-07 11:41:03 +01:00
Gianfranco Cossani Morales def6db0174 Support for MSI GeForce RTX 3070 SUPRIM 8G. Closes #3041 2023-01-07 06:55:34 +00:00
Flora Aubry f0f7301cad Support for ROG STRIX LC 6950XT 2023-01-07 03:16:52 +00:00
morg da074fbf61 Add support for ASUS ROG STRIX LC RX 6800XT O16G GAMING. Closes #2569 2023-01-06 09:40:08 +01:00
Flora Aubry 8d907e0c6f Added msi 4080 suprim X closes #3029 2023-01-05 22:23:22 +00:00
morg cd4a9098aa Add support for HyperX Alloy Origins 60 (HP version) 2023-01-05 10:03:39 +01:00
Wojciech Łazarski f824e9f653 Add support for MSI RTX 4090 Trio/Suprim/Suprim Liquid Cards - Resolves https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/2896 2023-01-04 19:34:16 +00:00
flora 6c1fec7855 Added colorful 3060 variant 2023-01-04 17:02:49 +01:00
Mola19 b9c0b274ab support for Asus ROG Chakram X 2023-01-03 23:06:25 +00:00
flora fc1395dfe6 Refactored redragon mouse controller and added M808 2023-01-03 19:26:50 +00:00
Jorge López Tello 865312b7c6 Adds Sapphire Nitro+ 7900 XTX closes #3017 2023-01-03 10:06:43 +00:00
LtdJorge fffc8e8b52 Adds Navi31 (7900XT/XTX) 2023-01-03 10:05:33 +00:00
D E c51b019ff7 Add ASUS ROG Strix Flare CoD BO4 Edition keyboard 2023-01-03 02:08:38 +00:00
Flora Aubry 84393884ca Added support for Roccat Elo 7.1 headset closes #3012 2023-01-02 21:14:24 +00:00
Shady Nawara 37fd9ced7a Per Led Support for Asrock Polychrome USB 2023-01-02 07:02:30 +00:00
Sergey Morozov 136b2c2e2c Add support for Gigabyte GeForce RTX 4080 Gaming OC 2023-01-01 09:40:37 +00:00
Simon Chopin acb313631f device page: disable resize button if there are no zones
I have an unsupported Asus GPU which shows up as a device but doesn't
have any zone configured. Clicking on the Resize button leads to an
out-of-bounds read in the empty `zones` vector to `zones[-1]` (default
value of the QComboBox property).

The fix is to entirely disable the button when we're disabling the zones
box.
2022-12-31 16:43:41 +01:00
morg b6172b71c8 Add support for Gigabyte Aorus M2 mouse - Closes #2538 2022-12-31 00:33:48 +00:00
morg 7a1af0854a Initial commit for Lenovo motherboards - #2999 2022-12-30 23:04:29 +00:00
Chris bce0efb083 Adding missing ISO keys to Huntsman V2 TKL layout to resolve #2927
* Appending the layout byte to the GetKeyboardLayoutName() in the default case
2022-12-30 23:55:46 +11:00
Chris 0fa2a6f039 Initial commit for ASUS ROG Strix RTX 4090 O24G Gaming to resolve #2991
* Adding to pci_ids.h
* Registering detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4090-o24g-gaming-model)
2022-12-30 07:28:48 +00:00
thombo 6020008040 Support for MSI board 7D76 added. 2022-12-30 05:31:20 +00:00
Chris f837ed8c26 Initial commit for ASUS TUF RTX 3070 8G Gaming
* Adding to pci_ids.h
* Registering detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx3070-8g-gaming/)
2022-12-29 23:14:38 +11:00
flora ef77af5da7 Promoted sliders to QTooltipedSliders 2022-12-28 19:05:05 +00:00
Sirn Thanabulpong 8c893fba4f Fix build on musl in Nanoleaf settings 2022-12-28 00:49:47 +09:00
thombo c1dc0fdfc5 Support for MSI boards 7B16 and 7E07 added 2022-12-27 07:02:59 +00:00
morg 02ddd7378a Add support for ASUS TUF RTX 3090Ti O24G OC GAMING 2022-12-26 01:27:43 +01:00
morg 9ff31055ae Add support for ASUS KO RTX 3060 Ti OC. Closes #1236 2022-12-25 13:44:12 +01:00
Chris d49c506e63 Minor cleanup to UDEV rules build script
* Changing Asus-wmi rules to an array for consistency.
2022-12-25 02:32:56 +00:00
Flora Aubry 3a2fa82e1a Support for ROG STRIX 6750XT closes #2858 2022-12-25 02:32:11 +00:00
Flora Aubry ca85fc06b4 Support for MSI 6750XT Gaming X TRIO closes #2912 2022-12-25 02:30:26 +00:00
morg 94aca7d76f Generate CSV file of device list 2022-12-25 02:26:10 +00:00
Moshe Schmidt 26dfceaf6d Lian Li Uni Hub: Leave room in the char array for the null character 2022-12-23 17:45:41 +00:00
Misaka19465 ac2af0c788 Fixing build-udev-rules.sh 2022-12-22 23:19:43 +08:00
Misaka 19465 c88a6021f2 Adding support for ASUS TUF Laptop keyboard LED for Linux 2022-12-22 14:57:58 +00:00
TheRogueZeta 1d27ff86c8 Add EVGA RTX 3080 12GB XC3 Ultra device ID and sort list for 3080 12G ID's 2022-12-21 17:42:26 +00:00
morg b79871fb32 Fix typo in Genesis Thor 300 metadata 2022-12-21 17:41:19 +00:00
flora 0a170cfb44 Fixed typo on lianli supported devices 2022-12-21 17:40:23 +00:00
morg 54f9118dda Fix metadata for Roccat Kova controller 2022-12-21 17:39:32 +00:00
TheRogueZeta 37d58c3aec Initial commit for NVIDIA RTX 4080 Founders Edition device ID 2022-12-20 11:10:20 -08:00
Flora Aubry 23f6efdb01 Support for Aorus 3060 non lhr closes #2950 2022-12-18 20:53:39 +00:00
flora 813bc9ae67 Added 5700XT Strix Variant 2022-12-16 18:16:30 +00:00
IOXAM 2f77af535a Support for AORUS GeForce RTX 4090 MASTER 24G - resolves #2959 2022-12-16 18:12:49 +00:00
Peter Vazny 120ce6abbd Removes unnecessary memory allocation in Lenovo USB Controller 2022-12-16 18:07:20 +00:00
Chris e1a6a74ba7 Removing redundant language resource file
* languages.qrc is no longer required as the .qrc is built and embeded since commit a7adfe251
2022-12-16 17:59:49 +00:00
morg fa406216d3 Add support for Gigabyte RTX2070 Gaming OC 8GC 2022-12-16 17:49:34 +00:00
krotter0 3708eaaab4 Fix SteelSeries Rival 600 flickering when setting colors 2022-12-16 17:47:01 +00:00
Bernhard M. Wiedemann a782c00784 Sort input file list 2022-12-10 20:19:13 +00:00
morg 5da85adb90 Add support for ASUS ROG STRIX 3060 12G GAMING 2022-12-09 17:30:40 +00:00
Flora Aubry 30c1168e1c Hide bottom buttons when a plugin tab is shown 2022-12-09 17:29:49 +00:00
Codename-Antares f85dd617d3 Initial Support for Razer Thunderbolt 4 Dock Chroma 2022-12-09 00:16:52 +00:00
flora cf25ccb304 Fixing margin for plugincontainer 2022-12-08 21:51:30 +01:00
Peter Vazny f8d7eb8bb8 Fixes layout detection for Lenovo Legion 7S 2022-12-08 04:39:17 +00:00
Chris d67acee002 Simplfying the Git commands in the project file
* Allowing commands to get the `GIT_COMMIT_ID`, `GIT_COMMIT_DATE` and `GIT_BRANCH` to work with spaces in path
2022-12-08 13:57:16 +11:00
Chris 86f0ab888d Adding Malaysian translation ms_MY 2022-12-07 23:17:12 +11:00
thombo cf610fa559 MSI boards 7C87 and 7D67 added 2022-12-06 21:43:50 +01:00
Chris 612c809b75 Initial commit for the Logitech G633 to resolve #2911
* Adding the G633 PID to LogitechControllerDetect.cpp
* Registering the detector for the common controller
* Fixing the indexing swap issue for LogitechLightspeedController
* Removing the `bright_cycle_swap` hack and using the queried effects index to set the mode.value for each mode
2022-12-06 12:45:46 +11:00
Mola19 c2c9b3aa99 fixing Roccat Vulcan 120-Series Aimo US layout key map 2022-12-04 00:46:56 +01:00
TheRogueZeta 7a7cea1e1e Initial commit for EVGA RTX 2070 XC Black device ID 2022-12-03 22:58:05 +00:00
Adam Honse 032d22b7ca Add PNY XLR8 Revel EPIC-X RTX 3060 and RTX 3070 2022-12-03 15:15:39 -06:00
Gustavo Parreira 7892713683 feat: Roccat Kova support 2022-12-03 07:45:42 +00:00
Mola19 790abdd9c0 adding hardware modes and layout detection to Asus ROG Falchion to resolve #2732 2022-12-03 00:51:52 +01:00
Chris M 34cb864147 Adding New Fusion2 USB board layout to resolve #2923
* Adding MSTR_ATX_2 layout to support the new layout of the X670E AORUS
Master
2022-12-02 19:20:24 +00:00
flora e30469adc4 Support for Gigabyte 3090 Vision OC 2022-12-02 13:15:34 +01:00
Chris 5c4c4479bf Initial commit for Gigabyte RTX3080Ti Eagle OC 12G
* Added ID to pci_ids.h
* Registering detector in GigabyteRGBFusionGPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/au/Graphics-Card/GV-N308TEAGLE-OC-12GD/sp#sp)
2022-12-02 03:50:49 +00:00
Chris M ec531bd9fc Correcting defined hex for Lian Li Uni Hub to resolve #2916 2022-12-02 07:35:53 +11:00
Chris M 701cc4d0b3 Initial commit for Gigabyte RTX3070 Eagle V2 OC 8G LHR
* Registering detector in GigabyteRGBFusionGPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-
N3070EAGLE-OC-8GD-rev-20)
2022-12-01 07:05:50 +11:00
TheRogueZeta faa6a5060b Initial commit for Colorful iGame 3070 Ultra W OC device ID 2022-11-30 00:26:56 +00:00
TheRogueZeta c0be45182b Initial commit for ASUS ROG STRIX RX 6700XT O12G GAMING 2022-11-29 18:17:24 -06:00
Adam Honse b3da8beccf Remove device listing step from tests, as it can hang when using runner machines which actually have devices present if those devices lock up 2022-11-29 15:31:51 -06:00
Adam Honse d625021eca Increment version number post-release 2022-11-29 14:06:29 -06:00
Adam Honse fb88964b8e OpenRGB version 0.8 2022-11-27 21:44:33 -06:00
Chris 18806706bd Swapping the Chinese Simplified and Chinese Traditional language labels. 2022-11-28 13:56:34 +11:00
TheRogueZeta b32bc8ac01 Reduce logging level of the plugin directory 2022-11-27 23:44:19 +00:00
TheRogueZeta ed123e8439 Add alternate ID for ASUS ROG-STRIX-RTX2080TI-11G-GAMING 2022-11-27 23:36:36 +00:00
Adam Honse 428692fa3a Basic i2c 2022-11-27 23:15:53 +00:00
Alexey Sokolov e0be60de21 Add ability for distro packagers to load plugins from package manager 2022-11-27 21:17:08 +00:00
flora 6da8171257 Support for MSI 6950XT NAVI21_DEV3 2022-11-27 18:43:04 +00:00
Flora Aubry 47a194e8cf Added missing french translations 2022-11-27 18:42:47 +00:00
Chris cdfaaceb7d Adding code to select the "System Default" language on first run.
* Fixes crash when `language` not present in config
2022-11-27 20:39:13 +11:00
Chris 0e96effc94 Adding Wave mode to Razer Mamba Elite to resolve #2874 2022-11-27 09:15:56 +00:00
Adam Honse 81cb2cb2bf Update README.md with changes from !1412 2022-11-27 03:09:05 -06:00
Adam Honse be90537d10 Fix warnings 2022-11-27 02:52:39 -06:00
Adam Honse 755ce20794 Fix 180 LED issue with SRGBMods Pi Pico controller 2022-11-27 02:03:45 -06:00
Adam Honse a7c2b7bd2c Fix MacOS build and incorrect string format in language change log 2022-11-26 23:56:40 -06:00
Chris 2e02f1d782 Adding ability to switch language files at runtime to resolve #2743
* Removing .qm files from Windows build as they are inbuilt as of a7adfe251
* Moving translation change code to the OpenRGBSettingsPage
* Adding a changeEvent() to applicable Widgets to facilitate language updates
* Workaround added to TabLabel to accomodate translation context origin
* Added zh_TW locale to OpenRGB.pro
* Updated all translations to include the latest untranslated strings
2022-11-27 04:07:30 +00:00
Adam Honse 530d667328 Add second SRGBMods Pi Pico string for updated code 2022-11-26 21:26:08 -06:00
TheRogueZeta 1c8b3a2d49 Add Asus TUF 6900XT T16G device ID 2022-11-27 01:22:54 +00:00
Aitor Astorga b2c3656b75 Implements MSI PRO B650M-A WIFI motherboard 2022-11-26 22:42:19 +00:00
thombo 0aabae5f41 New MSI boards 7D69, 7D91 and 7E06 added, direct mode for 7C81 enabled 2022-11-26 20:37:03 +01:00
TheRogueZeta 8f89863ab9 Update name for Gigabyte AORUS RTX2080 SUPER 8G Rev 1.0 2022-11-26 07:24:56 +00:00
flora 5b2016729b Fixed plugin link not opening 2022-11-26 08:13:42 +01:00
Chris 5912683ce7 Adding link to OpenRGB.org plugins in Plugin settings 2022-11-26 04:30:51 +00:00
Adam Honse 248b3e85b6 Don't delete the controller pointer in DeviceView destructor 2022-11-25 22:29:00 -06:00
TheRogueZeta c4d11993b6 Add logging for ADL GPU device ID's 2022-11-25 17:24:29 -08:00
Chris 7f6599658d Small fixes to the OpenRGB.pro file to improve list order 2022-11-26 00:34:26 +00:00
Chris 04127cb201 Resolves clamp is not a member of std error reintroduced in f8745221.
* Original issue in Debian Buster build https://gitlab.com/CalcProgrammer1/OpenRGB/-/jobs/3359116111#L207
2022-11-26 11:17:17 +11:00
Chris 085e1fca41 Initial commit for the Steelseries Apex 3 TKL to resolve #1902
* Combining the Apex3 Full size and TKL controllers
* Cleanup of controllers for readability and optimisation
2022-11-25 23:55:49 +00:00
Paul Konstantin Gerke df1c0a0dad Initial commit for SteelSeriesApex3TKLController to resolve #1902 2022-11-25 23:55:49 +00:00
Mola19 88136152fc support for ASUS ROG Strix XG27AQM 2022-11-25 20:15:00 +01:00
flora c9af45bf92 Edited resize popup so it does not break anymore when resizing 2022-11-25 04:21:15 +00:00
flora 8465d78b7b Fixed incoherence in information tab and changed a bit the ui 2022-11-24 20:14:21 +01:00
Chris 455a1f9172 Adjust Windows Logitech Lightspeed detection to resolve #2621
+ Changing to IPU detector to ensure 1 hit (per device)
+ Bundling all usages on Interface 2
2022-11-24 18:22:14 +00:00
Chris f8745221d4 Added string indexing to -d option to resolve #2854
+ Added zone to `options.device` in cli.cpp
+ replace current_device & current_zone references in parser with
temporary device vector
+ Changed code to accomodate
2022-11-24 18:20:35 +00:00
Chris 40f09406d0 Re-timing DeviceView set up to avoid crash resolving #2564
* Allowing the paintEvent to drive the initial setup of the DeviceView to delay accessing controller features during OpenRGB initialisation.
2022-11-24 09:06:42 +11:00
Chris 1ff192bda2 Resolves clamp is not a member of std error with Buster build.
* https://gitlab.com/CalcProgrammer1/OpenRGB/-/jobs/3359116111#L207
2022-11-23 21:38:33 +11:00
flora ce5ab1ccf1 Added autofillbackground to frames 2022-11-22 01:08:38 +00:00
Chris M 32015f1bcb Added -b & --brightness parameters to resolve #2854
* Added the ability to set mode brightness from the command line
2022-11-21 10:28:01 +11:00
Mola19 e1ee139691 Adding layout detection for Roccat Vulcan 120-Series Aimo 2022-11-20 01:32:06 +01:00
Flora Aubry 541b9433b3 Added support for colorful 3070ti 2022-11-18 17:29:58 +00:00
Chris de3d2c7e22 Initial commit for the Corsair K60 RGB PRO to resolve #1240
+ Adding K60 and K60 Low Profile PID to CorsairPeripheralV2Devices.h
+ Adding device layout
+ Registering detector
+ Adding pointer layout map and changing calls to accomodate.
2022-11-18 17:26:25 +00:00
Joseph East a1be27ad61 Remove null terminations in fwver string when reading from Steelseries Apex keyboards. 2022-11-18 22:21:09 +10:30
Jan Baier 6cb1169801 Initial commit for Genesis Thor 300 RGB (Sinowealth based) keyboard 2022-11-17 04:30:24 +00:00
Defend 5b57e7f84f Move Gigabyte RTX 3060Ti LHR 8G GPU to Gigabyte Fusion 2 GPU Controller detector
Commit amended to remove old location in Fusion GPU Controller and clean up merge by Adam Honse <[email protected]>
2022-11-16 18:06:49 -06:00
morg 2fc15e1da4 E1.31 settings: correctly fill matrix height input 2022-11-15 11:32:03 +01:00
TheReal Monkey 0b9825ca19 Adding Elgato Keylight
Code style changes by Adam Honse <[email protected]>
2022-11-14 23:36:02 -06:00
Mola19 a64894445d support for Asus ROG Gladius III to resolve #2872 2022-11-14 14:04:11 +00:00
Adam Honse 0d545fa9e3 Reverse order of LEDs in ring zone 2022-11-12 21:56:03 -06:00
Adam Honse ecc837b565 Get both direct and effect modes working together 2022-11-13 02:58:55 +00:00
Adam Honse b760ffc085 Implement direct mode for AMD Wraith Prism, other functionality is removed for now 2022-11-13 02:58:55 +00:00
Chris 15698547b0 Adding Intel Raptor Lake Motherboard SubID 2022-11-12 17:51:12 +11:00
Thomas Boos f5b4fe1830 New MSI boards and some cleanup 2022-11-11 17:25:15 +00:00
Michael Oberpriller 0bae5e0def Fixed Logitech G213 Inconsistent Lighting Changes 2022-11-09 13:43:00 +00:00
Chris M 52b369a2e8 Adding MSI 3060 Gaming X 12G GPU to resolve #2864
* Registered detector in `MSIGPUControllerDetect.cpp`
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3060-
GAMING-X-12G)
2022-11-09 02:14:19 +00:00
Peter Vazny 6890f2f71a Change keyboard map for Y750,Y750S,Y760,Y760S 2022-11-08 17:28:04 +00:00
Adam Honse ca49748603 Hide device view when a mode that doesn't have per-LED is active 2022-11-07 09:24:27 -06:00
Mola19 11bc9d6521 fix device category for Asus Cerberus Mech 2022-11-07 15:11:21 +01:00
Matthew Lloyd e214cfbc5c Add NVIDIA 4090 Founders Edition 2022-11-06 21:12:19 -05:00
Joseph E 2bb27223f4 Multi-region SKU support for Steelseries Apex Pro 2022-11-06 03:07:59 +00:00
cafeed28 d5c1402c30 Add Red Square Keyrox TKL support 2022-11-05 15:03:47 +05:00
Kirill Boyarshinov 57910fc981 Add SteelSeries Qck Prism XL CS:GO Neon Rider edition 2022-11-05 04:04:39 +00:00
morg 0933eb0db4 Add EVGA GeForce GTX 1080 FTW2 Gaming variant 2022-11-04 19:53:51 +01:00
Adam Honse 182966768d Include <algorithm> in IntelArcA770LEController.cpp for std::max 2022-11-04 11:27:07 -05:00
Mola19 5c0660091f support for asus rog claymore to resolve #923 2022-11-03 16:55:10 +00:00
roycwc 3146d8def4 Add Razer Ornata V3 2022-11-03 11:45:26 -05:00
1 dd5934b18c Added PNY XLR8 OC EDITION RTX 2060 2022-11-03 16:36:18 +00:00
flora de6c3879cc Support for MSI 2080TI Z TRIO 2022-11-03 16:35:01 +00:00
Flora Aubry e884a4e6c1 Support for ASUS ROG STRIX 1050TI non OC Closes #2852 2022-11-03 16:33:51 +00:00
Adam Honse 6a457896aa Initial support for Intel Arc A770 Limited Edition RGB controller 2022-11-02 17:21:06 -05:00
Flora Aubry f9bacba037 Support for colorful RTX 3060 Closes #2625 2022-11-01 20:27:53 +00:00
flora 5d64a4ff7c Support for colorful 3070 variant 2022-11-01 13:49:56 +01:00
Joseph E 0de010a009 Add Korean/Japanese/Nordic key names to RGBController 2022-10-31 23:56:42 +00:00
Marcelo Bezerra dc28e6748c Add non-OC ASUS RTX 4090 TUF 2022-10-31 20:41:58 +00:00
Royal~Jelly 88f46d3b85 Update for Asus Strix Scope TKL keyboard variant. 2022-10-31 17:44:39 +00:00
Peter Vazny ccdf1af948 Lenovo - layout detection fix, additional logging, LED id fixes 2022-10-30 19:30:05 +00:00
morg 3b9f06b10b Implemented ColorfulGPUController to support iGame 3070. Closes #2841 2022-10-30 19:18:24 +00:00
Flora Aubry 4d4c18f1ef Support for AORUS 2080 SUPER Variant 2022-10-27 16:25:24 +00:00
Mola19 694e150c53 support for Asus Cerberus Mech 2022-10-27 04:46:30 +00:00
Marcelo Bezerra b3d787ddc4 Enable MSI TRX40 PRO WIFI support 2022-10-27 03:00:29 +00:00
Flora Aubry fbbcf83bf7 Add MSI Gaming X TRIO RX6900XT variant 2022-10-26 19:28:02 +00:00
Marcelo Bezerra a27e16e04b Add support for ASUS TUF RTX 4090 GAMING OC 2022-10-26 13:18:00 +00:00
Teemu Linkoaho 972f9001bd Add ASUS TUF RX6700XT O12G GAMING 2022-10-25 19:18:54 +00:00
morg 467f7d016f Add support for ASUS ROG STRIX RX470 Gaming 2022-10-25 19:15:59 +00:00
morg 77aa9f4ea1 Add support for HyperX Alloy Origins Core PID variant 2022-10-25 15:07:43 +02:00
Frederik Madsen 838164e549 Added functionality to get device/keyboard information for Razer devices
Amended to remove out-of-scope changes, rebase to master, and update all Razer keymaps by Adam Honse <[email protected]>
2022-10-24 22:40:18 -05:00
Katherine 47bebc0616 Attempt to add support for Corsair K70 LUX (Non-RBG) 2022-10-24 22:58:32 +00:00
Gabriel 7bc1bb16be Fix inverted brightness handling when updating UI 2022-10-24 21:02:45 +00:00
Gabriel 62317408cf Fix Alienware color updating 2022-10-24 20:54:31 +00:00
Derek Huber 79471ad42c HyperX Alloy Origins 60 initial commit 2022-10-24 16:37:56 +00:00
flora c1cca4ced4 Fixed column stretch to maintain ui ratio 2022-10-24 10:19:52 +02:00
TheRogueZeta 08071fd6a2 Add recomended VSCode extensions 2022-10-23 17:58:36 -07:00
Flora Aubry 1a10ea79aa Added some changes to device tab UI 2022-10-23 16:25:18 +00:00
rom4ster 31c24eb649 Initial commit for the Steelseries Aerox 9 2022-10-22 23:53:13 +00:00
Thomas Boos c7326f73a3 Detection of MSI 156x devices made working for all types (fixes #2802) 2022-10-22 19:13:28 +00:00
morg 2ba69fc2e9 Add support for MSI GeForce RTX 2070 SUPER ARMOR OC 2022-10-22 06:04:23 +00:00
flora 77958d2667 Added and renamed corsair K100 variant 2022-10-21 20:18:02 +00:00
Codename-Antares ae8f40db00 Add Type Keypad & Tartarus Pro Layout for Razer 2022-10-21 16:52:09 +00:00
Flora Aubry 525f561b6e Added support for B360M AORUS Gaming 3-CF 2022-10-21 13:08:19 +00:00
morg 97acf8ac1d Use the correct case for pt_BR translation file 2022-10-21 06:25:21 +02:00
Gabriel Felipe 73f00c27d5 Add Brazilian Portuguese translation 2022-10-21 00:24:23 +00:00
Alex Zoboo e397d89886 Update PNYGPUControllerDetect.cpp 2022-10-20 16:40:32 +00:00
Chris M 204ad90ec7 Minor spelling correction to HyperX meta data
* Correcting the metadata names for the HyperX Pulsefire Dart and Raid.
2022-10-20 16:38:50 +00:00
Codename-Antares 7f690b7027 Initial Support for My lovely new Razer Strider Chroma 2022-10-20 16:37:45 +00:00
Chris dbad6ce90d Updating pipeline Windows QT5 downloads
* Win32 and Win64 QT5 packages in pipeline now point to generic package registry
2022-10-15 09:10:26 +11:00
Shady Nawara 6f477d6c4c Shared SMBus Access Using Global Mutex on Windows 2022-10-14 00:58:54 +00:00
Chris M be90ba335e Initial commit for the Coolermaster ARGB Gen2 A1 V2
* Adding new PID and registering detector in
CoolerMasterControllerDetect.cpp
* Resolves #2783
2022-10-14 07:26:53 +11:00
Oliver P 52c510dca9 Add support for Lian Li Uni Hub - AL firmware v1.0 and v1.7 2022-10-13 17:36:34 +00:00
TheRogueZeta 238c704f57 Initial commit for EVGA 3070ti FTW3 Ultra v2 device ID 2022-10-13 16:43:37 +00:00
Teemu Linkoaho c5cad07319 Fixed AMD Radeon RX 6900 XT device ID. 2022-10-12 18:39:03 +00:00
Adam Honse c3c57d1f37 Change to a different qt mirror 2022-10-11 17:36:27 -05:00
TheRogueZeta 37fe5ab68d Revert !1216 and add device ID for EVGA RTX3070 TI XC3 Ultra v2 2022-10-11 18:02:50 +00:00
morg c14f26e4d5 Add support for Gigabyte 2080ti GAMING OC 11G 2022-10-11 18:00:47 +00:00
TheRogueZeta 27440d52e0 Initial commit for EVGA 3080 FTW3 Ultra LHR v2 device ID 2022-10-11 17:53:35 +00:00
TheRogueZeta afbb2a0064 Initial commit for ASUS ROG STRIX RTX 3080 12G 2022-10-11 17:46:18 +00:00
TheRogueZeta ff35373c38 Remove redundant memory sizes in AsusAuraGPUControllerDetect.cpp 2022-10-11 17:30:28 +00:00
TheRogueZeta 30ea9e73e8 Add alternate ID for Asus Rog Strix RTX 2060 O6G 2022-10-11 17:30:28 +00:00
TheRogueZeta f1b47de46f Initial commit for Gigabyte RTX3060 EAGLE 12G LHR V2.0 device ID 2022-10-10 21:53:12 -07:00
morg 81c8b82d0b Add hyperx alloys origin new vid/pid (firmware update) 2022-10-10 20:00:57 +00:00
TheRogueZeta dcbe64c288 Initial commit for ASUS ROG STRIX RTX 3080 10G V2 device ID 2022-10-10 20:00:14 +00:00
thombo b45853d885 Retrieve MSI board configuration on startup 2022-10-08 15:50:04 +02:00
Ethan Stevenson 51e99d7363 Fix name of Cooler Master 750 keyboard
Commit amended by Adam Honse <[email protected]>
2022-10-03 11:31:31 -05:00
Adam Honse b4ea36f997 If read byte fails, use read byte data for detecting ENE controller
* The Nuvoton NCT6793D Super-IO SMBus controller does not actually support read byte or quick operations.  The driver used for Windows and in the OpenRGB kernel patch will perform a read byte data operation in its place with a dummy address, but the driver I'm submitting upstream is not going to have this hack.  All controllers that could be used on a Nuvoton SMBus will need a detection path that doesn't rely only on byte read or quick operations.
2022-10-03 00:11:41 -05:00
Chris 572d1d2416 Correcting Fedora links to resolve #2773 2022-10-02 14:49:35 +11:00
morg aafac9862a Add HyperX Pulsfire mousemat support 2022-10-01 19:25:57 +00:00
Chris 615d793912 Adjusting build-supported-devices-md.sh for website deployment
* Changing wiki characters to Unicode equivalents
* Removing whitespace from links
2022-10-01 17:04:12 +10:00
Rodrigo Henrique 86758e39f1 Initial commit for KFA2 RTX 2080 Super EX OC 2022-09-30 19:08:41 +00:00
Adam Honse a6cbde0bcc Remove RX6900XT from AsusAuraGPUController as it is actually an ENE based GPU and shares its ID with the RX6800XT just added 2022-09-30 11:21:47 -05:00
Adam Honse 6341d629d8 AMD ADL SMBus improvements
* Allow word (2 byte) transfers
  * Fix block writes not sending data size
2022-09-30 09:42:19 -05:00
Adam Honse f4f97c61ea Add ASUS TUF RX 6800XT O16 GAMING to ENESMBusController 2022-09-29 11:49:31 -05:00
Chris M 8f2b33ce3e Initial commit for Gigabyte RTX3070 MASTER 8G LHR to resolve #2761
* Registering detector in GigabyteRGBFusion2GPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-
N3070AORUS-M-8GD-rev-20)
2022-09-28 19:50:45 +10:00
nomeat 3a251e1e47 Initial commit for Cooler Master MM730 2022-09-27 22:07:22 +00:00
Codename-Antares 57cb3ef9cd Initial Implementation for a MSI GPU FPS Limiter (tested and working)
Commit amended for code style by Adam Honse <[email protected]
2022-09-27 11:36:07 -05:00
Aleš Nezbeda 2603dbe4ab Fix profile not being applied when I2C bus ID changes on reboot 2022-09-27 02:29:59 +00:00
Teemu Linkoaho c1d7daf8c0 Adding ASUS TUF RX 6900 XT OC GPU 2022-09-25 20:46:36 -05:00
Adam Honse 3219dbfdc4 Fix read() warnings 2022-09-25 19:39:22 -05:00
Thomas Boos bf7f470dc5 Support for more ARGB LEDs in Per-LED mode for MSI boards added 2022-09-25 19:45:40 +00:00
Adam Honse 19218f4513 Fix warnings in cli.cpp 2022-09-25 01:03:25 -05:00
Adam Honse dff6b0e494 Fix warning in RGBController_GigabyteRGBFusion2USB.h 2022-09-25 00:11:44 -05:00
Gwen b75e3af5dc Add GV-N3090AORUSX W-24GD Support 2022-09-25 03:44:40 +00:00
Adam Honse 9aa4b5b817 Fix warning in RGBController_Debug.cpp 2022-09-24 22:25:50 -05:00
Adam Honse ab918dada0 Fix warning in RGBController_Sinowealth1007.cpp 2022-09-24 21:14:03 -05:00
Adam Honse ece626828a Fix warnings in RGBController_QMKOpenRGBRevE.cpp 2022-09-24 20:31:49 -05:00
Adam Honse 4b575a780a Fix warnings in RGBController_QMKOpenRGBRevD.cpp 2022-09-24 20:28:29 -05:00
Adam Honse fad91f9a46 Fix warnings in RGBController_QMKOpenRGBRevB.cpp 2022-09-24 17:47:43 -05:00
Adam Honse d68831a116 Fix warning in SteelSeriesSenseiController.cpp 2022-09-24 12:12:51 -05:00
Adam Honse 7f3d4f0dfb Fix warning in SteelSeriesOldApexController.cpp 2022-09-23 22:35:45 -05:00
Adam Honse f6bd67c5a3 Fix warnings in RGBController_SinowealthGMOW.cpp 2022-09-23 22:24:37 -05:00
Adam Honse 75f3f3a3cb Fix warnings in RGBController_QMKOpenRGBRev9.cpp 2022-09-23 18:01:34 -05:00
Adam Honse 20cc60c901 Fix warning in NZXTHuePlusControllerDetect.cpp 2022-09-23 17:58:13 -05:00
Adam Honse f4dd9135dc Fix warnings in LogitechProtocolCommon.cpp 2022-09-23 17:14:37 -05:00
Adam Honse f5ddbed890 Fix warning in LogitechProtocolCommon.h 2022-09-23 17:14:37 -05:00
Peter Vazny 89a6abd9ed Adds support for Lenovo Legion Y740 15" and 17" 2022-09-23 19:10:42 +00:00
Adam Honse b198a6db21 Fix warning in StrimerLConnectController.cpp 2022-09-23 12:46:00 -05:00
Adam Honse db070be161 Fix warning in RGBController_LenovoUSB.cpp 2022-09-23 12:44:53 -05:00
Adam Honse 86eb4dd2e2 Fix warnings in LianLiUniHubController.cpp 2022-09-23 12:44:07 -05:00
Adam Honse e30fdb06d1 Fix more warnings in GigabyteRGBFusion2GPUController.cpp 2022-09-23 12:42:33 -05:00
Adam Honse c4902b7476 Fix warnings in GigabyteRGBFusion2GPUController.cpp 2022-09-21 19:34:08 -05:00
Adam Honse ae350f23a4 Fix warnings in RGBController_GigabyteRGBFusion2GPU.cpp 2022-09-21 19:26:16 -05:00
Adam Honse 54b3828e52 Fix warning in GaiZhongGaiKeyboardController.cpp 2022-09-21 19:24:53 -05:00
Adam Honse 186dd2b672 Fix warning in EVGAKeyboardController.cpp 2022-09-21 19:23:48 -05:00
Adam Honse b84ca30a14 Fix warnings in CorsairPeripheralV2Controller 2022-09-21 12:42:20 -05:00
Adam Honse e51b4ce324 Fix multiply defined warnings in CorsairPeripheralV2Devices controller 2022-09-19 23:14:02 -05:00
Peter Vazny 91879cd063 2502 - adds Lenovo Legion 7 gen 5, Slim 7 gen 5 and Slim 7 gen 6 2022-09-19 16:36:20 +00:00
Tony Stipanic a876d7b120 Add support for Sapphire Radeon RX 6950 XT Nitro+ 2022-09-17 17:10:11 +00:00
Adam Honse ecdb1c8c50 Add another NZXT motherboard ID to Hue 2 controller 2022-09-16 20:31:17 -05:00
Adam Honse a82a6e96ed Fix warnings in RGBController_EVGAGPUv3.cpp 2022-09-16 12:08:11 -05:00
Adam Honse c84cf9392f Fix warning in EVGAGPUv3Controller.cpp 2022-09-16 12:07:56 -05:00
Adam Honse 48b819218d Fix warning in RGBController_EVGAGP102.cpp 2022-09-16 12:07:41 -05:00
Adam Honse 0a1306aefa Turn off explicit fallthrough warning in Linux (GCC) 2022-09-16 12:07:26 -05:00
Adam Honse 541819dd79 Fix warning in CorsairPeripheralV2Controller.cpp 2022-09-16 12:07:09 -05:00
Adam Honse c177016801 Fix multiply defined warning in CM Small ARGB Controller 2022-09-16 12:06:51 -05:00
Adam Honse de1d62cef2 Fix warning in RGBController_CorsairK100.cpp 2022-09-15 19:16:53 -05:00
Adam Honse 75104ba424 Fix error from multiply defined name across different files 2022-09-15 18:21:46 -05:00
Ryan Frankcombe 777d292c7c Initial commit for Gigabyte Super-IO motherboard controller (X570-UD) 2022-09-15 22:40:13 +00:00
Adam Honse e855e19a09 Fix warnings in RGBController_CorsairK100.cpp 2022-09-15 11:41:52 -05:00
Adam Honse 34fc9fbdee Fix warnings in RGBController_AsusAuraKeyboard.cpp 2022-09-15 11:33:08 -05:00
Adam Honse 211bc2359f Fix warning in OpenRGBNanoleafScanningThread.cpp 2022-09-15 11:27:16 -05:00
Adam Honse 219483267c Fix MacOS warning in NetworkClient.cpp 2022-09-14 23:14:55 -05:00
Adam Honse 8bf6514ae3 Fix warnings in Corsair Peripheral V2 Controller 2022-09-14 23:03:33 -05:00
Adam Honse efc9c1fa38 Fix warnings in RGBController_CMR6000Controller.cpp 2022-09-14 22:57:30 -05:00
Adam Honse b027de02a3 Fix warnings in RGBController_CMMMController.cpp and RGBController_CMMM711Controller.cpp 2022-09-14 22:53:29 -05:00
Adam Honse 4ff5e8c9cf Fix warning in ROGStrixLC_Controller.cpp 2022-09-14 22:49:37 -05:00
Adam Honse a1b3a805e4 Fix warning in AsusAuraRyuoAIOController.cpp 2022-09-14 22:46:08 -05:00
Adam Honse e9cf78cb7f Fix warning in AsusAuraMouseController.cpp 2022-09-14 22:43:29 -05:00
Adam Honse 19459edbc9 Fix warning in OpenRGBDevicePage.cpp 2022-09-14 22:38:50 -05:00
Adam Honse c0cb942ea7 Fix warning in cli.cpp 2022-09-14 22:34:30 -05:00
Shayne Hartford 7836a637b9 New Wooting PIDs 2022-09-15 01:48:07 +00:00
Mola19 15757d2736 Adjusting metadata for Asus Strix Claw to fix supported devices list 2022-09-14 01:09:48 +02:00
thombo 295adfb3e7 Support for MSI board 7D19 added and configuration for 7D15 and 7D59 corrected 2022-09-11 19:33:01 +02:00
XPRAMT f44cd6919f Added support for Traditional Chinese internationalization 2022-09-07 21:09:37 +00:00
Flora Aubry 2fc79a8e93 Add support for Sapphire Toxic 6900xt variant 2022-09-07 21:05:10 +00:00
Tiago Oliveira ae460fa10a Add device ASUS TUF RX6800 OC to GPU vendor list 2022-09-06 00:16:01 +00:00
Chris 6d7aa82b8b Adjust Razer meta data to reflect changes in commit cc1a9212b 2022-09-05 09:50:13 +10:00
Adam Honse cc1a9212b4 Update unknown type Razer devices to valid types 2022-09-04 23:23:10 +00:00
Adam Honse bbaac044df Move Razer constant data to a cpp file to fix multiple definition warnings 2022-09-04 20:44:28 +00:00
Thomas Boos e4262af2e7 Support for MSI boards 7D36 and 7D43 added, configuration for MSI board 7D09 corrected (fixes #2643 and #2711) 2022-09-04 20:24:00 +00:00
nick black 99cd322721 i2c_smbus_linux: closedir() on error path 2022-09-03 03:08:33 -04:00
Chris c69a8d15f2 Correcting regression bug in metadata caused by commit 20286c285 2022-09-02 23:31:38 +10:00
Chris c1f57477e8 Adding MSI 3090Ti Gaming X Trio 24G GPU to resolve #2717
* Added card id `0x5091` to pci_ids.h
* Registered detector in `MSIGPUControllerDetect.cpp`
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3090-Ti-GAMING-X-TRIO-24G)
2022-09-02 12:52:38 +10:00
SjG 4a47d33e5f Add Gainward RTX 3080 Ti Phoenix 2022-09-01 10:31:05 +00:00
Adam Honse 8dd50f4cd7 Fix error 2022-08-31 20:20:10 -05:00
Chris 9fe664ee72 Adding DEVICE_TYPE_ACCESSORY to enum
+ Adding Accessory icons for light and dark theme
+ Adding entry into OpenRGBDialog2 to display icon
+ Creating `Accessory` category in "Supported Devices"
2022-09-01 05:19:09 +00:00
Adam Honse 03d99d135c Address a bunch of warnings 2022-08-31 19:16:57 -05:00
Elchanan Haas e7c385bd71 Add support for MSI GL66 2022-09-01 03:24:51 +00:00
Matt Silva 7c227108bb Sinowealth detector: fix for rgb controller not being added when USE_HID_USAGE isn't defined 2022-09-01 03:22:30 +00:00
flora f53173c55b Add ASUS STRIX 3070 O8G OC non LHR 2022-09-01 03:21:14 +00:00
Codename-Antares 30ff0f04e6 Fix wrong Assinged Keymap ID for Apex Keyboard 2022-09-01 03:19:23 +00:00
Chris 1f6580ebc5 Fixing regression bug caused by DELIMITER change in the supported devices script
+ Adding ability to manually run "Supported Devices" job
+ Changing `Delimiter` from UTF8 to ASCII character
2022-09-01 03:14:37 +00:00
Codename-Antares ec6a19eef9 change name of StrimerLConnect 2022-09-01 03:13:47 +00:00
Niels Westphal 053a492b0a Add Gainward RTX 2080 2022-08-29 15:59:54 +00:00
crashniels 09789de591 Add ID for KFA 2080 TI EX OC 2022-08-29 01:02:30 +02:00
Thomas Boos 6d1f8967a0 Support for Corsair K55 RGB PRO XT (fixes issue #2555) 2022-08-27 19:13:42 +00:00
Chris 38dd53b945 Initial commit for the Gigabyte 3060 EAGLE OC 12G GPU
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N3060EAGLE-OC-12GD-rev-10#kf)
2022-08-27 04:29:13 +00:00
Chris 116d6c4282 Initial commit for the Sapphire 6900 XT Nitro+ GPU to resolve #2710
+ Added card id `0x440E` to pci_ids.h
+ Register detector in SapphireGPUControllerDetect.cpp
+ Link to [webpage](https://www.sapphiretech.com/en/consumer/nitro-radeon-rx-6900-xt-se-16g-gddr6)
2022-08-27 11:12:35 +10:00
Chris 09ef1689dc Adding EVGA 3090Ti FTW3 Ultra Gaming GPU
* Added card id `0x4985` to pci_ids.h
* Registered detector in `EVGAAmpereGPUControllerDetect.cpp`
* Link to [webpage](https://www.evga.com/products/product.aspx?pn=24G-P5-4985-KR)
2022-08-23 13:49:40 +00:00
Chris 8f3ed4c869 Initial commit for the ASUS Strix RTX 3070 O8G V2 White GPU to resolve #2697
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/us/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx3070-o8g-white-model/)
2022-08-23 13:44:43 +00:00
Thomas Boos 8c315f5e6e Update hidapi to version 0.12.0. Direct mode stabilization of Logitech G203 Lightsync (fixes #877). 2022-08-23 13:42:15 +00:00
Chris 8fb373a851 Correct Corsair V2 peripheral Detector metadata to resolve #2690 2022-08-23 04:06:35 +00:00
Chris fe98af43ee Changing automatic Faustus udev rules to resolve #2695 2022-08-23 04:05:50 +00:00
Alexey Sokolov 1d5faef123 Fix build with latest nlohmann json lib 2022-08-23 04:05:30 +00:00
Peter Vazny 044917e2f1 Lenovo refactor - adds framework for detecting keyboard layout 2022-08-22 18:48:06 +00:00
Yanzgz 8bb77e1715 Added support for Chinese internationalization 2022-08-22 14:56:06 +00:00
Adam Honse 64199ec939 Remove SetCustomMode from GaiZhongGaiKeyboardController 2022-08-21 23:09:18 -05:00
Yanzgz 68df4d4b00 [New Device/Implements] CH551G open source keyboard (Rebase) 2022-08-22 03:26:17 +00:00
Adam Honse 389cdf340f Allow mode specific color mode for SetCustomMode 2022-08-21 22:08:23 -05:00
Adam Honse 1396cc8f92 Remove SetCustomMode from all controllers beginning with the letters V, W, Y, and Z 2022-08-21 21:37:21 -05:00
Adam Honse 9d7fef5bbc Remove SetCustomMode from all controllers beginning with the letter T 2022-08-21 21:26:41 -05:00
Adam Honse 126e5f4341 Remove SetCustomMode from all controllers beginning with the letter S 2022-08-21 19:31:01 -05:00
Adam Honse 66c856f49a Remove SetCustomMode from all controllers beginning with the letter R 2022-08-21 18:23:34 -05:00
Adam Honse 933370537d Remove SetCustomMode from all controllers beginning with the letter Q 2022-08-21 17:44:31 -05:00
Adam Honse 215183f9c5 Remove SetCustomMode from all controllers beginning with the letter P 2022-08-21 16:24:44 -05:00
Adam Honse bc1ba87e13 Remove SetCustomMode from all controllers beginning with the letter N 2022-08-21 16:04:10 -05:00
Chris 07f55095d5 Adjusting the Razer Huntsman V2 key layout to resolve #2673
* Adding `huntsman_v2_device` to device list
* Regression bug introduce with 942a842a
2022-08-18 00:20:32 +10:00
Chris 8926d29300 Initial commit for Razer Deathadder Essential V2 to resolve #2651
+ Added PID entry for the Deathadder Essential V2
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
+ Added `GetMaxBrightness()` to account for difference in brightness value
2022-08-15 20:08:47 +00:00
Adam Honse 3ac70cd8a6 Fix string in log 2022-08-15 15:07:33 -05:00
Chris 3a71b76075 Initial commit for the Corsair MM700 to resolve #1718
+ Adding CorsairPeripheralV2Controller base class
+ Adding CorsairPeripheralV2Devices.h metadata file
+ Renaming CorsairK55RGBPROController to CorsairPeripheralV2SWController
+ Adjusting CorsairPeripheralV2SWController to accomodate base class changes
+ Renaming RGBController_CorsairK55RGBPRO to RGBController_CorsairV2SW
+ Adjusting RGBController_CorsairV2SW to handle device set up from meta data
+ Adding PID `0x1B9B` and registering detector in CorsairPeripheralV2ControllerDetect.cpp
2022-08-15 12:43:49 +10:00
Adam Honse 9caf7802ed Remove SetCustomMode from all controllers beginning with the letter M 2022-08-14 18:49:41 -05:00
Mike C 69f916c389 Add Support for Asus ROG Strix XG27W Gaming Monitor 2022-08-14 23:26:08 +00:00
Adam Honse 6f1e76c8b1 Remove SetCustomMode from all controllers beginning with the letter L 2022-08-14 13:24:38 -05:00
Adam Honse b6b59db12f Remove SetCustomMode from all controllers beginning with the letter K 2022-08-14 13:08:43 -05:00
Christopher Wróbel 10f9bf4441 Add missing german translation for settings 2022-08-14 17:19:51 +00:00
Adam Honse 35e049a8bb Remove SetCustomMode from all controllers beginning with the letter H 2022-08-14 01:55:19 -05:00
Adam Honse 94603fbfb9 Remove SetCustomMode from all controllers beginning with the letters F and G 2022-08-14 01:44:30 -05:00
TheRogueZeta 27d1831035 Initial commit for EVGA 3080 FTW3 12GB Hydro Copper 2022-08-12 00:19:22 -07:00
Adam Honse 859f15a5b4 Remove SetCustomMode from all controllers beginning with the letter E 2022-08-11 20:18:45 -05:00
Adam Honse 100e6ddb2a Remove SetCustomMode from all controllers beginning with the letter D 2022-08-10 16:04:23 -05:00
Adam Honse f8916f2bcb Remove SetCustomMode from all controllers beginning with the letters B and C, except Cooler Master 2022-08-10 09:52:38 -05:00
Adam Honse eab96d1b36 Remove SetCustomMode from all controllers beginning with the letter A 2022-08-09 22:58:40 -05:00
Adam Honse 58b1a29076 Remove SetCustomMode from some controllers (the ones in my PC) 2022-08-09 21:07:22 -05:00
Adam Honse afb975e5fc Add generic implementation of SetCustomMode to RGBController class 2022-08-09 20:49:38 -05:00
Adam Honse 3af17b6d8e Apply changes from \!1275 code review 2022-08-09 19:06:51 -05:00
Shaun McThomas 8b02484456 Create "Direct" Mode for ASRock Polychrome USB device. 2022-08-09 23:59:04 +00:00
Chris 6292ee1664 Initial commit for the Cougar 700K EVO Keyboard to resolve #2310
* Adding entry for the Cougar 700K EVO VID & PID
* Registered detectors
* Creating CougarKeyboardController class
* Creating RGBController_CougarKeyboard class
2022-08-09 18:43:18 +00:00
Chris cac67592b7 Correcting the metadata for the Logitech x56 HOTAS to resolve #2574
* Changing detector to IPU to remove duplicate detection
+ Adding Save() method to controller
+ Adding Brightness
2022-08-09 18:24:12 +00:00
Chris 4f649795b3 Fixing regression to the DetectCoolerMasterMouse callback made in f33fc268
* Changed the `if` to a `switch case` to correct the MM720 triggering the callback but not creating a controller.
* Code cleanup and readability changes.
* Related to !1116
2022-08-09 20:58:22 +10:00
Mola19 f637d64dcb Support for Asus Strix Claw 2022-08-08 15:06:53 +00:00
Chris f1860bf742 Initial commit for Razer Naga Classic to resolve #2646
+ Adding PID entry for the Naga Classic
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
2022-08-08 23:28:30 +10:00
MOVZX b1f560d28d Add support for MSI Radeon RX 6900/6950 XT Gaming X Trio 2022-08-08 02:27:13 +00:00
Chris 1c1bfee727 Initial commit for the Asus ROG Strix SCAR 15 to resolve #2622
+ Adding AsusAuraCoreLaptopController and RGBController_AsusAuraCoreLaptop
+ Adding PID `0x19B6` and registering detector in AsusAuraCoreControllerDetect.cpp
2022-08-08 09:38:10 +10:00
Chris 4d7fe885c9 Adding a name to the LIFX controller 2022-08-08 02:02:43 +10:00
Chris 223ec45a75 Adding Laptop Stand Chroma Device to razer device list. 2022-08-06 19:56:48 +00:00
Chris 95f7cc1010 Initial commit for 3 versions of the Gigabyte 3060 Vision OC 12G GPU to resolve #2393
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N3060VISION-OC-12GD-rev-20)
2022-08-06 19:43:32 +00:00
Chris be4c4bfabe Adjusting Blackwidow V3 key map layout to resolve #2583 2022-08-06 19:42:35 +00:00
MOVZX ecdad8c3de Add support for MSI Radeon RX 6700 XT Gaming X & MSI Radeon RX 6800 XT Gaming X Trio 2022-08-06 19:40:43 +00:00
morg 551c30e6e6 Add support for PNY GeForce RTX 3080 10GB XLR8 Gaming REVEL EPIC-X RGB 2022-08-03 14:38:56 +00:00
reklrekl f46d86303c Add ISO keycodes 0x32 and 0x64 to QMK controller 2022-08-03 14:38:12 +00:00
Vladimir fef0bfe3bd Switched from C-style arrays to std::vector to fix C++17 std::size() not being available on some Linux dists to fix !1343 build failures 2022-08-03 02:14:27 +00:00
Chris 102d7cecef Initial commit for Razer Laptop Stand Chroma to resolve #2638
+ Adding PID entry for the Laptop Stand Chroma
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
2022-08-02 21:05:03 +00:00
Chris 864422b4bc Fixing regression from 942a842a
+ Adding ZONE_EN_KEYBOARD constant char* to KeyNames
+ Replacing declarations of "Keyboard" zone with new constant char*
+ Adding "Keyboard" zone check RGBController_Razer.cpp before hiding keys
2022-08-02 21:03:28 +00:00
edbgon 2fae06a49a Add HID to Logitech Lightspeed location string so that profile loading is successful. 2022-08-02 16:25:54 +02:00
morg 5ad475befe Add support for PNY GeForce RTX 3060 Ti XLR8 variant 2022-08-01 10:23:13 +02:00
Vladimir 153c1579b5 Fix RGBController_MSIGPU's interaction with mode speed and brightness values to resolve #2637 2022-07-31 06:55:00 +00:00
Min Gu Kang f511ceac14 Initial commit for Glorious Model D Wireless 2022-07-31 06:53:33 +00:00
Carter Miller d918917c73 Removing some duplicated code and comments from NvAPI Illumination Controller, likely result of some git issue (my fault) during original merge 2022-07-31 06:52:54 +00:00
cmill f5f4040f58 Added support line for GA104 version of PNY 3060 XLR8 Revel Epic-x 2022-07-31 02:10:10 +00:00
Chris 306d9cc8ea Initial commit for the Gigabyte RTX 3070 Vision OC 8G LHR GPU to resolve #2639
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N3070VISION-OC-8GD-rev-20#kf)
2022-07-30 17:25:55 +10:00
Chris 6b55bbc8aa Adding MSI 6600XT Gaming X 8G GPU to resolve #2384
* Added card id `0x5020` to pci_ids.h
* Registered detector in `MSIGPUControllerDetect.cpp`
* Link to [webpage](https://www.msi.com/Graphics-Card/Radeon-RX-6600-XT-GAMING-X-8G)
2022-07-29 11:58:31 +10:00
Chris 20286c285d Improving targeted detection for the Das 4Q Keyboard to resolve #2633
+ Changing to IPU detector to accurately detect keyboard first time
* Avoiding errors by adding new detector callback function
2022-07-28 17:15:38 +00:00
Vladimir c7881890d0 Initial commit for the MSI RTX 3090 Ti Suprim X 24G to resolve #2409 2022-07-28 11:46:43 +03:00
Matt Silva 773fac2240 Initial commit for Glorious Model O Wireless - Sinowealth 2022-07-27 04:03:45 +00:00
Chris 5991d566c2 Initial commit for the Gigabyte RTX 3060Ti Vision OC 8G GPU to resolve #2627
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N306TVISION-OC-8GD-rev-20#kf)
2022-07-27 12:33:56 +10:00
Chris 40bcddf569 Adding the Gigabyte Z370 AORUS Ultra Gaming-CF to resolve #2623 2022-07-27 01:32:44 +00:00
Chris fa84a587b5 Changing detector type for NVidia Illumination GPUs to resolve #2617
+ Switching the detector registration to allow enabling / disabling.
2022-07-26 23:33:29 +10:00
Chris 148f69b929 Initial commit for the Gigabyte Aorus 2080 XTREME 8G GPU to resolve #2615
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusion2GPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N2080AORUS-X-8GC#kf)
2022-07-25 20:31:48 +10:00
Adam Honse b6af69cd50 Remove Ubuntu 21.10 test 2022-07-24 16:47:58 -05:00
Adam Honse c6c9bd9f24 Fix race condition crash in SRGBmodsPicoController 2022-07-24 16:10:43 -05:00
Chris a0f9e4ed01 Initial commit for the AMD RX 6900 XT reference GPU to resolve #2612
+ Adding USB PID `0x015B` to the existing controller.
+ Adding missing colour modes `Rainbow Wave`, `Swirl`, `Chase` and `Bounce`
2022-07-25 03:33:50 +10:00
thombo 20c50ba367 Support for MSI boards 7D18 and 7D51 added 2022-07-23 17:39:55 +00:00
Chris 462da9663f Adding the GA104 variant of the MSI 3060 Gaming X 12G GPU to resolve #2613
* Related to !1317
* Registered detector in `MSIGPUControllerDetect.cpp`
2022-07-23 10:04:47 +10:00
Chris 942a842a32 Hiding non-keys from Razer keymaps
+ Setting matrix map key value if not found in defined layout
+ Correcting layout for `blackwidow_chroma_te_keymap` to include missing keys
2022-07-23 01:51:50 +10:00
Adam Honse 16effbe35b Initial support for SRGBmods Raspberry Pi Pico LED Controller 2022-07-22 03:23:31 +00:00
Chris 3f03e4b550 Initial commit for Razer Blade 15 Base 2021 V2 to resolve #2599
+ Adding entry for the Blade 15 Base V2
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
2022-07-22 09:04:07 +10:00
Chris 9147e65963 Adding en_AU and en_GB locales to resolve #2500
* Adjusted main.cpp to accomodate the full locale name
2022-07-21 13:37:10 +10:00
flora fd4db35940 Add support for Sapphire RX6900XT Toxic Limited Edition 2022-07-20 16:57:00 +00:00
Chris 40ed7bdf83 Initial commit for the Lian Li Strimer L Connect to resolve #2563
+ Adding StrimerLConnectController
+ Adding RGBController_StrimerLConnect
+ Adding ENEUSBControllersDetect.cpp to register StrimerLConnect detector
2022-07-21 00:14:58 +10:00
Adam Honse 75711744e7 Use 16-LED linear layout for Blade Stealth Late 2020 2022-07-20 13:03:13 +00:00
Chris b1b07db406 Adding MSI 3060 Gaming X 12G GPU to resolve #2610
* Added card id `0x3976` to pci_ids.h
* Registered detector in `MSIGPUControllerDetect.cpp`
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3060-GAMING-X-12G)
2022-07-20 04:44:48 +00:00
Chris c479a06312 Adding qt5-linguist to Fedora build dependencies 2022-07-20 14:34:13 +10:00
Chris d33c410ea6 Adding new receiver for the Logitech G915 Wireless Keyboard
+ Adding new PID `0xC547`
+ Registering detector in LogitechControllerDetect.cpp
2022-07-19 20:06:40 +00:00
Adam Honse ced081d168 Fix more warnings 2022-07-19 00:48:35 -05:00
Adam Honse bf6ae63ae6 Fix some Windows build warnings 2022-07-18 20:46:13 -05:00
morg c0851f3b1e Add support for Cooler Master Addressable Gen 2 RGB LED Controller A1. Closes #2256 2022-07-18 23:58:44 +00:00
Adam Honse bba7fa9fd2 Fix a bunch of compiler warnings 2022-07-17 22:33:20 -05:00
flora be10133bce removed dualsense detect.h from .pro 2022-07-18 02:43:44 +00:00
Chris d6cc7ff984 Adding MSI 3080 SUPRIM X 12G LHR GPU to resolve #2602
* Registered detector in `MSIGPUControllerDetect.cpp`
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3080-SUPRIM-X-12G-LHR)
2022-07-18 02:43:17 +00:00
B Horn a54f03e199 Fixing MacOS / Clang builds 2022-07-18 02:32:28 +00:00
B Horn 640eb7905c SDK Listening Options 2022-07-17 20:30:15 +00:00
Chris M 241ea0a8ef Adding ability to load profile on GUI shutdown to resolve #1694 2022-07-17 05:48:49 +00:00
thombo f737ef1214 Support for MSI boards 7D08, 7D30 and 7D59 added, some configurations corrected 2022-07-15 19:19:07 +02:00
Chris 6aff7254b7 Change Non-Mainline pipelines to be manually triggered 2022-07-15 23:48:38 +10:00
morg ea24729808 Add bookworm and ubuntu jammy builds and tests 2022-07-15 13:33:21 +00:00
TheRogueZeta c8ce5dc973 Rework and fix Polychrome v1 controller 2022-07-15 00:10:10 +00:00
TheRogueZeta ce9895412a Initial commit for ASUS ROG Strix LC 3080TI O12G Gaming 2022-07-14 01:34:27 +00:00
Thomas Karl Pietrowski a9d67cd10f debian: Adding qttools5-dev-tools to build deps 2022-07-14 01:32:39 +00:00
Aytaç Kayadelen 75527b3989 Change Aurora Link to New Repository 2022-07-14 01:31:32 +00:00
Chris 554bbb65b3 Adding EVGA 3080 FTW3 Ultra Hybrid Gaming LHR GPU to resolve #2589
* Added card id `0x4878` to pci_ids.h
* Registered detector in `EVGAAmpereGPUControllerDetect.cpp`
* Link to [webpage](https://www.evga.com/products/product.aspx?pn=12G-P5-4878-KL)
2022-07-13 02:35:17 +00:00
HorrorTroll 3217bd7ceb Fixed some issues of new QMK Protocol 2022-07-12 21:29:23 +07:00
HorrorTroll 4fd156d373 Updated RGB effect list for QMK protocol 2022-07-11 13:09:43 +00:00
Chris daf1ccf668 Initial commit for the PNY 3060 XLR8 Gaming REVEL EPIC-X GPU to resolve #2575
+ Add id to pci_ids.h
+ Register detector in NVIDIAIlluminationControllerDetect.cpp
+ Link to [webpage](https://www.pny.com/geforce-rtx-3060-12gb-xlr8-gaming-revel-epic-x-rgb-df)
2022-07-11 13:02:37 +00:00
Chris c7d40b78a7 Initial commit for the Gigabyte Eagle 3060 OC 12G GPU
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N3060EAGLE-OC-12GD-rev-20#kf)
2022-07-11 13:41:32 +10:00
Adam Honse 8681e9f026 Remove PID check to test to see if these changes work for all boards 2022-07-08 19:00:58 -05:00
Adam Honse 852475736d Set zone type to single if zone size is 1 on MSI 162-byte controller 2022-07-08 23:43:06 +00:00
Adam Honse b626d88a24 MSI improvements cleanup
* Only create resizable zones if the board supports per-LED and the zone is one of the ARGB zones
  * Default resizable zones to zero size, per convention
  * Set fixed-size single LED zones to single type
2022-07-08 23:43:06 +00:00
thombo 537b9d4569 Special treatment of MSI board 0x7B93 added 2022-07-08 23:43:06 +00:00
Thomas Boos 98ebcb2ee0 MSI Mystic Light Rework
* Direct mode for certain 185-byte boards based on Aleksandr Garashchenko's mystic-why project
  * Improved detector to automatically determine controller type (162 vs 185 byte)
  * Re-enable missing modes and improve mode control
  * Code cleanup

Commits squashed and amended by Adam Honse <[email protected]> as part of !1181
2022-07-08 23:43:06 +00:00
rob Dunn 185c1c3cae Fix Windows crash on startup in Intel i801 detection (Jeampan fix) https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/766
Commit amended by Adam Honse <[email protected]>
2022-07-08 18:41:09 -05:00
Flora Aubry 3168212214 Add support for Sony DualSense closes #2013 2022-07-08 23:31:07 +00:00
Chris M da6e790ee6 Initial commit for the Bloody MP 50RS to resolve #2579 2022-07-08 20:29:58 +00:00
Chris c2dd179145 Initial commit for the ASUS Strix RTX 2080 O8G V2 Gaming GPU to resolve #2580
+ Add id to pci_ids.h
+ Register detector in AsusAuraGPUControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/us/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx2080-o8g-gaming-model/)
2022-07-07 14:16:06 +10:00
Milan Cermak 7dbf4c8624 Add support for Gigabyte X299 Designare EX motherboard 2022-07-06 09:19:36 +02:00
George Whiteside a66fca1172 fixed a small typo preventing the EVGA 3060ti FTW3 Ultra (non-LHR) from being detected 2022-07-04 23:30:16 -05:00
Chris f3eac499d4 Allow for server side controller resizing
* Save sizes profile on the server
* Update RGBController_Network size on the client
2022-07-04 20:16:39 +00:00
TheRogueZeta 3f79cc41c8 Inital split for ASRock SMBus controllers 2022-07-04 20:15:58 +00:00
Obiwac 6def6a7772 FreeBSD: Fix compilation 2022-07-04 20:13:36 +00:00
Chris 2414b41b94 Initial commit for the Bloody W60 Pro to resolve #2560
+ Adding BloodyMouseController
+ Adding RGBController_BloodyMouse
+ Adding A4Tech_Detector to register Bloody W60 detector
2022-07-04 01:56:32 +10:00
morg 9bd4afe010 Fix the file filter in the install plugin file dialog 2022-07-03 01:40:24 +00:00
Chris 439afed737 Fix for pipes | in device names being interpreted as Markdown control character
* Fixes the EVGA K|NGP|N text names in supported devices pages
2022-07-01 15:38:06 +00:00
morg 833be22b33 Fix Corsair K65 mini detection 2022-07-01 15:35:29 +00:00
Chris 2770206a8d Normalising config directory to ensure it has trailing path separator resolving #2552
* Moved Setter next to Getter
* Set `config_dir` to ensure consistent directory for all files resolving #2551
* Changed PluginManager loading log message to include directory
2022-07-01 15:33:38 +00:00
Shaun McThomas 663b28508c Adding Gigabyte AORUS RTX3070Ti Masters GPU 2022-07-01 15:31:49 +00:00
Name 4c8315e1c2 Add support for MSI 3070 Suprim X 2022-07-01 15:29:29 +00:00
TheRogueZeta 366cd3097d Initial commit for EVGA RTX 2080 Ti XC HYDRO COPPER GAMING 2022-07-01 15:27:16 +00:00
TheRogueZeta 4e304ce6e8 Initial commit for Gigabyte Aorus RTX 2080Ti EXTREME 11G 2022-07-01 15:23:41 +00:00
TheRogueZeta a182f7a96f Initial Commit for ASUS TUF RTX 3080 10G GAMING with SVID 0x87B2 2022-06-30 23:57:40 +00:00
Konstantin A. Zolotukhin bbc6c3b84f Add Palit 3080Ti Gamerock PCI sub device id 2022-06-30 14:40:28 +07:00
Chris 673ae40d19 Initial commit for the ASUS TUF 3080Ti 12G Gaming GPU to resolve #2548
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://www.asus.com/Motherboards-Components/Graphics-Cards/TUF-Gaming/TUF-RTX3080TI-12G-GAMING/)
2022-06-30 00:34:48 +00:00
Chris e773dcb6ef Initial commit for the ASUS KO 3060 O12G V2 Gaming GPU to resolve #2559
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://www.asus.com/Motherboards-Components/Graphics-Cards/KO/KO-RTX3060-O12G-V2-GAMING/)
2022-06-30 00:33:46 +00:00
Chris 2c7ec0cd44 Initial commit for the ASUS ROG Strix 3080 10G Gaming GPU to resolve #2562
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx3080-10g-gaming-model/)
2022-06-30 09:49:00 +10:00
Chris 709c6a0970 Adding I2C PCI Detector names to the detector config to resolve #2554
* Adding i2c_pci detector iterator under `UpdateDetectorSettings()` in the ResourceManager
* Prefixing all Sapphire GPU detector strings with `Sapphire ` to align with other detectors
* Splitting the V1 and V3 detector code paths to populate Supported Devices acccurately
* RGBController code cleanup to align with current style guidlines.
2022-06-28 10:57:57 +10:00
Carter Miller 81b385a67e Add Support for direct NV_API Illumination Controlled GPUs 2022-06-23 14:23:29 +00:00
Chris 8f8764232e Adding Legend to Suported Devices
+ Adding 🤖 symbol for Automatic saving
+ Changing ⚠️ to 🚨 for better visibility
+ Adding :tools: symbol to mean `partial support`
+ Adding ⭕ symbol to mean not currently implemented by OpenRGB
2022-06-21 16:37:20 +00:00
morg f870ad20f2 CorsairPeripherals: add hardware modes 2022-06-21 16:36:50 +00:00
Robert Hanzel e1e9af2f5d Add MSI GeForce RTX 3080 12G GAMING Z TRIO LHR support 2022-06-20 03:57:49 +00:00
Chris a961bf87b4 Initial commit for the Steelseries Aerox 3 mouse to resolve #2492
+ Adding STEELSERIES_AEROX_3_PID and registering detector
+ Adding Abstract SteelSeriesMouseController class to accomodate new mouse
+ Adding SteelSeriesAerox3Controller class
* Rewrote SteelSeriesRival3Controller to align with abstract class
* Adjusted RGBController_SteelSeriesRival3 class to align with both mice
2022-06-20 11:54:19 +10:00
morg d193c93e6d Add support for Corsair K95 Platinum XT. Closes #2511 2022-06-19 21:33:26 +00:00
Chris a39f8dd560 Initial commit for Razer Laptop Stand V2 Chroma
+ Adding entry for the Laptop Stand V2 Chroma PID
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
+ Links to [webpage](https://www.razer.com/gaming-pc-accessories/razer-laptop-stand-chroma-v2)
2022-06-19 21:28:08 +00:00
Flora Aubry fda0455b97 Remade OpenRGB.ico Closes #2537 2022-06-19 21:24:27 +00:00
Chris 7900e52291 Adding status check for GetSerial() for the EVGA Keyboard to resolve #2531
* Adding status check for `hid_get_serial_number_string()` to ensure serial string is valid.
2022-06-16 10:49:44 +10:00
Chris 0282f761cd Formatting fixes for Supported Devices pages
+ Correcting detector references for EVGA V2 and V3
+ Correcting "Mice" anchor link
+ Updating GPU / USB table header labels
+ Removing leading whitespace from GPU IDs
2022-06-15 15:47:18 +10:00
Chris 5a3dd972f7 Correcting metadata for the Roccat Burst Controller. 2022-06-14 10:06:15 +10:00
B Horn 937451d6e8 SDK Client Disconnection Fixes 2022-06-12 04:43:15 +00:00
TheRogueZeta 003f4ba641 Add H60i RGB PRO XT AIO PID to CorsairHydroPlatinumControllerDetect.cpp 2022-06-12 03:30:03 +00:00
BillCipher-exe ac67a24a8c added support for ASUS ROG STRIX RTX 2080 8G Gaming Closes #2518 2022-06-11 03:46:37 +00:00
morg 98e7126184 Add support for Roccat Burst Pro. Closes #1561 2022-06-10 03:52:46 +00:00
Chris 70fdf54d5e Adding DEVICE_TYPE_MICROPHONE to enum
+ Adding microphone icons for light and dark theme
+ Adding entry into OpenRGBDialog2 to display icon
+ Creating `Microphone` category in "Supported Devices"
+ Changing Razer Seiren Emote to a `Microphone`
2022-06-10 10:40:58 +10:00
TheRogueZeta 9786ad5e16 Update EVGAAmpereGPUControllerDetect to use REGISTER_I2C_PCI_DETECTOR 2022-06-09 23:00:25 +00:00
TheRogueZeta 49b91b1a4e Update EVGATuringGPUControllerDetect to use REGISTER_I2C_PCI_DETECTOR 2022-06-09 00:23:41 -07:00
morg 90606b647a Add support for generic optical USB mouse (NA5312A) Closes #1959 2022-06-07 20:45:24 +00:00
Chris 23188e07a7 Improved targeting of metadata
* Ensured extended comments are not truncated
* Script now allows `@` in comment
2022-06-07 01:09:10 +10:00
Chris d56bf03440 Updating @comment on LenovoUSB to detail process to add new devices 2022-06-06 13:22:53 +00:00
Chris 2d6fb91d0a Initial commit for the ASUS ROG Strix 3080 O12G OC GPU to resolve #2508
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx3080-o12g-gaming-model/)
2022-06-06 17:21:09 +10:00
Chris d18f82d5e7 Initial commit for the ASUS TUF 3080 O12G GPU to resolve #2336
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://www.asus.com/Motherboards-Components/Graphics-Cards/TUF-Gaming/TUF-RTX3080-O12G-GAMING/)
2022-06-05 01:07:31 +10:00
Cooper Hall f3663af404 Add ROG Ryuo Water Cooler 2022-06-04 04:42:35 +00:00
Cooper Hall 15be3f6336 [new device] a very well tested addition for the Lenovo Legion 7, with a framework for adding more Lenovo Devices 2022-06-03 23:02:15 +00:00
morg e8e24ac243 Add support for HyperX Pulsefire Raid mouse. Closes #1745 2022-06-02 18:03:43 +00:00
morg 7495fe998e Add support for Roccat Burst Core. Closes #2491 2022-06-02 18:02:36 +00:00
morg ad6ade21ad Add support for MSI Vigor GK30 keyboard. Closes #2490 2022-06-02 18:01:24 +00:00
TheRogueZeta 4b43c78299 Add ID for Corsair Hydro H100i Pro XT v2 2022-06-02 17:56:07 +00:00
Codename-Antares 46905e8249 KrakenX63 Fix 2022-06-02 17:55:29 +00:00
Chris f812b26fdf Initial commit for Razer DeathAdder V2 Mini to resolve #2380
+ Adding entry for the DeathAdder V2 Mini
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
2022-06-02 09:08:19 +00:00
Mola19 f4cee9d626 Translation Mistake Fix in German translation 2022-06-02 09:06:03 +00:00
Chris c2163e2b99 Small formatting fix to print the newline between HID and I2C lists 2022-06-02 09:02:42 +00:00
TheRogueZeta 30c8c56a5e Add Device ID for ASUS GTX1080 ROG Strix OC 11Gbps 2022-06-02 09:01:39 +00:00
TheRogueZeta d19f186198 Correct type casting on log prints 2022-05-31 01:04:26 -07:00
TheRogueZeta a3924001e3 Update .gitignore to include *.qrc files related to i18n update 2022-05-31 06:14:53 +00:00
Shady Nawara e9c382d2e6 Add support for Intel i801 SMBus on MacOS 2022-05-31 00:59:07 +00:00
Chris 524675108d Automatic generation of markdown pages for supported devices
+ Added build-supported-devices.sh script
+ Added new target in CI/CD to build at compile time
2022-05-30 13:30:44 +10:00
Chris a7adfe251b Adding i18n resource file generation into .pro
+ Adding `lrelease` and `embed_translations` to .pro CONFIG as per [translation config](https://doc.qt.io/qt-5/qmake-variable-reference.html#translations)
- Removing `generate-qm-files` step from CI/CD
+ Adjusting "how to" comment to reflect changes
2022-05-28 22:41:36 +10:00
YegorMi f0895fdebf Add MSI GeForce GTX 1660 Ti GAMING 6G support 2022-05-26 08:28:18 +00:00
morg f7f41596cc Multilanguage support using I18n (German, Spanish, French, Russian) 2022-05-25 13:07:50 +00:00
Adam Honse e4bb578801 Update PNY GPU controller to use I2C PCI detector 2022-05-25 00:04:28 -05:00
Adam Honse 6bfe682d7b Update type for Asus Aura GPU from SMBus to I2C 2022-05-24 23:51:50 -05:00
Adam Honse 2f6cf34b15 Update Sapphire GPU controller to use I2C PCI detector 2022-05-24 23:49:21 -05:00
morg 9001659832 Add support for MSI GeForce RTX 2080 Ti GAMING TRIO variant 2022-05-24 21:56:05 +02:00
TheRogueZeta 692c232396 Initial commit for EVGA 3090Ti FTW3 Gaming 2022-05-23 21:08:29 -07:00
Adam Honse a3a9817eaa Update MSI GPU controller to use I2C PCI detector 2022-05-23 19:09:53 -05:00
Adam Honse 8a807a7cf7 Remove -pipe flag from gcc options as it conflicts with -save-temps and causes warnings 2022-05-23 11:44:10 -05:00
Adam Honse ef4faedb26 Remove GPU table from ENE controller 2022-05-23 11:33:15 -05:00
TheRogueZeta fe5789846b Add alternate address for Gigabyte RTX 2070 Super GAMING OC X3 2022-05-23 00:27:05 -07:00
Adam Honse 106f6c2fc5 Update ENE GPU controller to use I2C PCI detector 2022-05-22 19:22:56 -05:00
Adam Honse 147adf6623 Update ASUS Aura GPU controller to use I2C PCI detector 2022-05-22 19:09:11 -05:00
Adam Honse b780c440e7 Update Gainward GPU controller to use I2C PCI detector 2022-05-22 19:03:41 -05:00
Adam Honse 4f52ffd480 Update Galax GPU controller to use I2C PCI detector 2022-05-22 18:55:35 -05:00
Adam Honse 99595c57d3 Update Gigabyte RGB Fusion 2 GPU controller to use I2C PCI detector 2022-05-22 18:48:21 -05:00
Adam Honse 00e35e9e01 Add I2C PCI detector type for registering GPU detectors, update Gigabyte RGB Fusion GPU controller to use it 2022-05-22 18:23:46 -05:00
Mola19 4f9b81661c Support for Asus ROG Strix Impact II design variants 2022-05-22 00:19:20 +00:00
Toby Kao bcc89af4e9 Add ASUS ROG PG32UQ Monitor Support 2022-05-21 00:52:41 +00:00
TheRogueZeta 89cc3f4961 Correct Subvendor ID for EVGA RTX3070 TI XC3 Ultra 2022-05-20 13:41:03 -07:00
Chris e2a4ef45cf Adding greyscale OpenRGB lightbulb as the tray icon to resolve #2453
* Created OpenRGBGreyscale.png from original SVG
* Added to resources.qrc
2022-05-20 23:29:07 +10:00
Mola19 952d0fe505 support for Asus ROG Strix Impact II Wireless to resolve #2446 2022-05-19 23:55:13 +00:00
morg 95bac267c8 Add support for MSI GeForce RTX 3060 12GB Gaming X Trio 2022-05-19 23:53:35 +00:00
ParkerMc 6342ecff60 Commander core fw update 2022-05-19 23:52:24 +00:00
TheRogueZeta 3045e86046 Update .gitignore to ignore the auto generated 60-openrgb.rules file 2022-05-16 17:01:24 +00:00
TheRogueZeta 4941f2d31c Update .gitignore to add *.ii and *.s files 2022-05-16 03:23:36 +00:00
TheRogueZeta 5999cfb1c8 Initial commit for Corsair Scimitar RGB 2022-05-16 03:23:13 +00:00
Chris 6b6caa66c0 Initial commit for the ASUS ROG Strix 3060Ti O8G V2 GPU to resolve #2442
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx3060ti-o8g-v2-gaming-model/)
2022-05-14 22:39:24 +10:00
Chris cc304007a0 Initial commit for the Steelseries QMK Prism XL Destiny Ed. to resolve #2437
+ Added PID and registered detector in SteelSeriesControllerDetect.cpp
+ Link to [webpage](https://steelseries.com/gaming-mousepads/qck-prism-xl-destiny-edition)
2022-05-13 10:21:34 +10:00
Mola19 699fd4050d support for Asus ROG Gladius III Wireless to resolve #1972 2022-05-11 16:38:07 +00:00
Chris 2485c24560 Adding DUMMY_DEVICE_DETECTORS to supplement dynamic UDEV rules
* USB devices that are **not** registering a detector that includes the VID and PID will need to specify these details separately to be added to the UDEV rules
at compile time
* Resolves #2440
2022-05-08 19:37:57 +00:00
void-spark1 c4708eb39b Fix layout for Razer Huntsman V2 TKL 2022-05-08 15:44:47 +00:00
Chris 6ad7882472 Adding EVGA XC3 Ultra Gaming GPU
* Added card id `0x3955` to pci_ids.h
* Registered detector in `EVGAAmpereGPUControllerDetect.cpp`
* Link to [webpage](https://www.evga.com/products/product.aspx?pn=12G-P5-3955-KR)
2022-05-07 16:51:11 +10:00
Chris 2db2b1dd2f Alinging Wraith Prism mode names to "Common Modes" convention
* As per mode names in https://gitlab.com/CalcProgrammer1/OpenRGB/-/wikis/Common-Modes
2022-05-07 12:05:12 +10:00
Chris M b08b6fe398 Switching VID & PID declarations in SonyDS4ControllerDetect.cpp to #defines 2022-05-06 16:39:39 +00:00
Lanzaa 04ba474030 Logitech G915 TKL mode support 2022-05-05 22:56:30 +00:00
Lanzaa 817d5d55df Add ViewSonic Elite XG270QG
Amended for code style by Adam Honse <[email protected]>
2022-05-04 21:48:58 -05:00
Cooper Knaak 0d7e947575 Add Support for EVGA X20 Gaming Mouse
Commit amended to remove udev rules (which is now autogenerated) and fix build by Adam Honse <[email protected]>
2022-05-04 20:27:34 -05:00
radekw8733 3aa5e2648f Fixed Gigabyte GTX 1050 Ti detecting
Commit amended for code style by Adam Honse <[email protected]>
2022-05-04 19:41:52 -05:00
Chris 1f3415bdab Changed UDEV build-udev-rules.sh to allow for DOS encoded files 2022-05-04 05:46:53 +00:00
Adam Honse 9200834172 More cleanup, add metadata 2022-05-04 05:39:09 +00:00
Adam Honse f569077c68 Implement POST in httplib 2022-05-04 05:39:09 +00:00
Adam Honse 2cb08ec4b4 Replace curl with httplib 2022-05-04 05:39:09 +00:00
Nikita Rushmanov aeb1e364c4 Fix memory leak in Nanoleaf Controller 2022-05-04 05:39:09 +00:00
Adam Honse e61b6cd3d7 Implement direct control for v2 protocol (Canvas and Shapes), clean up some formatting with v1 to match. 2022-05-04 05:39:09 +00:00
Adam Honse 7276d254d6 Code style cleanup of Nanoleaf code - comment style, controller pointer name 2022-05-04 05:39:09 +00:00
Nikita Rushmanov 79b49873ec Add Nanoleaf support 2022-05-04 05:39:09 +00:00
Vidar Karlsen 7faa3b4875 Unbreak macOS build 2022-05-04 04:32:24 +00:00
Vidar Karlsen 6ae5242ed5 Add FreeBSD support 2022-05-03 16:41:11 +00:00
Diego Vargas 45755c79ae Add support for Patriot Viper Steel Direct mode 2022-05-02 20:51:25 +00:00
kent 2f720615c2 Add Palit RTX 3060 Ti (+OC) support 2022-05-02 00:05:32 +00:00
Aleš Nezbeda 48118821d7 Patriot Viper RAM reimplementation 2022-05-01 00:31:52 +00:00
Serge Doda d75556c3cb [FIX] wrong RTX2070 super gaming PCI ID 2022-04-28 19:07:52 +00:00
Serge Doda 95bdcbc5c2 [New Device] GeForce RTX 2070 SUPER GAMING 2022-04-28 15:18:59 +00:00
Shady Nawara bc5fedbbec Hide dock icon on minimize macOS 2022-04-28 05:20:37 +00:00
Adam Honse 6cd4dc8674 Modify Patriot Viper detection to not depend on detecting SPD slot address (0x36) as this doesn't work on some SMBus controllers 2022-04-27 20:09:20 -05:00
morg a81d22ee0a Add support for Gainward Phoenix GTX 1080 Ti 2022-04-26 09:30:16 +02:00
Pavel Kuzminov 4f50b64e1d Add support for Gigabyte GeForce RTX 3080 VISION OC 10G REV2.0 2022-04-22 16:31:44 +00:00
morg 0aae02feab Add support for AORUS GeForce RTX 3080 XTREME WATERFORCE WB 10G 2022-04-20 21:07:02 +02:00
Qwex 0029046b9a Update the bug report template 2022-04-20 16:38:23 +00:00
Chris e9eca70e72 Initial commit for the Dark Project KD3B Keyboard to resolve #2292
* Creating detector class and adding entry for the Dark Project KD3B VID & PID
* Registered detectors
* Creating DarkProjectKeyboardController class
* Creating RGBController_DarkProjectKeyboard class
* Added UDEV rule to 60-openrgb.rules
2022-04-20 16:29:48 +00:00
Piotr Adamczyk 42b95509ac Add support for MSI Radeon RX 6800 XT Gaming Z Trio 2022-04-20 14:07:02 +00:00
Michael Moore 87778842c9 PCB RGB support for the ASRock B550 Phantom Gaming-ITX/ax 2022-04-20 13:40:32 +00:00
Chris 30c80adbe1 Fixes to Automatic UDEV generation
+ Removing blank vid & pids entries to avoid `invalid value` warnings
+ Changing incorrect syntax from `ATTR` to `ATTRS`
+ Adding `Release` build check to .pro to work around code syntax highlighting issue in QTcreator
2022-04-20 01:04:19 +10:00
Chris 0b515ba901 Some edits to the Readme.md for version 0.8
+ Refomatted and expanded the "Installing OpenRGB" on Linux section
+ Added link to new automated UDEV rules file `60-openrgb.rules`
+ Removed reference to `chmod` for SMBus access to resolve #2343
2022-04-19 06:56:43 +00:00
Mola19 eca8ee3a31 Add missing modes to AsusAuraMousepad to resolve #780 and #1199 2022-04-19 06:52:57 +00:00
alpemwarrior 1ac4e127cb Create fedora 36 pipeline and deprecate f34 pipeline in favour of f35 2022-04-18 07:12:53 +00:00
Shady Nawara f91d4d7af1 Add fan sync to plugin list 2022-04-17 03:27:30 +00:00
Chris bc10e3f772 Automatic generation of udev rules for supported devices
+ Added build-udev-rules.sh script
+ Added new custom target in Linux section of .pro to accommodate new rules location
2022-04-17 12:31:02 +10:00
Mola19 fb7e388e3f Adjusting Interface for Asus ROG Gladius II origin COD 2022-04-12 16:39:59 +00:00
Hacker Bonsai 54ba9aca02 Remove unnecessary context creation from ADL I2C controller 2022-04-12 16:39:11 +00:00
Mola19 6709fe4a1a Support for asus rog strix impact 2022-04-12 16:37:16 +00:00
Chris b0ed2684a2 Initial commit for the EVGA Z20 Keyboard to resolve #2157
* Cleaned up cherry picked commit from @Elteeb96
* Added UDEV rule to 60-openrgb.rules
2022-04-12 13:36:25 +10:00
Elteeb 452ea9ec91 Added rudimentary Z20 support, added icons for macro keys and ‘feature buttons’. I.E. The ‘game mode’ button on the Z20.
(cherry picked from commit 9d73df25fdc896a0363b2fe0e43aca13dd8663b6)
2022-04-12 13:36:25 +10:00
morg 45478b0d9f Set the correct speeds for polychrome V2 (SMBUS) 2022-04-08 23:21:54 +02:00
Werseter 14c73d2eac Add basic support for EVGA GeForce RTX 2070 SUPER FTW3 Ultra 2022-04-06 13:32:18 +00:00
Jan-Ole Hübner 328e5f562f Added Device Corsair Scimitar Elite ( Resolves #987 ) 2022-04-06 13:31:05 +00:00
Nikita Rushmanov aae734a361 Fix segfault when destructing udp_client 2022-04-05 10:26:00 -07:00
Chris b4231e2a6e Reverting change to the CM RGB detector made in f33fc268
* Related to !1116
2022-04-05 11:55:05 +10:00
jld3103 139a9c4010 cli: Validate hex color length 2022-04-04 17:56:34 +02:00
jimcx 8619d77445 Add support for MSI MEG Z690I Unify 2022-04-04 14:38:48 +00:00
Chris 34b20a78ea LED ID correction and zone fix for Basilisk V3
* Change LED ID to 0
* Swap Logo and Scroll Wheel Zone order
* Created `SupportsBreathing()` function to allow removal of hardware mode for the Basilisk V3
2022-04-04 14:35:08 +10:00
Mola19 9cf99d142b fixing udev rules for Asus USB devices 2022-04-03 19:16:35 +02:00
Chris e0ef12af10 Follow up to commit 0d0ac0af52 adding the PIDs to UDEV rules 2022-04-03 15:14:49 +10:00
morg a70b616a1b Add support for ASUS ROG STRIX RTX2080S O8G WHITE 2022-04-03 04:42:37 +00:00
Kyle Heide 0d0ac0af52 Support Full Range of Riing Quad Controllers 2022-04-03 04:36:45 +00:00
Chris f4da04f544 Adding Asus Aura TUF K3 keyboard PID to UDEV rules to resolve #1719 2022-04-02 03:49:45 +00:00
Mola19 a03c4674cf support for Asus ROG Throne Qi GUNDAM to resolve #2340 2022-04-02 03:45:02 +00:00
Der Informatiker 2c1c80334b Add grouping for unicast E1.31 devices 2022-04-02 02:15:52 +02:00
Adam Honse b2c6028cb8 Always overwrite file when updating plugins, add additional logging to plugin management 2022-04-01 17:55:26 -05:00
Mola19 41389f4746 support for Asus ROG Strix XG27AQ 2022-03-31 21:32:47 +00:00
Mola19 0c784ac560 Add mode support to roccat vulcan 120 2022-03-31 20:52:49 +00:00
Mola19 119f20cfee support for asus tuf k3 2022-03-31 22:06:56 +02:00
Chris 795427bcb7 Initial commit for the EVGA Z15 Keyboard to resolve #1909
* Added RGBController_EVGA_Keyboard_Controller.h / RGBController_EVGA_Keyboard_Controller.cpp
* Added EVGA_Keyboard_Controller.h / EVGA_Keyboard_Controller.cpp
* Added EVGAUSBControllerDetect.cpp
* Adding UDEV rule to 60-openrgb.rules
* Adding Folder to CODEOWNERS
2022-03-30 17:00:11 +00:00
Renars 6e3c418264 Add support for steelseries rival 106 2022-03-30 15:57:27 +00:00
Mola19 a56b0da600 Support for asus rog keris wireless 2022-03-30 15:54:21 +00:00
Mola19 505d7f89ad Replacing Tabs with Spaces in AsusAuraUSBController 2022-03-30 02:46:56 +02:00
Adam Honse 04c1ad363e Add some modes to ROG Balteus controller 2022-03-27 20:37:46 -05:00
Dracrius e0e2c9e20b Cleaned Up the Hue Controllers 2022-03-25 22:45:03 +00:00
morg 19c2b98e8a Add support for Trust GXT 180 mouse. Closes #2330 2022-03-24 21:40:44 +00:00
Dracrius 14d7347d66 Added Colours to QMK Gradient Modes 2022-03-24 17:23:44 +00:00
Chris c013d476ba Initial commit for ASUS ROG Strix LC120 to resolve #1068
+ Adding entry for the ROG Strix LC120 PID
+ Registered detectors
+ Added ROGStrixLC_Controller to address protocol differences
+ Added RGBController_ROGStrixLC_Controller to allow for mode differences
+ Added UDEV rule to 60-openrgb.rules
2022-03-24 17:20:54 +00:00
Chris 8fa85b3f27 Initial commit for the ASUS ROG Strix RTX 2080Ti A11G Gaming GPU to resolve #2323
+ Add id to pci_ids.h
+ Register detector in AsusAuraGPUControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/us/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx2080ti-a11g-gaming-model/)
2022-03-24 16:59:22 +00:00
TheRogueZeta 965380b6f6 Inital support for EVGA RTX 3090 FTW3 Ultra 3842:3387 2022-03-23 22:03:46 -07:00
morg eddbcc2b8b Add support for Gigabyte AORUS RTX3080 XTREME WATERFORCE 10G Rev 2.0 2022-03-23 22:33:16 +00:00
morg 7d27fadbc4 Add support for ASUS ROG STRIX RTX 3080 O10G V2 GAMING 2022-03-22 18:41:19 +00:00
Chris 8a7f3b4a3a Initial commit for the Gigabyte 2080S Waterforce WB 8G GPU to resolve #2319
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusion2GPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N208SAORUS-WB-8GC#kf)
2022-03-23 00:52:26 +11:00
Chris 4f9eb7e4be Initial commit for the Gigabyte AORUS 2070 Super 8G GPU
* Small fix to zone enumeration
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusion2GPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N207SAORUS-8GC-rev-10-11#kf)
2022-03-22 05:13:13 +00:00
Adam Honse 97155d240b Disable Sinowealth Keyboard controller due to reports of bricking 2022-03-22 00:12:41 -05:00
morg a935e15631 Fix typo in Corsair Vengeance RGB PRO name 2022-03-22 01:32:10 +00:00
morg 39b36bbc28 Add support for ASUS TUF 3060 O12G V2 GAMING variant 2022-03-22 01:31:41 +00:00
Dracrius b586a631b6 Update gitignore 2022-03-21 21:29:47 +00:00
Dracrius f33fc26810 Added Support for MM530 2022-03-21 15:34:25 +00:00
morg 3c1b168676 Add Corsair K65 Mini support - Closes #2275 2022-03-21 13:37:28 +00:00
morg 7ab784aa16 Add support for Steelseries arctis 5. Closes #1015 2022-03-21 13:35:14 +00:00
morg 56334ed7c5 Add support for Cougar Revenger ST - Closes #2312 2022-03-20 16:00:11 +00:00
TheRogueZeta 0b202fc1ba Inital commit to .editorconfig file 2022-03-14 03:34:18 +00:00
Adam Honse c8b34ccb0d Update contributing guide formatting, link to the contributing guide in the readme 2022-03-13 13:35:47 -05:00
Chris a07425026c Initial commit for the ASUS TUF RTX3070TI O8G V2 Gaming GPU to resolve #2300
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
+ Link to [webpage](https://www.asus.com/Motherboards-Components/Graphics-Cards/TUF-Gaming/TUF-RTX3070TI-O8G-GAMING/)
2022-03-14 02:31:48 +11:00
Arnaud MAURIN 287618ebe5 Add new device type "Case" 2022-03-13 04:49:18 +00:00
Chris f96028cba4 Adjusting IPU of Coolermaster RGB due to 30955722 2022-03-13 10:30:23 +11:00
Dracrius 17b7a5f518 Fix Philips Hue First Time Setup Bug 2022-03-12 23:25:15 +00:00
Chris 74b9253c25 Adding template for "New Device" Merge Requests 2022-03-12 10:26:08 +11:00
morg 0311aa399f Add support for Roccat Horde Aimo Keyboard - Closes #2028 2022-03-11 21:41:57 +00:00
Chris 2c8a826c11 Initial commit for the Logitech G935 to resolve #2214
+ Added PID and registering detector for the common controller
+ Added entry for udev rules
2022-03-10 19:26:25 +11:00
Adam Honse c9572bd4e0 Add CONTRIBUTING 2022-03-09 22:45:08 +00:00
Adam Honse 1a34d3d167 Get Gigabyte DRAM functional 2022-03-09 20:12:53 +00:00
Dracrius bf5ce6c239 Fixed an issue with the Philips Hue Entertainment Groups 2022-03-09 19:49:04 +00:00
Chris a712c64ece Adding logging for Success / Failure on Gigabyte RGBFusion2SMBus DMI check 2022-03-08 13:37:33 +11:00
morg ae84bcb862 Add Keychron keyboards support - Closes #1790 2022-03-07 01:17:09 +00:00
[email protected] ae1c73497a chore: fixed OpenRGBE131ReceiverPlugin repo url in readme 2022-03-04 10:10:18 +00:00
morg 4538085e1e Set a darker color for window base so the checkboxes can be seen 2022-03-03 21:04:15 +00:00
morg 70b2a9c842 Fixes a few memory leaks 2022-03-03 14:42:54 +01:00
Evan Weiler 8bb7ab8099 Add support for MSI MPG Z690 EDGE WIFI DDR4 motherboard 2022-03-03 00:48:51 +00:00
morg d8f28b546d Add error logs for non logged exceptions 2022-02-28 22:08:41 +00:00
Adam Honse ddeb5de65e Code cleanup 2022-02-28 16:07:09 -06:00
Chris d8e7cd694d Small fix to --config parameter to allow for an argument
+ Added check to test for a valid directory
2022-02-27 13:07:04 +11:00
Chris a84842730e Initial commit for the Gigabyte 3050 Gaming OC 8G GPU to resolve #2264
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N3050GAMING-OC-8GD#kf)
2022-02-26 15:31:29 +11:00
Chris 268ed8abde Reverting workaround added in !688 to resolve #1654
+ LTO issue should now be resolved by 59732ed47e
+ Re-Enabling Link Time Optimisation for Debian builds that was disabled by 87ba08602f
2022-02-25 03:42:17 +00:00
Chris d3629a1d34 Initial commit for the Gigabyte 1060 G1 Gaming 6G GPU
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/au/Graphics-Card/GV-N1060G1-GAMING-6GD-rev-10#kf)
2022-02-25 14:09:31 +11:00
Adam Honse c226e2c4fb Code cleanup for NZXT controllers 2022-02-24 16:59:07 -06:00
alpemwarrior 2bb5cfcab8 Revert "Disable lto build (fedora)" 2022-02-24 20:38:38 +00:00
Chris 59732ed47e Updating HuePlusPlus json.hpp library to resolve #2218
+ LTO is causing a segfault error because there are 2 different versions of nlohmann/json (3.9.1 vs 3.7.3)
2022-02-24 05:19:15 +00:00
morg ea0c19d31e Add Lexip Gaming mouse support - Closes #2245 2022-02-24 01:32:26 +00:00
Mola19 8120fcdd5a Fix for asus mice not sending response 2022-02-23 04:18:42 +00:00
Adam Honse 41ef951e8b Clean up DeviceView initialzation code
- Move scaling to after calculating positions to make the math easier to follow
  - Move unchanged variables to defined constants
  - Add comments
  - Use local variables to avoid looking stuff up from controller pointer repeatedly
2022-02-21 21:03:16 -06:00
Adam Honse 8b5a23148a Clean up RGBController.h 2022-02-21 12:08:59 -06:00
morg 06f4851ddc Add NVIDIA ESA support - Closes #2236 2022-02-21 13:34:59 +00:00
morg 238d1c0162 Add support for Gigabyte RTX 3080 Gaming OC 10G 2022-02-18 18:18:05 +01:00
Adam Honse 783259a870 Fix Tab key name 2022-02-17 15:26:02 -06:00
morg e1513f9abe Add support for Gigabyte RTX 3080 Gaming OC 12G 2022-02-17 05:59:15 +00:00
ElJeffe bcd97dd51d Update README.md - link to self-signed cert creation macos 2022-02-17 03:04:07 +00:00
Habetdin 9b5d200a36 Add ASUS ROG Strix GTX1070Ti 8G Gaming (0x861D) GPU 2022-02-16 14:10:21 +00:00
Mola19 823809718e Changing USB interface for ASUS ROG Strix Impact II to resolve #2201 2022-02-16 06:26:35 +00:00
Chris 72ab809d25 Initial commit for the ASUS ROG Strix RTX2060S A8G Gaming GPU to resolve #2229
+ Add id to pci_ids.h
+ Register detector in AsusAuraGPUControllerDetect.cpp
+ Link to [webpage](https://rog.asus.com/us/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx2060s-a8g-gaming-model/)
2022-02-16 11:58:46 +11:00
morg 9f29af1852 Add support for Gigabyte GeForce RTX 3060 GAMING OC 12G (rev. 2.0) 2022-02-16 00:07:17 +00:00
Chris a926d4ec43 Initial commit for the Gigabyte 1070 G1 Gaming 8G V1 GPU
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N1070G1-GAMING-8GD-rev-10#kf)
2022-02-14 13:11:45 +11:00
Vaker 3bcfa7cc7e Add support for ZET Fury Pro 2022-02-14 01:23:30 +00:00
Adam Honse be15e5a1cf Re-enable Zalman Z-Sync 2022-02-13 20:17:22 +00:00
morg a47ae7ed48 Migrate from QSS to QPalette 2022-02-13 11:42:15 +01:00
Adam Honse f1c5905cba Move definitions of key name memory constants to a separate .cpp file, hopefully to cut down on file size 2022-02-13 00:48:55 -06:00
Chris d8e023b4c8 Initial commit for a canonical list of key names
+ Created RGBControllerKeyNames.h
* Adjusted every reference for key names found in `DeviceView`
* Formatting corrections
2022-02-13 15:40:15 +11:00
alpemwarrior aabba4ed62 Avoid double or triple mode updates 2022-02-12 23:31:09 +00:00
Adam Honse 0e750b6e9e Initial LIFX commit 2022-02-12 04:45:22 +00:00
morg 069e07c690 Adds ZET-GAMING-Edge-Air-Pro mouse support 2022-02-12 04:15:33 +00:00
morg e1f0cd785d Adds Trust GXT 114 support 2022-02-12 04:13:38 +00:00
Chris 6709cfb735 Aligning Direction updates for consistency and readability
+ Adding check to see if the UI DirectionBox is enabled before executing changes to the box.
2022-02-11 20:53:26 +00:00
morg 5b4d55bb42 Add pre detection hooks to resource manager. Closes #2184 2022-02-11 18:54:30 +00:00
TheRogueZeta 5ae6ef2c79 Split EVGA GPU controllers into individual controllers/folders 2022-02-11 18:52:38 +00:00
Chris 236154da67 Initial commit for the Gigabyte 2060 Super Gaming OC 3X V2 GPU
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
+ Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N206SGAMING-OC-8GD-rev-20#kf)
2022-02-11 06:34:45 +00:00
Sam Mitchell 0f23fe27a9 Add support for Asus TUF 3060 Gaming (#13)
* Add support for Asus TUF 3060 Gaming

* Changed O in O12G to the letter O instead of zero.
2022-02-11 01:29:44 +00:00
Chris 8156b0167a Adding EVGA 1080 SC2 Gaming GPU to resolve #2213
* Added card to pci_ids.h
* Registered detector in `EVGAGPUControllerDetect.cpp`
* Link to [webpage](https://www.evga.com/products/specs/gpu.aspx?pn=61e6d689-506e-45df-8202-b49614e9d54d)
2022-02-10 14:11:29 +11:00
morg 79134859cd Add GIGABYTE GTX1660 GAMING OC 6G support 2022-02-08 00:37:19 +00:00
Dan 14f77e0d1e Added more lighting modes to Hue 2 devices 2022-02-08 00:33:40 +00:00
TheRogueZeta 8b8845105a Initial commit for Asus Arez Strix Vega 56 O8G 2022-02-06 13:13:39 -08:00
Chris 601b5c08ad Swapping Num3 and Num6 for the HyperX Alloy Elite2 to resolve #2186 2022-02-03 00:05:50 +11:00
Chris d7a6f2ebba Fixing Direct mode assignment for Coolermaster ARGB Small controller to resolve #2174
* Only adding `Direct` mode for controllers with FW0012 or newer
* Changing the value assignment to an index in `SetCustomMode()`
2022-02-02 11:38:06 +11:00
Vaker 9bcc3e5a4f Sinowealth detector refactoring 2022-02-01 18:10:24 +00:00
TheRogueZeta e3cc9b9dac Enable B350 KRAIT GAMING (MS-7B08) in the MSIRGBcontroller 2022-01-31 14:49:06 +00:00
Chris e322835f89 Initial commit for the Gigabyte 3060Ti Eagle OC GPU to resolve #2173
+ Add id to pci_ids.h
+ Register detector in GigabyteRGBFusionGPUControllerDetect.cpp
2022-01-30 20:30:07 +00:00
TheRogueZeta dbc503b3e1 Change pump LED limit to 33 on CorsairCommanderCoreController 2022-01-30 20:27:19 +00:00
Chris be46543f4c Initial commit for the ASUS KO 3070 O8G V2 Gaming GPU to resolve #2182
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-30 11:42:22 +11:00
Chris c966b04e45 Changing the Apex3 driver to more accurately represent the keyboard layout
+ Changing from Ten Zones with 1 LED to One zone with 10 LEDs
* Minor code cleanup
2022-01-28 21:40:05 +11:00
Adam Honse 08549c43d7 Add note for debhelper dependency when building Debian package
Addresses #1607
2022-01-28 00:12:38 -06:00
Michael Alexander 972d199a90 Add basic support for EVGA GeForce RTX 2070 SUPER FTW3 Ultra+ 2022-01-28 05:53:18 +00:00
Adam Honse d5850f1694 Use debug log for ASUS Aura USB config table 2022-01-27 23:52:40 -06:00
Adam Honse dab2f8cc39 Add automatic save flag to HyperX Alloy Elite and Poseidon Z RGB modes except Direct
Fixes issue #2058
2022-01-27 22:35:42 -06:00
TheEvilSkeleton dfb8eb54ac Add Developers name 2022-01-28 04:25:44 +00:00
Adam Honse e9401d6f46 Move NZXT Hue 2 device printout to debug log 2022-01-27 20:57:45 -06:00
Adam Honse 6c58f9ffb6 Fix direction flag for NZXT Hue 2 devices
Resolves #337
2022-01-27 20:49:38 -06:00
Roberto 45fafdbadb Add support for MSI 3060Ti GAMING X LHR 2022-01-27 23:04:34 +01:00
Frederik Madsen db458fbb80 Add support for wired/wireless Razer Naga Pro 2022-01-27 19:26:11 +00:00
1000001101000 0bbc63aaf5 fix ptr/address of ptr confusion? 2022-01-27 19:19:36 +00:00
Luke D. Jones f2cb861ec7 Add support for Gigabyte AORUS RTX3060 Ti ELITE 8G LHR 2022-01-27 19:15:03 +00:00
Chris 9a68c4d3ba Initial commit for the ASUS ROG Strix 2070S O8G Gaming (0x8729) GPU
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-27 22:55:10 +11:00
Chris c5a337f389 Initial commit for the ASUS TUF 3060 O12G V2 Gaming GPU to resolve #2158
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-26 03:16:40 +11:00
Mola19 5a1d2affb5 support for Asus ROG Keris Mouse 2022-01-25 03:13:59 +00:00
Krystof Pistek 7ea36a5948 Add support (detection code only) for MSI B350M Mortar motherboard
(MS-7A37)
2022-01-25 00:10:33 +01:00
Vaker ce71a3d566 Add support for ZET Blade Optical 2022-01-24 21:29:48 +00:00
djdox23 36382b6526 Move Gigabyte 3060Ti Gaming OC PRO rev 1.0 and rev 3.0 from GigabyteRGBFusionGPUController to GigabyteRGBFusion2GPUController 2022-01-24 20:02:54 +00:00
Chris c335afa6b6 Adding EVGA 1070 FTW2 Gaming GPU
* Added card to pci_ids.h
* Registered detector in `EVGAGPUControllerDetect.cpp`
* Link to [webpage](https://au.evga.com/products/product.aspx?pn=08G-P4-6676-KR)
2022-01-24 21:30:27 +11:00
Shady Nawara cd06401edd Switched InpOut32 with WinRing0 2022-01-24 04:15:06 +00:00
Chris 8b1424a150 Adding Unicode symbols for Media keys
+ Play/Pause, Stop, Previous & Next Track
+ Mute, Volume Up & Down
2022-01-24 11:33:16 +11:00
Shady Nawara d90ea6b843 Reduce CPU usage when accessing i2c smbus devices on windows (AMD) 2022-01-24 00:20:03 +00:00
Alex 3e45e4201d Add Gigabyte RTX3080 Ti Gaming OC 12G 2022-01-23 22:48:21 +00:00
Mola19 cbe79f7c6a fix for asus gladius 2 origin pink 2022-01-23 22:47:25 +00:00
Chris 7f5fc72af0 Adding keymap for the Razer Cynosa V2 2022-01-22 23:39:51 +11:00
Jack 5c988f5786 Adds debug logging and a fix for incorrectly mapped keyboards to QMKOpenRGBController 2022-01-21 14:15:51 +00:00
morg fe51cc7c5d Hide the led view to prevent a paint event on rescan #1871 2022-01-21 04:02:16 +00:00
TheRogueZeta 05d4f8e7a8 Add Gigabyte AORUS RTX 2080S device ID 2022-01-20 23:25:48 +00:00
Chris 0d296b5b3b Adding a CODEOWNERS file
* Currently limited to the `/Controllers/` directory
2022-01-20 22:27:20 +11:00
Adam Honse f1ed2abe53 Code cleanup round 6 2022-01-19 23:08:29 -06:00
Chris f11f242ded Initial commit for the ASUS ROG Strix 3060Ti O8G Gaming (0x87BA) GPU to resolve #2136
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-19 19:42:01 +11:00
Adam Honse a219ac693c Code cleanup round 5 2022-01-18 22:35:21 -06:00
Chris e448143377 Initial commit for the ASUS ROG Strix 2070S 8G Gaming (0x8707) GPU
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-19 15:26:25 +11:00
Adam Honse c07f43c8d5 Code cleanup round 4 2022-01-18 21:01:12 -06:00
Adam Honse c09e4c9c92 Code cleanup round 3 2022-01-17 21:28:08 -06:00
1vivy 97e154ea84 Add ASUS KO RTX 3060Ti O8G V2 GAMING GPU 2022-01-18 02:52:22 +00:00
Adam Honse 26ba09fee1 Code cleanup round 2 2022-01-17 20:50:22 -06:00
Adam Honse 7d34e27019 Code cleanup, mostly updating name of controller pointer in RGBController classes for consistency 2022-01-17 19:27:50 -06:00
morg e7f4b9f921 Add debug logs to corsair dominator platinum 2022-01-18 00:18:27 +00:00
proEndreeper f8e34104af Added support for EVGA GeForce RTX 3080 FTW3 Ultra 12GB 2022-01-17 16:14:20 -07:00
JJTech 59b34a9dcf Add support for MSI GeForce RTX 3060 12G Gaming X Trio LHR 2022-01-17 07:16:19 +00:00
morg 97d5a9e84d MSI OPTIX MAG271CQR Monitor support 2022-01-17 07:08:04 +00:00
Chris 25d86c7d33 Initial commit for the ASUS KO 3060 OC O12G Gaming GPU to resolve #2042
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-17 10:17:18 +11:00
Chris 1e0169bed9 Initial commit for Razer Basilisk V3 to resolve #2007
+ Adding entry for the Basilisk V3 PID
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
+ Added UDEV rule to 60-openrgb.rules
* Small readability changes
2022-01-16 15:37:03 +00:00
Chris 390d4de256 Initial commit for the ASUS TUF 3080Ti O12G Gaming GPU
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-16 20:20:52 +11:00
Adam Honse 8120a348bf Update detection parameters for ASUS ROG Balteus/Balteus Qi 2022-01-15 20:13:21 -06:00
morg 01041a56b8 Add Electric Ultramarine color 2022-01-16 01:26:41 +00:00
Aurélien Labrosse d6b5032a5c Implement Asus TUF 3060 Ti 8G OC (v2.0) 2022-01-16 00:35:23 +00:00
TheRogueZeta fa105550a5 Add Asus TUF RTX 3070Ti O8G Gaming Device ID 2022-01-16 00:28:11 +00:00
Dmitry K f01557a3fa #1267 Fix Set All Devices function turns off all lights when windows number format is not in English 2022-01-16 00:27:33 +00:00
Chris 1568d6f612 Initial commit for the ASUS Strix 3060 O12G LHR Gaming GPU
+ Add id to pci_ids.h
+ Register detector in ENESMBusControllerDetect.cpp
2022-01-15 21:14:40 +00:00
Chris 73ace603ac Fixing Typo in Razer Basilisk V2 device declaration 2022-01-15 21:18:56 +11:00
TheRogueZeta 4332659b86 Update log messages in Corsair Vengeance Pro to be more descriptive 2022-01-14 01:41:38 +00:00
TheRogueZeta a079e4a7f1 Add Asus ROG STRIX 2080S A8G device ID and sort device list 2022-01-14 01:00:41 +00:00
TheRogueZeta e0f5e06559 Add alternate device ID for Asus ROG Strix GTX1050TI 04G 2022-01-13 23:34:51 +00:00
morg 661218b4f1 Add razer kitty black edition PID 2022-01-13 19:13:54 +01:00
Frederik Madsen cb6b701b8d Add keymap for Razer Blade Pro 17 2021 2022-01-12 17:23:25 +00:00
Aurelien Labrosse c901144ede feat: detection of Asus TUF 3060TI 8G Gaming 2022-01-11 19:50:56 +01:00
Adam Honse b36af1b917 Add ASUS ROG Balteus Qi, also direct mode only for now as it shares the same controller 2022-01-10 21:15:39 -06:00
Adam Honse be3846cf8b Initial support for ASUS ROG Balteus mousemat (direct mode only for now) 2022-01-10 20:24:47 -06:00
morg c5364264b1 Add debug logs to corsair vengeance rgb pro 2022-01-09 20:18:05 +01:00
TheRogueZeta 85dcb31c5c Add EVGA RTX 2080 Super XC Ultra Devcie ID 2022-01-09 00:59:06 +00:00
TheRogueZeta 15a7c87056 Add Corsair NightSword VID and align detectors 2022-01-08 14:01:44 -08:00
morg 4281ada659 Add razer extras plugin link to readme 2022-01-08 07:36:59 +00:00
TheRogueZeta 8e44d59b6a Add ASUS ROG-STRIX-RTX2060-O6G-GAMING Device ID 2022-01-07 19:48:22 -08:00
Julien Nicoulaud 79272f9e2f add link to openrgb-rs (Rust SDK client) 2022-01-07 17:10:10 +00:00
morg 4d26af6422 Fix corsair k70 mk2 skipped keys. 2022-01-07 17:06:57 +00:00
TheRogueZeta d8637af917 Add ASUS ROG STRIX 3090 24G Gaming device ID 2022-01-05 14:44:45 -08:00
morg f89c56d864 Review TabLabel UI. Fix #2055 2022-01-04 18:57:40 +00:00
morg f4c4d13f6d Add support for Corsair K55 RGB PRO keyboard 2022-01-04 17:48:28 +00:00
morg b9407606bd Crucial static mode needs to be updated for color changes 2022-01-04 17:46:05 +00:00
alpemwarrior 165798628b SteelSeries rival: skip firmware check for unsupported models and add manual saving to more modes. 2022-01-04 17:43:55 +00:00
doctor64 a1dd83240d Fix out of range cycle in zone setup for Asrock Polychrome V1 boards 2022-01-03 20:00:31 +00:00
Chris 22cf62af29 Adding EVGA FTW3 2080S Hybrid 8G GPU
* Added card ID
* Registered detector in `EVGAGPUControllerDetect.cpp`
* Link to [webpage](https://au.evga.com/products/product.aspx?pn=08G-P4-3287-KR)
2022-01-03 23:57:29 +11:00
Thomas Amerongen 3b78a7bca9 Add support for Gigabyte RTX 3070 Eagle OC + color cycle option for all Gigabyte GPUs 2022-01-03 06:27:43 +00:00
Rebecca Wallander fd1af2f45d Add firmware getter to SteelSeries Controller 2022-01-02 20:08:19 +00:00
Érico Rolim 48d1a4f7b6 Don't use glibc specific function. 2022-01-02 20:01:01 +00:00
Chris c6bb160bfe Adding ISO \ to Logitech G815 mapping 2022-01-02 19:57:30 +00:00
Rebecca Wallander 7dba4e318a Simplify SteelSeries Rival 700 communication 2022-01-02 19:56:48 +00:00
TheEvilSkeleton 01eba8968b Add release 0.7 in appstream 2022-01-01 07:06:45 +00:00
Tomasz Torcz 2d8700c28d Add ASUS ROG STRIX RX560 Gaming id 2022-01-01 00:33:21 +00:00
Chris 09bae42c3b Fixing detection for the Razer Kitty Chroma to resolve #2066
+ Correcting another detector that relied on the IPU bug fixed in 3095572260
2022-01-01 10:26:16 +11:00
TheRogueZeta 72563a3883 Add Gigabyte AORUS 2080 8G device ID 2021-12-31 06:09:17 +00:00
Chris d6a9f664ff Initial commit for Razer Viper 8kHz to resolve #1755
* Adding entry for the Viper 8kHz PID
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-12-31 04:49:19 +00:00
Chris de7abef0e9 Changed Logitech G733 detector to resolve #1235
* Changed Logitech G733 detector from Interface `2` to `3`
2021-12-31 04:46:47 +00:00
Chris 1d6e43d516 Initial commit for Razer Huntsman V2 to resolve #1999
* Adding entry for the Huntsman V2 PID
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-12-31 15:13:48 +11:00
Adam Honse 914c4be553 Update timeout on Corsair Lighting Node controller 2021-12-31 03:51:24 +00:00
TheRogueZeta d7c08bcf91 Add NVIDIA 2080S device ID to the detector 2021-12-30 18:30:55 -06:00
Chris 2c70a4616c Adding ROG Strix 2060S 8G Gaming GPU
* Added card ID
* Registered detector in AsusAuraGPUControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx2060s-8g-gaming-model/)
2021-12-30 18:10:45 +00:00
Frederik Madsen b7a13c0285 Fixed incorrect IPU registration for the Razer BlackWidow v3 TKL 2021-12-30 18:10:13 +00:00
TheRogueZeta b03f0206ee Add Asus 2060 O6G Evo Gaming TU104 device ID 2021-12-30 08:13:12 +00:00
Adam Honse ee6e3d946c Increment version number post-release 2021-12-30 00:46:13 -06:00
Adam Honse 6128731df6 OpenRGB version 0.7 2021-12-30 00:45:07 -06:00
Adam Honse 6ca090d5f4 Use Bullseye OpenRGB builder image to build AppImages and Debian Bullseye .deb packages 2021-12-30 06:02:41 +00:00
Qwex 57e7e6a823 Revert "Fix frames skip when using external effects engine" to fix ram race condition 2021-12-30 06:00:59 +00:00
Brandon Shoopman bdecbd77fc Add support for Asus Rog Strix 3080 White LHR 2021-12-30 06:00:30 +00:00
Adam Honse 938f67016c Update plugin API to version 2, add unregister functions for all ResourceManager callbacks 2021-12-29 22:50:00 -06:00
Cooper Knaak 6d5ca0b539 Track used paths in DetectRazerARGBController to support multiple Razer ARGB controllers at once. 2021-12-30 01:08:23 +00:00
TheRogueZeta b877787e12 Update resize messages
Wording adjusted by Adam Honse <[email protected]>
2021-12-29 17:02:01 -06:00
Frederik Madsen 5186161fdd Support for wired and wireless BlackWidow V3 Mini 2021-12-29 18:35:54 +00:00
Adam Honse 341607ec3e Free allocated buffer in Linux pure i2c block transfer function 2021-12-29 03:48:19 -06:00
Adam Honse 46d8ca718e Fix pure i2c block read in Linux 2021-12-29 03:45:12 -06:00
Artem Polishchuk 101550bb6c Update RPM .spec file due MR#933 2021-12-29 03:19:49 -06:00
Artem Polishchuk ccbe83919a Fix udev rules install path
Need for Flatpak build and probably useful for other distros like Fedora.
2021-12-29 03:18:12 -06:00
Chris 6e7a59a8d9 Initial commit for Corsair M65 to resolve #1687
+ Adding entry for the Corsair M65 PID (non pro)
+ Registered detector
+ Added UDEV rule to 60-openrgb.rules
2021-12-29 16:56:41 +11:00
morg 84c21919e1 Add support for a RTX2080Ti 11G Gaming variant 2021-12-29 05:09:23 +00:00
Mola19 c6c4e76e04 Fixing bugs in ASUS Aura Mouse Controller
Commit amended for code style by Adam Honse <[email protected]>
2021-12-27 21:58:41 -06:00
Chris be1b982d71 Initial commit for Razer Huntsman V2 TKL
* Adding entry for the Huntsman V2 TKL PID
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-12-27 15:53:05 -06:00
Frederik Madsen c362719771 Added support for the Razer Huntsman V2 Analog 2021-12-27 21:07:32 +00:00
Neneya 35a827d25c Implement new protocol version that adds tracking of keyboard-internal LED IDs rather than assuming they are in the same order as in OpenRGB, as well as sending the LED ID that needs to be updated on every direct update. 2021-12-27 05:12:39 +00:00
Adam Honse f093a66057 Remove Ubuntu 20.10 test stage as 20.10 (groovy) has been removed from Ubuntu's official repos 2021-12-24 04:01:05 -06:00
Artem Polishchuk 6bdc9bae4a OpenRGB.spec: Update icon installation due MR#935 2021-12-23 22:32:19 -06:00
Artem Polishchuk f2ecba739c fix: Icon installation path on Linux
https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#install_icons
2021-12-23 22:31:06 -06:00
Artem c8f82bb768 Add AppStream metainfo 2021-12-23 03:50:25 +00:00
Will Gannon 16aae4d873 Added support for Asus ROG Strix 3070Ti O8G Gaming 2021-12-22 05:21:26 +00:00
Erik Karsten cb0c93d1a3 Refactor NVIDIA_RTX2070S_DEV to NVIDIA_RTX2070S_OC_DEV
Downbinned 1EC7 variant is now the new NVIDIA_RTX2070S_DEV
2021-12-21 21:10:54 +00:00
Erik Karsten 9ca29ea6ec FIX: Use correctly named A8G macro instead of 08G 2021-12-21 21:10:54 +00:00
Erik Karsten 39b15de83e Add alternative release of Strix 2070 Super A8G 2021-12-21 21:10:54 +00:00
Adam Honse 3b2e1396c0 Update warning in README 2021-12-21 01:23:02 -06:00
morg f08736eab8 Resize tab label height depending on the font in use. Fix #1922
Commit amended to fix icon getting cut off in certain cases by Adam Honse <[email protected]>
2021-12-21 00:27:30 -06:00
TheRogueZeta eac2066ad5 Add Gigabyte 3080 Ti Vision OC device ID 2021-12-21 00:11:24 +00:00
morg af1e8ee4c6 E131: Fix RGB order enum value 2021-12-21 00:08:26 +00:00
Chris bf22e175c1 Removing run time error from AURA USB detection
+ Adding LOG message
+ Deleting object
2021-12-21 09:05:51 +11:00
morg 1dd9148399 Corsair peripheral: fix comparison, add debug messages. 2021-12-20 02:05:24 +00:00
Chris M f3494822d0 Adding Roccat Vulcan 120 Aimo to 60-openrgb.rules 2021-12-20 02:04:26 +00:00
eispalast 2162ff2d27 Added support for the Dygma Raise
Commit amended for code style by Adam Honse <[email protected]>
2021-12-19 16:31:45 -06:00
Mola19 4b9fa421da Add support for Roccat Vulcan 12X Aimo keyboards
Commit amended for code style by Adam Honse <[email protected]>
2021-12-19 15:34:29 -06:00
TheRogueZeta 61310c33d5 Add device ID for ROG STRIX GTX1050TI O4G GAMING 2021-12-19 17:48:18 +00:00
Mola19 366fbd9720 Add ASUS Strix Evolve mouse
Commit amended for code style by Adam Honse <[email protected]>
2021-12-14 14:23:38 -06:00
Malte Zietlow 186d8a57d7 Add support for Logitech G915TKL 2021-12-12 00:11:00 +00:00
CoffeeIsLife 9a12042b74 Fixed deathadder elite modes not working 2021-12-09 02:54:12 +00:00
Chris 2bea9992a3 Adding extra column to the Razer Tartarus V2 to resolve #2006
+ Adding key map to remove non existent LEDs
2021-12-08 15:10:03 +11:00
Chris 3d469e78f5 Adding failure logging to DMI info 2021-12-07 00:22:01 +00:00
TheRogueZeta bc3c1b504b Add Palit 3070Ti GamingPro device ID 2021-12-07 00:20:23 +00:00
TheRogueZeta 3ff19efce6 Add TUF-RTX3080-10G-GAMING-PD device ID to the detector 2021-12-05 21:07:34 +00:00
TheRogueZeta 6b1e217afa Fix GPU print messages to use capital letters 2021-12-05 06:08:37 +00:00
TheRogueZeta d78e9442b2 Add Gigabyte RTX3070 Gaming OC 8G v3.0 LHR to the detector list 2021-12-05 06:06:54 +00:00
Qwex de91237de8 Fix Corsair K100 initialization 2021-12-05 01:23:46 +00:00
TheRogueZeta fe59f75b5b Update spacing and text in warning messages
Commit amended to make DRAM/Motherboard warning common between the Windows and Linux messages by Adam Honse <[email protected]>.  Line breaks in the OS-specific paragraphs removed as I found them unnecessary, especially when the line is already wrapped before the break.
2021-12-04 00:07:05 -06:00
Mola19 ec1cb11621 Add layout, version, save, brightness to AsusTufKeyboard
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-12-03 23:42:44 -06:00
TheRogueZeta 33e15cfeaa Add Corsair Strafe Red PID to the detector 2021-12-04 00:22:18 +00:00
Chris a64d3a8287 Reverting syntax error introduced in d0cb93dec4 2021-12-02 17:45:00 +11:00
TheRogueZeta f1c2a1eb3f Update GPU deivce logging to use common string 2021-12-02 05:53:27 +00:00
Chris 39c0689129 Adding Gigabyte RTX 2060 OC V2 to resolve #1980
+ Adding entry to `pci_ids.h`
+ Registering detector in Fusion1 GPU controller
2021-12-02 13:47:22 +11:00
Chris 2b346bfb7e Adding Coolermaster MP750 Large PID to resolve #1981
+ Adding PID and registering detector
+ Adding entry to UDEV rules
2021-12-01 18:03:17 +00:00
TheRogueZeta a653e8ddcc Add Aorus RTX 2070 XTREME device id to RGBFusion2GPU detector 2021-12-01 18:02:50 +00:00
TheRogueZeta 3541787c11 Add MSI MPG Z390 Gaming Edge AC PID to the detector 2021-12-01 18:02:15 +00:00
Chris 310447c5f0 Adjusting QSS and palette to resolve #1976
+ Adding global QLabel and QTableView to QSS
+ Adding `Link` and `LinkVisited` to palette
+ Ensuring Windows sets a Monospaced font for the log console
2021-11-30 18:34:58 +00:00
Qwex 74b2fb5083 Add MSI GeForce RTX 3080 Suprim X 10G LHR to detection 2021-11-30 14:59:17 +00:00
TheRogueZeta 7587bf059e Add alternate Asus TUF 3080 O10G v2 Gaming device ID and update list 2021-11-29 20:51:49 +00:00
TheRogueZeta 3414688eb7 Add Gigabyte Aorus RTX2060S device ID and sort names 2021-11-29 20:49:55 +00:00
NathyTheNetbook ee085a1284 Add Support for evga 1070 ftw hybrid 2021-11-29 15:25:30 +00:00
TheRogueZeta 74bef5d290 Add MSI MS_7D25 VID to the device detector 2021-11-28 18:13:42 +00:00
Chris M e9390a82d8 Fixing missing keys in matrix map to resolve #1973 2021-11-28 18:09:24 +00:00
TheRogueZeta b241768201 Add Corsair Ironcalw RGB device ID 2021-11-28 07:44:58 +00:00
sanchezzzs 2ccd141dab Add logitech g pro keyboard support 2021-11-27 21:28:42 +00:00
Qwex 9afaccc747 Add direct mode support for msi gpus 2021-11-27 21:02:48 +00:00
Triqqo af9af2fbe3 Added ASUS TUF 3090 (non-OC) detection 2021-11-27 18:31:18 +00:00
Sam B f5e5c58a35 Added ASUS ROG STRIX 3080 O10G WHITE and ASUS TUF RTX 3080 10G V2 GAMING 2021-11-27 18:19:35 +00:00
Shelby Moore 4b1ceff9fc Added GeForce RTX 3080 Ti AORUS XTREME WATERFORCE 12G 2021-11-26 20:24:05 +00:00
Mola19 e55df516d4 fix usb interface for Asus TUF M5 2021-11-26 18:30:05 +00:00
Adam Honse 44d7e27404 More Alloy Origins matrix fixes 2021-11-26 00:41:26 -06:00
Adam Honse 173862666e Add right shift to matrix layout for HyperX Alloy Origins 2021-11-25 23:53:43 -06:00
Chris M e5782aa253 Adding B450 AORUS ELITE V2 to the GigabyteRGBFusion2SMBus controller 2021-11-25 20:36:08 +00:00
morg d68c398128 Dark theme: add missing entry to QSS file (QTextEdit) 2021-11-25 20:34:52 +00:00
Patrick Robin dfb322b054 Added MSI GeForce RTX 3080 10GB Gaming Z Trio detection 2021-11-25 20:33:04 +00:00
Mola19 f97eae1650 fix pid for Asus TUF M5 2021-11-24 21:54:37 +00:00
1000001101000 81b48adcf5 Gigabyte RGB Fusion 2 GPU controller
Commit amended for code style and to rename Static to Direct mode by Adam Honse <[email protected]>
2021-11-24 15:43:18 -06:00
1000001101000 e36b52136c Add functions to i2c_smbus for pure i2c block transactions
Commit amended to rework API and change for code style by Adam Honse <[email protected]>
2021-11-24 15:42:54 -06:00
Chris M aaa60d7d6f Changing cast type to avoid segfault resolving #1960 2021-11-24 06:50:18 +00:00
Adam Honse 1e760e2368 Use timeouts on Corsair Lighting Node HID reads to improve speed on Linux 2021-11-23 21:14:46 -06:00
Chris M 2648923366 Initial commit for Razer Naga - Left Handed mouse to resolve #1928 2021-11-24 02:28:23 +00:00
Viktor Walter f8e5d31275 Adding line for controlling the Mystic Light RGB on the MSI MAG Tomahawk z390... 2021-11-24 02:26:59 +00:00
Alex 65a886ea60 Add Gigabyte RTX3080 Vision OC 10G to detection 2021-11-23 19:53:23 +00:00
Alex 41059464da Add Gigabyte RTX3070 Ti Vision OC 8G to detection 2021-11-23 18:21:09 +01:00
Adam Honse befc88871a Add Do Not Show Again box to LOG_DIALOG, using std::hash to hash the dialog string 2021-11-23 00:31:25 -06:00
Stijn Bannink 468889c36f Updated Effects Engine Plugin url 2021-11-22 18:38:04 +00:00
Chris M d0cb93dec4 Adding Logitech G903 V2 to the Logitech common controller to resolve #1946 2021-11-22 18:31:31 +00:00
Alex 1bbf5c4b26 Add ASUS TUF 3060Ti O8G OC to detection 2021-11-22 18:29:48 +00:00
Adam Honse c788192349 Accidentally removed Apply command from SetAllColorsEffect function in ENE controller 2021-11-22 03:35:37 -06:00
Adam Honse d69848e4e5 Repeat XPG SSD reads on Windows if they fail 2021-11-22 03:31:35 -06:00
Adam Honse 2c57607baf Add missing ENE channel name case for DRAM LEDs 2021-11-22 03:02:31 -06:00
Adam Honse 41f75d958c Add XPG Spectrix S40G ENE interface for Windows 2021-11-22 01:53:13 -06:00
Adam Honse af43171066 Add NVMe path to XPG Spectrix S40G controller 2021-11-22 00:55:35 -06:00
Adam Honse c21bc267fd Fix windows stupidity 2021-11-22 00:26:51 -06:00
Adam Honse 1333130235 Add XPG Spectrix S40G ENE interface for Linux 2021-11-22 00:14:19 -06:00
NicolasNewman 7b63813cdb Add storage device type
Commit amended from original XPG Spectrix S40G merge request by Adam Honse <[email protected]>
2021-11-22 00:12:30 -06:00
Adam Honse 82c02b48aa Implement ENESMBusInterface to abstract away the specific I2C/SMBus interface implementation used by the ENE SMBus controller. This will allow for alternative interfaces such as NVMe controllers (XPG Spectrix S40G) and USB Mass Storage controllers (ROG Arion SSD enclosure). 2021-11-21 23:25:59 -06:00
Alex c92e1db2dc Fix Gigabyte GPU detection test to resolve #1496 2021-11-22 02:57:24 +00:00
morg aee13c45c9 Set dark theme to warning popup if needed 2021-11-22 02:56:13 +00:00
Adam Honse 408ea734f9 Update Razer PC Case Lighting Kit IPU values to match Chroma HDK 2021-11-21 20:55:12 -06:00
Triqqo 7bc32bd282 Added ASUS TUF 3090 OC 2021-11-20 11:10:59 +01:00
morg 8de3407ffb Make sure to exit the app if we have to. 2021-11-19 20:26:27 +00:00
Alex 2f5a9f7b12 Add ASUS ROG STRIX 3090 O24G GAMING WHITE OC to detection 2021-11-19 20:54:31 +01:00
Chris 2c6faf079c Adding sanity check to razer_get_serial to resolve #1939
* Check serial_string to ensure only ASCII characters are returned

Commit amended to remove unnecessary logging by Adam Honse <[email protected]>
2021-11-19 13:31:51 -06:00
Alex 104254b3c4 Add ASUS TUF 3080 to detection 2021-11-19 17:53:58 +01:00
TheRogueZeta 922659cab0 Remove NVIDIA Windows only print and apply to all i2c interfaces 2021-11-18 23:04:14 -08:00
Kenny Wottrich 1aadca4876 Add ASUS STRIX RTX 3070 08G V2 GAMING 2021-11-18 21:29:38 -06:00
NedEX 90f80cfe76 Added ASUS TUF RTX 3070 O8G V2 GAMING 2021-11-19 01:12:16 +00:00
Adam Honse 9410878d40 Add ASUS ROG Strix RTX 3060 O12G GAMING (#1422) 2021-11-18 16:34:01 -06:00
Adam Honse 6b9278bf8c Add ASUS ROG Strix RTX 3070 08G White (#1450) 2021-11-18 16:26:46 -06:00
Adam Honse 2224eca8b7 Add ASUS ROG Strix RTX 3080 010G GAMING (#1848) 2021-11-18 16:03:45 -06:00
Adam Honse cfedb19268 Add two more ENE ASUS GPUs 2021-11-18 15:42:52 -06:00
morg af3f473843 Crucial RAM: Add 1ms delay between each address tests. 2021-11-18 20:57:52 +00:00
Adam Honse e27cc4d0af Add ASUS RTX 3070 and 3090 GPUs to ENE controller 2021-11-18 20:53:57 +00:00
morg cd80fba82c Add a 'restart required' info near the theme and log console settings 2021-11-18 16:27:05 +01:00
morg b34be12202 Fix missing qss rule - related to EE plugin issue 74 2021-11-18 14:48:41 +00:00
Petzep daab545b65 Added MSI RTX 3080 Ti Suprim X 12G detection 2021-11-17 21:11:20 -06:00
Qwex 9fe43eb3a6 Implements EVGA K|NGP|N 1080 Ti and 1080 ftw2 2021-11-18 03:10:05 +00:00
Thomas Rohloff 92dda2f390 Fix i2c detection on Linux.
Signed-off-by: Thomas Rohloff <[email protected]>
2021-11-17 20:45:16 -06:00
Milan Cermak 5166316ca1 Add support for SteelSeries Rival 7x0 mice 2021-11-17 19:57:42 +01:00
Maximilian Kronenbürger e8da0592bb Adds support for Asus ROG Strix 2070S A8G with older BIOS Version (8706) 2021-11-16 21:30:43 +00:00
Alex 7d40205291 Add Alder lake cpus for the detection 2021-11-16 16:56:45 +01:00
Chris 55269cff8a Fixing missing keys in matrix map to resolve #1918
* Re-arranging `led_names` to have the numpad at the end to accomodate both full size and TKL variants
- Removing redundant `led_names_tkl` from RGBController_SteelSeriesApex.cpp
- Removing redundant `keys_tkl[]` from SteelSeriesApexController.cpp
* adjusted matrix maps to index correct `led_names[]`
* adjusted `keys[]`and `keys_m[]` for new indexing in colors[]`
2021-11-16 10:33:00 +11:00
gxcreator 6369968a31 Added initial Palit GPU 30xx support 2021-11-15 19:00:22 +03:00
gxcreator 1d643f31b6 Fix Cynosa V2 support 2021-11-14 21:22:11 -06:00
Pablo Ramirez f7f13a6408 Add Razer Seiren Emote
Commits squashed and merge conflicts addressed by Adam Honse <[email protected]>
2021-11-14 20:53:24 -06:00
Chris a89f5df35b Registering the detector for the LOGITECH_G403_PID to resolve #1895
+ Adding the G403 Prodigy to the common protocol.
2021-11-15 12:46:24 +11:00
Adam Honse 42a98b2eb9 Add saving to device support to Gigabyte RGB Fusion GPU controller 2021-11-14 19:21:29 -06:00
Adam Honse a78276896b Add special detection case for Nommo Chroma and Nommo Pro on Linux and MacOS 2021-11-14 19:06:09 -06:00
Adam Honse d96e3cef8c Adjust IPU values for Razer Nommo Chroma and Razer Nommo Pro 2021-11-14 17:39:32 -06:00
Adam Honse d993737803 Add save to device support to ENE SMBus (ASUS Aura SMBus) controllers 2021-11-14 16:28:59 -06:00
Adam Honse 0bc7b568c5 Read speed and direction when reading active mode from ENE SMBus (ASUS Aura SMBus) controllers 2021-11-14 01:33:19 -06:00
Adam Honse c9172e9bb1 Add Direction control to ENE SMBus (ASUS Aura SMBus) effect modes 2021-11-14 01:30:09 -06:00
Adam Honse 4370d35d54 Add Speed control to ENE SMBus (ASUS Aura SMBus) effect modes 2021-11-14 01:15:59 -06:00
Adam Honse e88fafcacd Rename AsusAuraSMBusController to ENESMBusController 2021-11-14 00:33:17 -06:00
Chris b33135dc45 Initial commit for Lian Li O11 Dynamic - Razer Edition to resolve #1894
* Adding entry for the O11 Dynamic PID
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-11-14 12:16:54 +11:00
Chris 496367fc8b Adjusting IPU of Razer BlackWidow V3 Pro and ROG Pugio II due to 30955722 2021-11-14 10:22:28 +11:00
morg e8c18f7cb4 Make the warning dialog support rich text format + make text selectable. 2021-11-12 23:13:24 +01:00
Dan e06318a012 Add new NZXT RGB & Fan Controller model (200E) 2021-11-12 15:23:08 +00:00
morg 9dd46c270c Block signals fort RGB boxes in page constructor to avoid update slots to be called. Fix #1925 2021-11-12 14:08:33 +00:00
morg 08b31e636c Add debug logs to HyperX DRAM detector 2021-11-12 14:26:23 +01:00
morg 8900cb00e4 Add ability to override host ip from yeelight settings 2021-11-12 01:56:31 +00:00
morg eaf42dfa0a Change DLL files to Plugins files in the file chooser. #1919 2021-11-11 13:08:05 +01:00
morg ace9093465 Make sure plugin widget parent is set - fix #1913
Commit amended for code style by Adam Honse <[email protected]>
2021-11-10 23:36:41 -06:00
morg 6877aeefa4 Auto update selection when active mode does not automaticall save to flash. 2021-11-11 05:26:57 +00:00
TheRogueZeta b22c699280 Add EVGA 1070 FTW DT Gaming device ID to the detector list 2021-11-10 22:10:50 +00:00
TheRogueZeta 1ab1dbed63 Add new device ID for ASUS ROG Strix GTX1080 Ti O11G Gaming to the detector 2021-11-10 21:59:28 +00:00
TheRogueZeta 61be517d41 Add Gigabyte AORUS GTX 1060 Xtreme Edition v1 ID to the detector list 2021-11-09 23:32:42 -08:00
Adam Honse c3e06d732e Attempt to work around Windows compile issue 2021-11-07 15:31:45 -06:00
Adam Honse c74a9849c0 Properly detect I2C initialization fail on Linux and fix dialog always being displayed even when I2C initialization was successful 2021-11-07 14:14:24 -06:00
Adam Honse de4231f3ea Show dialog if any common I2C/SMBus initialization errors occur 2021-11-07 13:53:48 -06:00
Adam Honse f1e7ea298f Add LL_DIALOG log level, which can trigger the GUI to show a message box containing the log message 2021-11-07 12:28:59 -06:00
TheRogueZeta 695ff3c8a0 Add MSI MPG Z590 GAMING EDGE WIFI PID 2021-11-06 21:41:19 -07:00
Adam Honse d59425c35a Update IPU values for Razer keypads (tested Orbweaver and Tartarus Chroma) and headsets (tested Kraken V2) 2021-11-05 21:30:12 -05:00
Adam Honse de012a0934 Update the rest of the Razer keyboards (except Blackwidow V3, as these seem to differ) to the new IPU values 2021-11-05 21:21:51 -05:00
Adam Honse 4cfc1873de Update the IPU values of all the Razer keyboards I own 2021-11-05 21:09:41 -05:00
Adam Honse 11cbfa01d6 Update IPU values for Razer Blade 14 2021 2021-11-05 15:05:17 -05:00
Adam Honse 3d0027e5ff Update IPU values for Razer Blade Pro 2017 2021-11-05 19:32:28 -05:00
Adam Honse b39a1269f7 Return LL_TRACE for getLogLevel when log console is enabled 2021-11-05 19:31:51 -05:00
Adam Honse 2a8b763ff4 Add Razer Blade Pro 17 2020 and 2021 to RazerController (no keymaps yet) 2021-11-05 13:46:15 -05:00
Chris 24cddcc01f Adjusting IPU of Razer Cynosa Chroma V2 due to 3095572260 to resolve #1907 2021-11-05 23:34:51 +11:00
Adam Honse c595f5b88b Adjust Razer Kraken 7.1 and Chroma HDK interfaces 2021-11-04 22:01:57 -05:00
TheRogueZeta 803099067e Add Gigabyte RTX 2070S Gaming OC 3X White device ID to the detector 2021-11-05 00:40:19 +00:00
Adam Honse 4391f6db60 Attempt to fix https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/1820 by moving return statement 2021-11-04 19:38:23 -05:00
TheRogueZeta 33624d0975 Add ASUS ROG STRIX 2080S O8G Gaming device ID to the detector 2021-11-04 20:00:48 +00:00
Alex fe62e576b3 Add Save settings future to EVGAGPUv1 2021-11-04 19:54:15 +00:00
morg 12ffcccdcd Externalize colors definitions to separate header file. 2021-11-04 13:50:01 +00:00
Mola19 4223cd97b9 add version to Asus Throne 2021-11-04 13:48:09 +00:00
Daniel Cobb f779388794 added compatibility with M602 Griffin 2021-11-04 08:39:37 -05:00
morg 3b49e9329b Add logs for invalid profiles 2021-11-04 13:37:15 +00:00
Christian (Fuchs) c9677fc6a7 Add Ids for MSI RTX3070 Suprim X 2021-11-04 12:22:02 +01:00
Qwex 4738dfbe8d Fix Patriot Viper ram detection 2021-11-04 04:17:44 +00:00
edbgon 87234f4f44 Add support for SteelSeries Apex 3 ten-zone keyboard 2021-11-04 03:58:09 +00:00
TheRogueZeta 7bb745823d Add EVGAv3 controller and supprort for EVGA Ampere cards 2021-11-04 03:49:08 +00:00
Chris 3095572260 Adjusting HID detection to fix false positives
* Adjusting Interface for Razer Chroma
* Adjusting Interface for ThingMBlink

Commit amended for code style by Adam Honse <[email protected]>
2021-11-03 22:25:47 -05:00
Chris 18b0a15e76 Updating IPU values for the Blackwidow V3 to resolve #1890 2021-11-03 20:34:03 -05:00
Mola19 8f55c90fe5 Add version to Asus mice
Commit amended for code style by Adam Honse <[email protected]>
2021-11-03 20:23:47 -05:00
Chris ecbc3c4e50 Updating CM ARGB controller to allow 'Direct' mode for FW0028
+ Adding brightness to all modes
+ Adjusted setLedsDirect() for new protocol (M+ `System Lighting`)
+ Adjusted setMode() to include brightness
+ Adding mutex to guard against collisions
* Correcting a segfault when any zone is set to `off`
- Removing the "All ARGB Headers" tab
- Removing deprecated code
2021-11-03 13:39:42 +00:00
Adam Honse d88aaecb80 Fix issues with RazerController detection logging 2021-11-03 08:27:09 -05:00
Chris 1b05e765ca Initial commit for the Razer Blackwidow V3 Pro
* Adding entries for the Razer Blackwidow V3 Pro in wired, bluetooth and wireless modes
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-11-03 03:14:46 +00:00
TheRogueZeta e02bbda8b7 Add EVGA RTX2080Ti Black device ID and update other RTX2080Ti's to have OC (A) device ID's 2021-11-01 17:37:40 -07:00
TheRogueZeta 37dfa5d858 Add EVGA RTX 2080 Super FTW3 Ultra Hydro Copper device ID to the detector 2021-10-29 12:42:02 -07:00
TheRogueZeta 2e33debf1a Add Intel Comet Lake PCH-V SMBus device ID 2021-10-26 21:26:43 -07:00
TheRogueZeta a6055aa362 Add ASUS ROG Strix 1080 Ti Gaming ID to detector 2021-10-27 03:10:57 +00:00
Chris 4553663b8d Initial commit for the Razer Blackwidow V3 TKL
* Adding entries for the Razer Blackwidow V3 TKL keyboard
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-10-25 23:16:53 +11:00
djdox23 cc741c1932 Update GigabyteRGBFusionGPUControllerDetect.cpp 2021-10-24 00:06:06 -05:00
Akshay 8571a85fb8 Adding support for msi 3070ti suprimx 2021-10-23 09:28:17 +05:30
TheRogueZeta a050a8fa80 Add SteelSeries QCK Prism Cloth 4XL 2021-10-22 21:34:52 +00:00
Chris 6bd23b76bc Correcting inline comments on UDEV rules
* Changing comments to TAGS to maintain device visibility
* Fixing matching ids to lowercase to ensure rules are applied
2021-10-22 19:29:49 +00:00
Adam Honse f13c9c83e0 Additional check for Micron string at 0x1025 for older firmware Crucial DRAM 2021-10-22 00:49:59 -05:00
TheRogueZeta 0841ccb7d1 Add MSI RTX 3070Ti Gaming X Trio 8G device ID to detector 2021-10-20 16:23:25 +00:00
Chris 5251208792 Add ISO key \ to the matrix map 2021-10-20 15:30:21 +00:00
Kendall Morgan 71b7450ec9 Add support for PNY 3090 2021-10-20 15:29:56 +00:00
TheRogueZeta ce4af9726e Update PCI device names to match 2021-10-17 17:18:03 -07:00
Alex 14f9495444 Fix nvapi i2c smbus byte_data read return 2021-10-17 22:42:54 +00:00
Adam Honse 10e7fca211 Code cleanup 2021-10-17 17:17:11 -05:00
Alex 644822f93a Add Gigabyte RTX3080 Ti EAGLE 12G id to detection 2021-10-16 21:03:42 +00:00
Broken Robot 5a0ed6f53b Add Sapphire Radeon 6900xt Toxic 2021-10-16 05:38:42 -05:00
Alex 377793e023 Fix Crucial addresses not loging correctly 2021-10-16 06:30:39 +00:00
Broken Robot 9f93fa49c9 Add MAG X570S TOMAHAWK MAX WIFI 2021-10-16 01:02:03 -05:00
Diogo Trindade ab2d1cee35 Added Gigabyte 2060 OC PRO white pci id 2021-10-15 19:07:29 +00:00
Alex 6cc2009981 Fix NZXT Hue plus not freeing the serialport 2021-10-15 14:04:47 +02:00
Adam Honse 6a56f92542 Add Razer Blackwidow V3 2021-10-14 21:38:50 -05:00
Alex 8f8f19c5c1 Fix very verbose cli param 2021-10-15 02:06:56 +00:00
Qwex 3e2cd68138 Add Gigabyte RTX3070 Ti EAGLE 8G to the detection 2021-10-15 02:06:34 +00:00
Alex 4512fb7f34 Add MSI GeForce RTX 3070 8GB Gaming Trio id to detection 2021-10-14 15:13:14 +00:00
Adam Honse a2d70ba061 Add version (date) string for Crucial controller 2021-10-14 09:56:24 -05:00
Adam Honse 60fae0f848 Use block writes for Crucial direct colors 2021-10-12 22:43:08 -05:00
Adam Honse 64f3a84e53 Enable per-LED color for each Crucial mode, though new sticks only seem to use last value 2021-10-12 22:22:37 -05:00
Adam Honse f37b39e45e Check for Micron string when detecting Aura and Crucial DRAM to ensure right controller gets used 2021-10-12 21:42:01 -05:00
Qwex 3786047f90 Add loging to crucial controller detection 2021-10-12 22:05:29 +00:00
Muneeb Ahmed 5eed012592 Update macOS build instructions 2021-10-12 21:59:42 +00:00
Alex 23f2724df3 Fix my asus rog strix z370 f motherboard smbus not recognized because the subvendor id is 0 2021-10-12 21:59:12 +00:00
D. Stuart Freeman 51391b7a83 send product_id not a bool when instantiating a ducky controller 2021-10-12 21:58:26 +00:00
morg 24cf336ad8 Add SteelSeries QCK Prism 3XL PID 2021-10-12 21:57:57 +00:00
Salvorite de696e317d Add ID 7C71 to 185-byte per https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/1808 2021-10-12 21:56:36 +00:00
morg 0eab54f04f Unload plugin on exit. 2021-10-12 10:37:42 +02:00
Alex 12b12a8551 Add new id for Hyperx Alloy Elite 2 2021-10-09 23:55:48 +02:00
Adam Honse 644b76fc86 Remove effect modes from HyperX Alloy FPS as they do not work 2021-10-09 01:41:27 -05:00
Adam Honse 16789ef1f1 Alloy FPS: Don't send extended packet, increase time between packets to 10ms to eliminate flickering 2021-10-09 01:35:08 -05:00
Adam Honse c52260912f Alloy FPS doesn't have extended zones, so zero out extended packet 2021-10-08 23:02:28 -05:00
D. Stuart Freeman 5e4bc6651a Add Ducky TKL matrix map, select map based on USB PID
Commit amended for code style by Adam Honse <[email protected]>
2021-10-08 22:20:14 -05:00
Adam Honse 09fae4d944 Remove unused zones from Alloy FPS controller 2021-10-08 21:12:54 -05:00
Adam Honse 98d7224220 Split HyperX Alloy FPS and HyperX Alloy Elite into two separate controllers 2021-10-08 21:02:57 -05:00
TheRogueZeta 4026aa488f Add EVGA RTX 2080 BLACK EDITION to detector 2021-10-08 16:58:08 +00:00
TheRogueZeta ec1624a0b0 Add brightness and manual saving to EVGA v2 controller 2021-10-07 20:46:07 -07:00
Chris 99a660490c Razer-Mouse-Bungee-V3-Fix 2021-10-08 01:18:03 +00:00
TheRogueZeta fb6bf0f1ea Add MSI RTX 3080 GAMING Z TRIO 10G LHR device ID 2021-10-07 11:11:20 -07:00
Chris 7ffaa20ba6 Setting Object name for QAction "Lights Off" to resolve #1594
* Setting object name allows SIGNAL / SLOT connection for plugins

Amended action name to PascalCase (ActionLightsOff) for plugin API consistency.  Commit amended by Adam Honse <[email protected]>
2021-10-07 10:09:03 -05:00
Anthony Wang 114cbbef7d Add Sapphire Nitro+ Radeon RX 6600 XT support (#1707)
Commits squashed by Adam Honse <[email protected]>
2021-10-06 23:33:23 -05:00
Adam Honse 3efc267716 Add button to enable/disable log console to settings page 2021-10-06 19:29:45 -05:00
Adam Honse b94663aa03 Disable log console by default, add a setting in LogManager settings section to enable it 2021-10-06 19:16:11 -05:00
Adam Honse 77b924d5f7 Rename Console tab to Log Console 2021-10-06 18:47:30 -05:00
morg 8de3928080 Add console page 2021-10-06 23:34:52 +00:00
Adam Honse f834555fd1 Add Smart Device V2 PID 200F 2021-10-05 08:13:35 -05:00
Muneeb Ahmed b7200016a4 Use mbedtls@2 for macOS 2021-10-03 18:54:06 -05:00
edbgon 970c8d66cd Add ThinkM Blink device controller
Closes #1276
2021-10-03 15:16:00 -05:00
Alex 181514ff81 ASUS_ROG_STRIX_GTX1070TI_A8G_GAMING except zeros for the i2c check 2021-10-03 04:13:24 +02:00
Alex 0c9ee6efba Add log for asus gpu detection 2021-10-03 02:21:49 +02:00
morg e1de0c58eb Set the plugin tray widget parent 2021-10-02 16:30:34 +00:00
Chris f2b89ca086 Adding LED#s for the Diaeresis and Circumflex to the Pro S ISO Layout 2021-10-02 16:29:02 +00:00
Genadii Genadio cf28b0ca1d Add Razer Deathadder V2 Pro support 2021-10-02 16:06:24 +00:00
Adam Honse 944c05814a Attempt to fix Qt file dialog issue in Windows 2021-10-01 14:48:27 -05:00
Chris ea1a754e7d Adding Logitech G703 Hero Wireless mouse to the LogitechCommon controller
* Adding Common Wired entry
* Adding Virtual PID for Linux detection
* Adding UDEV rules for wired / wireless modes
2021-09-30 19:03:28 +00:00
Andreas Cymbal c33a850123 Gigabyte RTX3080 Gaming OC 10G Support (Update GigabyteRGBFusionGPUControllerDetect.cpp) 2021-09-30 18:04:56 +02:00
Chris 57f54b52ee Adding EU (ISO) Layout for the Masterkeys Pro S 2021-09-30 14:52:29 +10:00
Adam Honse bec0751a7f Rearrange Settings tab 2021-09-28 22:44:44 -05:00
Benjamin Cheng 0724d7cfc0 Add ASUS ROG STRIX RX580 GAMING TOP device ID 2021-09-26 18:02:29 +00:00
TheRogueZeta b3b67bd72e Fix NULL assignment for non block transactions in i2c_smbus_nvapi.cpp 2021-09-26 10:37:47 -07:00
Adam Honse 236bdee800 Add MSI 7D15 to Mystic Light controller list 2021-09-25 16:55:03 -05:00
Mola19 20f54e3ac2 Updating ASUS Aura Headset Stand Controller
Commit amended for code style by Adam Honse <[email protected]>
2021-09-25 12:55:07 -05:00
FerrahWolfeh 8d74cfb9b3 RGB Fusion 2 SMBUS: Improve digital rgb timings and add brightness controls to special modes 2021-09-24 19:27:06 +00:00
Adam Honse dd47256f06 Initialize WMI only once, remove init calls from everywhere it is called and initialize it once as a static variable
* See comment: https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/1581#note_684260496
2021-09-24 18:05:04 +00:00
TheRogueZeta eaaed7fd83 Patch i2c_smbus_nvapi for I2C_SMBUS_I2C_BLOCK_DATA and add GPU logging 2021-09-24 17:54:42 +00:00
Mola19 e8e09b3953 Update ASUS Mouse Controller
* Merge Request !746
* Add Brightness control
* Add Save support
* Fix speed values to be device-specific
* Use relative IDs for modes since they differ per mouse

Commits squashed by Adam Honse <[email protected]>
2021-09-23 21:52:32 -05:00
Chris M caa398b508 Adding support for Colermaster MM720 to resolve #1782 2021-09-23 13:55:06 +00:00
Adam Honse 5d8a58fc24 Add ability to save client connections to auto-connect on launch 2021-09-22 20:58:45 -05:00
Chris f4b7dacfd5 Moving G502 variants to the common controller for diagnosis and testing
* Code cleanup to remove depracated code
* Implementing workaround for mode breathing / spectrum cycle value swap
2021-09-22 14:40:36 +00:00
Adam Honse 9a0faba2f4 Add Disconnected mode to Philips Hue Entertainment controller, which allows for disconnecting and reconnecting Entertainment Mode without restarting OpenRGB 2021-09-21 10:19:04 -05:00
Adam Honse f59b637852 Add link to the OpenRGB SDK Documentation wiki page in the README 2021-09-19 23:05:43 -05:00
Adam Honse b6cc0bda21 Fix profile packets in SDK client not including the null terminator for the strings 2021-09-19 22:44:34 -05:00
TheRogueZeta 822a12ac29 Add EVGA RTX 2070 SUPER Black device ID 2021-09-19 23:37:26 +00:00
Adam Honse b8246b6140 Add Philips Hue settings page 2021-09-19 02:32:17 -05:00
abma ea00ca8977 Fixes for creating a Flatpak build, preparation for Flathub
Commits squashed by Adam Honse <[email protected]>
2021-09-18 19:00:45 -05:00
TheRogueZeta d765cb39bd Add EVGA GeForce RTX 2080 SUPER XC GAMING device ID 2021-09-16 21:12:11 -07:00
TheRogueZeta 9f858e1826 Add SubVendor filtering to SMBus controllers 2021-09-17 03:54:50 +00:00
djdox23 a460630f3c Add support for Gigabyte 3060 Ti Gaming OC PRO Rev 1.0 2021-09-14 14:20:16 +00:00
Chris 9b08141ef2 Selectable Git commit ID on the Software Page to resolve #1769 2021-09-13 16:54:48 +00:00
TheRogueZeta 2b78e061a5 Add ASUS ROG STRIX RX5600XT O6G device ID 2021-09-11 21:25:53 -07:00
Adam Honse d6e9ee3978 Add option for introducing a delay (in milliseconds) between direct mode LED packets for the QMK OpenRGB protocol 2021-09-11 20:10:37 -05:00
Thomas Dubosc e4692cb562 Adds ASUS ROG Strix GTX 1660S O6G Gaming GPU 2021-09-10 13:13:37 +00:00
morg 4f62d68f6d Add ability to drag and drop plugin files into the UI 2021-09-08 22:22:31 -05:00
morg 70a2fa81c8 Enable the remove plugin button only when a plugin is selected. 2021-09-09 03:03:44 +00:00
Ksaper 04c430e31b Add a logging message for when openrgb is not enabled in the firmware 2021-09-09 03:01:02 +00:00
Ksaper 56640b5922 Improve logging message 2021-09-09 03:01:02 +00:00
Ksaper 96427c4015 Add a logging message when procotol version is too old 2021-09-09 03:01:02 +00:00
Ksaper 5b02b3430e Add support for saving to eeprom 2021-09-09 03:01:02 +00:00
Adam Honse 4991e7744b Add Yeelight devices settings page 2021-09-06 17:30:55 -05:00
Adam Honse d0260a7eb0 Add Philips Wiz devices settings page 2021-09-06 16:46:39 -05:00
Marcin a6da9a25b7 Simplify Logitech G915 detection logic 2021-09-03 13:54:22 +02:00
Timo Gurr 00197be5fa Do not hardcode the pkgconf command 2021-09-03 04:23:09 +00:00
Adam Honse c0d5529083 Free temporary enumeration from Razer Chroma ARGB controller detection 2021-09-02 23:19:25 -05:00
Qwex 2e032314a4 Fix Razer Chroma ARGB controller detection if interface 1 is earlier in the hidapi enumeration list than interface 0 2021-09-03 04:10:16 +00:00
yawor 7036c05bc2 Add support for Logitech G915
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-09-02 22:46:53 -05:00
Alexey Zagorodnikov 1045af20b2 Add support for another Sinowealth keyboard with PID 0016
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-09-02 22:13:44 -05:00
morg 70024faabd Reviews log messages, fixed some typos and ensure consistency 2021-09-02 13:09:44 +02:00
morg 344e7c7551 Make sure the exit action is the last action in the tray menu 2021-09-02 04:18:10 +00:00
morg 3699889250 Prompt users to resize or setup zones. #1407 2021-09-02 03:30:40 +00:00
morg bdc1b6f3f4 Add Http Hook Plugin to the plugin list. 2021-08-31 23:08:13 +00:00
B Horn b4e76c8281 Fixing breathing + LED setting
Signed-off-by: B Horn <[email protected]>
2021-08-31 23:04:40 +00:00
Chris b72dbf4638 Updating UDEV rules 2021-08-31 23:04:40 +00:00
Chris 61e4c74d6a Code path streamlined and cleanup 2021-08-31 23:04:40 +00:00
B Horn 94ab89c95d Rival 3 support
Signed-off-by: B Horn <[email protected]>
2021-08-31 23:04:40 +00:00
Chris ea238cf6e6 Adding internal row and column count for Coolermaster keyboards
- Removes front light bar row from all but MK750
- Removes Numpad for TKL
+ Splitting out vendor name for clarity on information tab.
2021-08-31 23:03:41 +00:00
Adam Honse db77a76f45 Update AUMA0-E8K40101 Aura SMBus device to use V1 register layout 2021-08-31 13:52:33 -05:00
Adam Honse cbdebf7ec8 Scroll plugins list by pixel rather than by item 2021-08-29 23:09:28 -05:00
Adam Honse 2800e76e9d Add GetTrayMenu to plugin API to provide a dedicated interface for registering a tray menu for a plugin 2021-08-29 22:58:58 -05:00
Adam Honse 2f25c4af7f More plugin updates, enum for location 2021-08-30 02:56:57 +00:00
Adam Honse 702be2401b Add comment indicating location is mandatory, list possible locations, rename SettingsTabBar to SettingsTab for consistency 2021-08-30 02:56:57 +00:00
Adam Honse 524fd057fe Add tab icon fields (string and image) to the plugin information and add comments to make it easier for plugin developers to fill in information structure 2021-08-30 02:56:57 +00:00
Adam Honse 759aa341c2 Code cleanup, only allow one registered callback in PluginManager and PluginPage 2021-08-30 02:56:57 +00:00
Adam Honse 2643ed0d8f Unload old plugin and load new one when replacing an existing plugin during install 2021-08-30 02:56:57 +00:00
Adam Honse 208deaea12 Remove plugin from active plugins list when removing plugin from user interface 2021-08-30 02:56:57 +00:00
Adam Honse 6bacee59f5 Add capability to load and unload plugins 2021-08-30 02:56:57 +00:00
Adam Honse bd2334c186 Add enabling and disabling of plugins when clicking checkbox 2021-08-30 02:56:57 +00:00
Adam Honse 28d590b64d First draft of plugin API changes 2021-08-30 02:56:57 +00:00
TheRogueZeta 90788131ae Add ASUS ROG STRIX RTX 2060S O8G Gaming 8G ID 2021-08-29 11:28:31 -07:00
TheRogueZeta d59388a44c Add ASUS ROG Strix GTX 1050 O2G Gaming device ID 2021-08-28 11:03:27 -07:00
Adam Honse 6b9f7129b3 Add HyperX Pulsefire Core (same protocol as HyperX Pulsefire FPS Pro) 2021-08-27 10:44:45 -05:00
Adam Honse 36f961637e Add Razer Core X to RazerController 2021-08-26 12:26:46 -05:00
TheRogueZeta 3db2c077d8 Send software mode for K68 2021-08-24 22:58:40 -07:00
Adam Honse a20405a6ef Add Plugins tab to settings for installing, enabling, disabling, and removing plugins
* Rework Plugin Manager so that plugins can be loaded after initialization
* Use a callback function to add plugin tabs to the dialog
* Install button lets you choose plugin file, copies it to plugins directory, and immediately loads it
* Remove button deletes selected plugin file from plugins directory - need to add a means to unload it first
2021-08-25 02:44:53 +00:00
TheRogueZeta a28badafb9 Add ASUS GTX 1060 Strix Gaming 6G 2021-08-25 00:24:48 +00:00
TheRogueZeta 33448f9b46 Update names to match drivers/i2c/busses/i2c-i801.c 2021-08-24 17:01:23 -07:00
TheRogueZeta b37b13125d Add Intel Sunrize Point-H device ID 2021-08-24 16:56:33 -07:00
Florian Plasun aa6260273c Add support for the SteelSeries Rival 600
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-08-23 14:37:19 -05:00
Arturo Velázquez 470b27fa43 Added another PID of newer version of NZXT RGB & FAN CONTROLLER 2021-08-23 04:55:17 +00:00
Adam Honse d97cf10953 Add Gigabyte RTX3060Ti EAGLE OC 8G V2.0 LHR 2021-08-22 20:51:31 -05:00
Chris d913707258 Adding brightness to the AMD Wraith Prism Controller
Commit amended to fix brightness issue by Adam Honse <[email protected]>
2021-08-22 20:37:11 -05:00
Chris M 4f24250772 Updating libcmmk to call hid_write() with prepended 0x00 resolving #1673 2021-08-23 00:58:33 +00:00
Qwex 02ca3f32a0 Add Corsair K100 keyboard support (direct mode)
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-08-22 19:43:11 -05:00
B Horn e6dd1e4ef4 Use the correct command for Sensei Mouses
0x09 was the command for older steelseries devices, which can break the LEDs [1]
if used on the more recent sensei series.

[1] https://github.com/FFY00/rival310-re

Signed-off-by: B Horn <[email protected]>
2021-08-22 22:54:56 +00:00
Dominic Laumer 5e3ab417bc Added support for NZXT Underglow (300 mm) RGB strips 2021-08-22 21:52:36 +00:00
Adam Honse f98e80fada Change vendor name for AlienwareCotnroller to just Alienware 2021-08-22 16:48:28 -05:00
mhdsallal 6d6c324927 Add Support to Alienware AW510K Keyboard
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-08-22 16:48:13 -05:00
Pol Rius 752f1ebcdc Revert "Implement saving for steelseries rival and sensei mice"
This reverts commit eef55e6d6e.
2021-08-20 22:21:21 +02:00
Adam Honse 7d7d3aaffc Don't draw the LED view or handle mouse events when the selected mode doesn't use per-LED colors 2021-08-20 10:10:44 -05:00
Chris dfcc436472 Removing rising timer on packet intialisation to allow for true Direct mode 2021-08-20 14:08:24 +00:00
Adam Honse ab9a7674bd Initial HyperX Pulsefire Haste support 2021-08-19 19:20:12 -05:00
TheRogueZeta 7e77edb8d6 Fix K70 Mk2 keymap and software direct mode 2021-08-17 21:24:07 -07:00
Adam Honse 7327644d26 Use TabLabel for all tab labels and adjust the TabLabel widget layout so that it aligns with the previous HTML label layout. Height is slightly increased for two-line labels. 2021-08-17 19:44:20 -05:00
Adam Honse bbc16a9ae2 Rename DeviceTabHeader to TabLabel, so we can use it for all tabs rather than just device tabs 2021-08-17 19:13:28 -05:00
Harry Kantas 507cece3cc Added Razer Book 13 (2020) under Master Device List 2021-08-17 23:29:15 +00:00
TheRogueZeta 3367892b75 Add EVGA RTX 2080TI XC Hybrid Gaming to detector 2021-08-17 12:33:37 -07:00
Spucknapf 468cf81a61 fix dangling reference in HueEntertainment 2021-08-17 16:42:39 +02:00
Jeffrey Geer 988f56ee5a Added MSI RTX 3080 Ti Gaming X Trio 12G PCI IDs to MSIGPU 2021-08-17 13:12:09 +00:00
Chris 0281274379 Correcting Usage Page for the ROG Gladius II Wireless 2021-08-17 13:08:26 +00:00
Chris 042d4b1240 Correcting Usage Page for the ROG Pugio II to resolve #1706 2021-08-17 13:08:26 +00:00
Spucknapf 959a8350b0 Fix dangling reference 2021-08-17 09:59:49 +02:00
Harry Kantas 0419d1ab84 Add support for Razer Book 13 (2020)
Commit amended for code style by Adam Honse <[email protected]>
2021-08-16 07:25:41 -05:00
Chris a479c424c9 Adding support for the MSI MEG X570 GODLIKE (MS-7C34)
* Requested on Discord by @TheGrandFinale2001
2021-08-15 20:25:35 +00:00
Chris f3c977f5fb Adding the G910 to UDEV rules 2021-08-15 13:29:07 +10:00
Chris 0883a48be3 Reordering zones on the Lancehead Tournament Edition to resolve #1698 2021-08-14 18:14:43 +00:00
Chris c2bc34081e Code Cleanup for the Asus Aura Mouse Controller
* Moved device mapping to separate AsusAuraMouseDevices.h
* Changed map structure from strings to uint8
* Changed RGBController_AsusAuraMouse.cpp code to accomodate new mapping
* Added device_pid to AuraMouseController constructor to ensure cross platform compatibility
* Reversed speed min / max as controller expects 255 as "slow"
* Separated SaveMode() to avoid extra boolean
2021-08-14 18:20:16 +10:00
Mola19 926f62f512 Add more ASUS Mice, make ASUS mouse controller more flexible
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-08-14 00:53:01 -05:00
K900 f735adf956 SapphireGPUController: add RX6700XT Nitro+ 2021-08-13 03:10:14 +00:00
Alex af5006e08f Add abnt / key to the controlled leds 2021-08-12 03:01:20 +00:00
Vova b06f62dddd Add MSI GeForce RTX 3060 Ti 8GB Gaming X Trio LHR 2021-08-10 15:27:10 -05:00
Adam Honse f307250e67 Add MSI Mystic Light 7C83 2021-08-09 13:31:18 -05:00
Adam Honse d5e94c3d60 Add MSI Mystic Light 7C81 2021-08-09 17:18:58 +00:00
Chris b7a0a3b4f7 Updating controller to allow 'Direct' mode for FW0012
+ Adjusted setLedsDirect() for new protocol
2021-08-09 05:37:24 +00:00
Chris 3e6acbd049 Initial commit for the Coolermaster MM711 mouse
* Implemented brightness
* Implemented GetStatus packets for UI set up
2021-08-07 20:12:02 +00:00
TheRogueZeta 1ba3c6adde Add RTX 3060 v2 Device ID & update Gigabyte detector for #1676 2021-08-06 13:15:16 -07:00
Alex 15376d939b Add MSI GeForce RTX 2080 Duke 8G OC to detection 2021-08-05 19:31:49 +00:00
TheRogueZeta 722f819edd Add ASUS ROG STRIX RX480 Gaming OC device ID 2021-08-04 20:04:05 +00:00
Alex 6e0e14260b Add Gigabyte RTX3070 Ti Gaming OC 8G to detection 2021-08-03 04:26:30 +00:00
Auirsblade 7dc2a93c4a Add Mystic Light 7D06 (185-byte) 2021-08-03 04:26:06 +00:00
Adam Honse d13d54fcfd Fix access conflicts in HyperX controllers where keepalive thread was directly accessing hardware 2021-08-02 12:41:24 -05:00
Chris 2d141be356 Adding brightness to the Coolermaster Small ARGB Controller 2021-08-02 12:32:02 +00:00
morg 5efd3e0a20 Make sure to display both line even with scaled resolution. Fix #1666. 2021-08-02 12:30:00 +00:00
Adam Honse dc142f40d3 Add settings tab for QMK OpenRGB protocol devices 2021-08-01 21:27:29 -05:00
Adam Honse bfe8e7a997 Move OpenRGBSerialSettingsPage files to a folder 2021-08-01 21:04:52 -05:00
Adam Honse c8b3c2a2ea Move OpenRGBE131SettingsPage files to a folder 2021-08-01 20:39:12 -05:00
Ferrah Aiko Wolf 8534b3d8dc Add digital modes to RGB Fusion 2 SMBus controller 2021-08-01 20:22:17 -05:00
Erik Hanson 3605e53d83 Add EVGA RTX 2080 SUPER FTW3 Ultra 2021-08-02 01:16:46 +00:00
Santeri Pikarinen e7e311d931 HyperX Pulsefire Dart: Various fixes, feature additions and clean up
* Fixed payload missing the Report ID (caused issues with Windows, issue #1069)
* Fixed an invalid usage page value for wired mode
* Fixed a potential memory leak when rescanning devices (issue #1007)
* Fixed an issue where multiple color changes were sent too fast
* Renamed "Trigger Fade" mode to the [standardized mode name](https://gitlab.com/CalcProgrammer1/OpenRGB/-/wikis/Common-Modes#common-openrgb-modes) "Reactive"
* Added proper brightness control
* Added manual saving functionality
* Cleaned up some indentations
2021-08-02 01:15:07 +00:00
Alexander Acevedo 9f18edf90e Fix Alienware Controller Brightness 2021-07-30 03:39:05 +00:00
morg 762ecbcc1f Display device name on 2 lines if needed. Fix #1480 2021-07-28 23:40:13 +00:00
Adam Honse ac921f8a29 Fix some build warnings 2021-07-28 18:28:16 -05:00
Alexander Acevedo 87ba08602f disable LTO for debian package builds 2021-07-28 20:16:32 +00:00
Pol Rius 8e6e5c1bec Disable lto build (fedora) 2021-07-28 20:15:48 +00:00
Qwex e3b66c7f60 Add Razer Blade 15 (Late 2020) PID to the detection 2021-07-28 16:04:46 +00:00
edbgon 85cd198324 Fix for profile loading Steelseries Apex 2021-07-28 16:02:24 +00:00
Alexander Acevedo 6997017879 Add Dell G7 15 7500 Support
Commit amended by Adam Honse <[email protected]>
2021-07-28 10:52:02 -05:00
Pol Rius eef55e6d6e Implement saving for steelseries rival and sensei mice 2021-07-28 10:28:22 -05:00
morg 057b3d0878 Add some rules to qss for missing targets. Fixes #1651 2021-07-28 11:01:02 +02:00
TheRogueZeta 26259ff863 Fix Gigabyte RTX 2060S Gaming OC 3x White ID 2021-07-26 15:18:35 -07:00
TheRogueZeta 2a9bf67e56 Update ASRock Polychrome SMBus logging messages 2021-07-25 23:54:06 +00:00
TheRogueZeta 755828a337 Add Intel Rocket Lake SMBus ID to PCI IDs 2021-07-25 16:32:23 -07:00
Ksaper 4081cda8df Add QMK OpenRGB Protocol Revision B Controller
* Updates for direct mode initialization to work with the new QMK Update
    * Merge each 8 GetLEDInfo HID calls into one single call
    * Merge all IsEnabledMode HID calls into one single call
    * Update protocol version

Commits squashed and amended by Adam Honse <[email protected]>
2021-07-25 17:01:50 -05:00
Adam Honse cbc07aae0e Re-add unmodified QMK files for merging 2021-07-25 15:16:17 -05:00
Adam Honse 6cee56ac78 Rename QMK OpenRGB controller to QMK OpenRGB Rev9 controller prior to merging new protocol MR 2021-07-25 15:05:01 -05:00
Chris 84de7ebc3e Splitting out the WootingTwoKeyboardController
* Added WootingOneKeyboardController.h
* Added WootingOneKeyboardController.cpp
* Added WootingTwoKeyboardController.h
* Added WootingTwoKeyboardController.cpp
* Unified the WootingKeyboardController as a virtual class
* Modified WootingKeyboardControllerDetect to use the new controllers
* Wooting One & Two use the old controller
* Wooting Two LE & HE use the new controller
* Adding Udev rules for the WootingTwo LE & HE
2021-07-25 18:52:00 +00:00
Chris 41ac14dd41 Adding DEBUG logging & detection fixes to resolve #1592
+ Logitech detection and set up includes debug logging for troubleshooting
+ Adding a pre check to LogitechLightspeedController::GetSerialString()

* Rearranging check logic to ensure that all usages per device are bundled
* Adding PID check to usage bundle to ensure we don't roll into the next device in hid_device_info
- Code cleanup to remove dev_use1 post detection & decoupling the bundled usages for wired lightspeed devices
* Changing wired lightspeed devices to REGISTER_HID_DETECTOR_IPU to target the correct FAP long message usage

+ Adding device validity check isValid() from @cheerpipe
+ Adding wireless check into connected() prior to initialising device
+ Adding the getDeviceFeatureList() back into the Logitech Lightspeed device set up
+ Changed getRGBconfig() for more robust detection

+ Adding Powerplay Mat virtual PID for Linux
+ Adding Logitech G733 for testing @ I=2 P=0xFF43 U=514
+ Adding LOGITECH_POWERPLAY_MAT_VIRTUAL_PID to Linux detection
+ Adding LOGITECH_POWERPLAY_MAT_VIRTUAL_PID and LOGITECH_G733_PID to 60-openrgb.rules
+ Adding LOGITECH_DEVICE_TYPE mapping and extending validity to include new HEADSET type
2021-07-26 00:09:33 +10:00
Youda008 c63aba1066 added OpenRGB-cppSDK to the list of existing SDKs 2021-07-25 08:05:25 +00:00
Adam Honse 6623508757 Update icons for E1.31 settings and Serial settings tabs 2021-07-25 03:04:11 -05:00
Adam Honse 221e332440 Add settings tab for configuring serial LED strip devices. Add the ability to name them. 2021-07-24 02:27:14 -05:00
morg c17b519c08 Update plugins list in README 2021-07-23 11:32:03 +02:00
Chris 06d2a6ce4d Changing _WIN32 definition to the more universal USE_HID_USAGE to correct detection for libhidapi > v10 2021-07-22 12:19:31 +10:00
morg c96d1c24b0 Review plugins list in README. Add Scheduler plugin. 2021-07-21 14:28:51 +00:00
B Horn a1dcf7c1cf Using <chrono> to measure time in the LogManager
`clock()`, which was used previously, behaves differently on various platform.
So switching to this lets us use a standard part of the language which
avoids this.

Signed-off-by: B Horn <[email protected]>
2021-07-21 00:52:01 +00:00
Diogo Trindade d9de79abfe Added Asus Rog Strix 1070 ti 8GB pci id 2021-07-20 19:51:03 -05:00
Adam Honse 952bb6330f Fix swatch adding when clicking black swatch 2021-07-16 22:21:10 -05:00
Adam Honse 18bd9d07b4 Initialize BlinkyTape LED count to zero for consistency with other ARGB controllers 2021-07-16 22:15:14 -05:00
Matt Mets 0db567b8bc Add support for BlinkyTape LED controllers
This adds support for the Blinkinlabs BlinkyTape controller, a
USB-powered digital LED strip controller. Devices are detected
automatically by scanning for their VID/PID, and connected to using
serial.

This code was tested in Windows.

Commit squashed and amended for code style and to fix Linux build by Adam Honse <[email protected]>
2021-07-16 20:07:26 -05:00
Adam Honse dc19fad608 Scroll per-pixel rather than per-item on E131 config page 2021-07-14 23:29:22 -05:00
Adam Honse 6b9a97f78f Add settings page for configuring E1.31 devices 2021-07-14 23:02:58 -05:00
Adam Honse 156ebbc071 Make settings page scrollable 2021-07-14 18:23:16 -05:00
Adam Honse 8af4909621 Add brightness control for Gigabyte GPUs 2021-07-14 17:41:23 -05:00
Chris 5d30d6127b Fix for brightness in Direct mode in Fusion2USB controller
* Added definition for `RGBFUSION2_BRIGHTNESS_MAX`
* Updated modes to reflect new definition
* Added brightness to mode `Direct`
2021-07-13 19:00:09 +00:00
TheRogueZeta b36673bcad Add Gigabyte GTX1060 G1 Gaming 6G OC to detector 2021-07-12 21:48:42 +00:00
Pescu 4dfc515242 Add PCI ID for Gigabyte RTX 3060 TI Gaming OC 2021-07-12 20:54:12 +00:00
TheRogueZeta 49af56eff5 Add PCI ID for Gigabyte RTX 2060S Gaming OC 3X White 8G 2021-07-11 06:11:16 +00:00
Pescu 32ac0c12e0 Add support for GIGABYTE GeForce RTX 2060 SUPER GAMING OC 8G 2021-07-11 06:10:47 +00:00
Jesse Kawell 2f6000c83a Add Razer "Basilisk V2" mouse 2021-07-09 23:48:53 +00:00
Chris f3a840c30d Adding the MSI 7C95 motherboard to 185byte controller
* As requested by @orangejake on Discord
2021-07-09 02:28:10 +10:00
edbgon b14abd9987 Update CMR6000 controller to direct mode and remove unreliable mode detection routine 2021-07-08 11:13:09 +02:00
Chris bd8704a8a6 Adding more DEBUG information
Commit amended for code style by Adam Honse <[email protected]>
2021-07-07 23:33:03 -05:00
Chris 79e1233635 Adding Wooting Two keyboards support
+ Add full matrix map
+ Amend WootingKeyboardController::SendDirect to support extra keys
+ Adjust WootingKeyboardController::wooting_usb_send_buffer to support extra buffer
2021-07-07 23:18:24 -05:00
Chris ad6d605c88 Changing Wooting KB detection to PU
* Simplified detection
* Adding more useful data to `info page`
* Adding DEBUG logging
2021-07-07 23:15:14 -05:00
Shayne Hartford 62906e7f10 Add Wooting LE & HE and fix Wooting initialization on Linux
Commits squashed and amended to remove commented code by Adam Honse <[email protected]>
2021-07-07 23:08:00 -05:00
Nic Wolfe efb19ab6c6 Add support for CoolerMaster RGB Controller
Commits squashed and amended for code style/brightness control by Adam Honse <[email protected]>
2021-07-07 22:55:24 -05:00
Travis Sandmann 85631bfd52 Initial HP Omen 30L Support
Commits squashed and amended for code style/brightness control by Adam Honse <[email protected]>
2021-07-07 22:19:40 -05:00
Cheerpipe e52ba49815 Add Comet Lake H SMBUS PCI ID
From a 10900k with a z490 chipset.

More info on: https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-i801.c
2021-07-08 02:34:01 +00:00
Cheerpipe 002fc4f2b3 Fix Logitech G815 keyboard freezing
Keyboard may freeze when running GHUB and OpenRGB at the same time. This fixes this.

Commits squashed by Adam Honse <[email protected]>
2021-07-07 17:04:48 -05:00
Adam Demasi a008f14e38 Add ASUS Falchion 65% keyboard. 2021-07-07 21:57:14 +00:00
Cheerpipe 3100f72601 Fix frames skip when using external effects engine 2021-07-07 16:56:02 -05:00
morg c9a1e1bf85 Make sure to load the zones sizes. Fixes #1602 2021-07-06 10:16:35 +02:00
Gabriel Marcano 9062be4462 New device: Dell G5 SE Alienware LED Keyboard
- 4 region keyboard LED controller (tried to keep controller generic
   for other setups as well)
 - Support for Static, Flashing, Morph, Spectrum Cycle, Rainbow Wave,
   and Breathing modes
 - Implemented rate limiting for sending reports since the controller
   crashes if too many reports are sent too quickly. Also implemented
   functionality to prevent sending frivolous update requests
 - Implemented support for setting mode, color, tempo, and period
   independently for each zone (not fully exposed in UI). Morph mode
   exposes 2 colors per zone.

Commit amended for code style by Adam Honse <[email protected]>
2021-07-06 01:51:55 -05:00
Alex 4c41a8834d Fix some logging mistake 2021-07-05 23:07:00 -05:00
John Simons ef36664ef2 Gigabyte 3070 Gaming OC 8G 2021-07-05 22:53:27 +00:00
Adam Honse 1c6a67e056 Add automatic save flag to Corsair Lighting Node hardware modes 2021-07-05 13:39:35 -05:00
Adam Honse aa8c6b6fff Revert "Use block writes for updating all LEDs at once on ASUS Aura SMBus"
This reverts commit 618faf42ec.
2021-07-05 12:43:25 -05:00
Adam Honse 68d27e58f4 Add brightness control for Logitech Lightsync mice (only for Spectrum Cycle and Breathing modes) 2021-07-05 12:39:59 -05:00
morg ec5e71424c Enable/Disable devices checkbox now takes filter into account. Fix #1587 2021-07-05 09:05:40 +00:00
Adam Honse cbee33706f Fix some issues with mode constructor 2021-07-05 04:04:27 -05:00
Adam Honse 811139107e Add automatic save flags to Sinowealth Mouse controller modes 2021-07-05 04:01:33 -05:00
Alex 4af8614fce Add formated loging for device detection
Commits merged and amended for code style by Adam Honse <[email protected]>
2021-07-05 03:23:34 -05:00
Adam Honse 5a7879415f Add automatic save flags to Redragon Mouse controller modes 2021-07-04 21:18:13 -05:00
Adam Honse 25747a6c26 Add automatic save flags to EVision Keyboard controller modes 2021-07-04 21:18:06 -05:00
Adam Honse 5130f07e21 Add saving support to network protocol 2021-07-04 21:17:55 -05:00
Adam Honse eade8fea1a Add save to device support to RGBController 2021-07-04 21:17:45 -05:00
Adam Honse c2a353ec6f Add brightness control to Corsair Lighting Node controller 2021-07-04 21:17:36 -05:00
edbgon b49aeacd18 Added brightness control to CMR6000 device for color cycle mode
Commits merged by Adam Honse <[email protected]>
2021-07-04 21:17:21 -05:00
Chris 3ec91186e8 Add brightness control to Gigabyte RGB Fusion 2 USB Controller
Commit split from original brightness commit by Adam Honse <[email protected]>
2021-07-04 21:17:14 -05:00
Adam Honse f91823c0d5 Add brightness control to RazerController 2021-07-04 21:17:04 -05:00
Chris a46eccef3c Added brightness to profile loading and saving
* Bumped profile version to 3
* Loading a v1/v2 profile onto a device with brightness will work
* Loading a v3 profile onto a device without brightness also works
* Add profile version parameter to Get/SetModeDescription

Commit amended for code style and to update versioning by Adam Honse <[email protected]>
2021-07-04 21:16:56 -05:00
Chris 6fd2ea9276 Initial commit for Brightness in RGBController API
* Added DeviceHasBrightness() = false; to RGBController as overridable
* Added Brightness to Mode struct
* Added BrightnessSlider to the OpenRGBDevicePage ui and the supporting
code to pass to the RGBController

Commit amended for code style and to split API changes and controller changes out by Adam Honse
<[email protected]>
2021-07-04 21:16:49 -05:00
Chris f6c038857a Adding custom swatch widget
* Supports configurable set palette
* Ability to add custom colours
* Can be resized and geometry changed at compile

Commit amended by Adam Honse <[email protected]>

* Ability to add custom colors disabled for now
* Scaling by width, not height
* Fill rows first, then cols
2021-07-04 15:49:19 -05:00
TheRogueZeta 60f189fe06 PCI ID for Coffee Lake S SMBus controller 2021-07-03 17:20:07 -07:00
TheRogueZeta 300a4654a2 PCI ID for Coffee Lake SMBus controller 2021-07-03 17:18:56 -07:00
Jay Schmidek 5a597d4bb2 Add Gigabyte RTX 3090 Gaming OC 24GB 2021-07-03 09:06:36 +00:00
Chris 7e7db6642d Swapping zones on the Naga Trinity
* Swapping Logo zone with the Scroll Wheel zone to correct the zone order as reported by @pbanj on Discord
2021-07-03 13:19:23 +10:00
TheRogueZeta b7c8e9603c Update SteelSeries QCK PID names to match sizes 2021-07-02 19:04:53 +00:00
Adam Honse 06c6ec2196 Add MacOS autostart support 2021-07-02 01:23:50 -05:00
Adam Honse 5a968f5ae6 Fix leds_per_update issue in QMK controller 2021-07-01 22:04:58 -05:00
Matthew Mets 07df6b7a1f Bugfix: Use correct path when opening serial devices on Windows 2021-06-30 19:32:35 +00:00
Chris 22117c7ece Initial commit for the Razer Basilisk Ultimate
* Adding entries for the Razer Basilisk Ultimate in wired and wireless modes
* Adding entry for the Razer Mouse Dock Chroma
* Registered detectors
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-06-30 12:05:40 -05:00
Jeremy Plsek 3fe27ba27d Update save-as dialog
This moves the label and text input outside of the QDialogButtonBox
(which is mainly meant only for buttons) and into its own layout.

This makes the window resize work slightly better and renders the layout
slightly better.
2021-06-30 16:55:28 +00:00
Thomas greenwood 2e540e2c6f Use consistent concurrency model with CoInitializeEx 2021-06-30 13:40:29 +00:00
Andy Getz 710a079a9a Add a second USB ID for SteelSeries QCK Mousemat
New ID is 1038:150a; I have tested the patch with my mat.
2021-06-30 13:38:24 +00:00
Chris a15dd256dc Initial commit for the Razer Huntsman Mini
* Registered detector
* Added metadata to RazerDevices.h
* Added capabilities to RazerController.cpp
* Added UDEV rule to 60-openrgb.rules
2021-06-30 13:33:49 +00:00
morg e29eb71131 Add QToolButton + QMenu styles. Fixes #1464 2021-06-30 15:00:06 +02:00
Adam Honse bac580dfc5 Add Razer Blade 2021 Advanced to RazerController 2021-06-29 10:32:23 -05:00
TheRogueZeta 92ed4a39aa Add ASUS ROG STRIX 1650S to detector 2021-06-28 04:27:25 +00:00
TheRogueZeta cab77e72ec Correct spelling mistake for Cooler Master Small ARGB detector 2021-06-27 19:45:41 -07:00
Kamil Trzciński 1c172c80b7 Add Gigabyte 2080S GAMING OC 8GB 2021-06-26 20:48:20 +00:00
Alex 1ace5f34e5 Add gigabyte 1070Ti pci id to the detection 2021-06-26 19:18:10 +00:00
Tom Greenwood 7624a70b67 Add Start at Login Option (Windows and Linux implemented, MacOS stubbed)
This merge request adds the following:

1. A new class AutoStart, designed to add login startup entries for Linux (FreeDesktop autostart) and Windows (Shortcut File).
1. CLI options to enable, disable and check for autostart. (--autostart-enable, --autostart-disable and --autostart-check). e.g. OpenRGB.exe --autostart-enable "--startminimized --server --profile Blue" --nodetect --noautoconnect
1. UI options to enable "Start At Login" with several other options (see screenshots in Comments)

Tested on KDE Neon and Windows 10 x64 (x64 build).

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-06-26 02:45:48 -05:00
no 30d70035fb Update README - nproc instead of -j8
Commits squashed by Adam Honse <[email protected]>
2021-06-26 00:33:50 -05:00
Chris b76265cf7d Convert mode from struct to class, add automatic initialization
* To avoid filtering in the profile manager and to ensure that color_mode is set to MODE_COLORS_RANDOM correctly
for HW that has the mode flags

MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR

The values for speed_min, speed_max, colors_min and colors_max NEED to be initialised to allow for a saved
profile to load correctly in `ProfileManager::LoadDeviceFromListWithOptions`

Commit amended for code style by Adam Honse <[email protected]>
2021-06-26 00:29:51 -05:00
Alex cdcc2995b9 Add ASUS ROG Strix Scope, Scope RX, and Scope TKL keyboards
Commits merged and amended for code style by Adam Honse <[email protected]>
2021-06-25 23:03:03 -05:00
mike 724fce7051 fix bug with keyboard layout where HOME, END, PGUP, and PGDN keys were in the wrong position 2021-06-25 23:02:55 -05:00
Kasper 6ea3cdb8b7 QMK Improvements - make LEDs per update configurable
* Fix Windows include error that breaks std::min/max if a Windows header is included (tracked down to
net_port.h)

Commit amended by Adam Honse <[email protected]>
2021-06-25 23:02:38 -05:00
LC 3523044a29 Update README.md
- Add an instruction for updating grub for users on Fedora.
- Improve formatting.
- Related to this issue - https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/1534
2021-06-25 20:23:31 -05:00
Alex 3652624a01 Add Asus 1080TI 11G pci id 2021-06-26 01:57:41 +02:00
Dima-Kal 325169b16b Add support for Sinowealth keyboard
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-06-24 22:51:01 -05:00
edbgon 6b184f2b8c Initial G933 support 2021-06-22 17:19:47 +00:00
Adam Honse 742b477f6f Add keymap for Blade 14 2021 2021-06-21 20:27:58 -05:00
Adam Honse b4b22e2dce Add Razer Blade 14 2021 2021-06-21 12:31:10 -07:00
TheRogueZeta 6a134a1f75 Add logging to ASRock Polychome SMBus detection and fix stack smashing caused by Polychrome block read. 2021-06-21 04:45:48 +00:00
Chris 920542e8b6 Adding "random" to the acceptable inputs for the --color switch to align with GUI
* Allows for the selection of color_mode = MODE_COLORS_RANDOM from the CLI for devices that support it
* For all other implementations will return a random colour from the `human_colors` struct

* To avoid filtering in the profile manager and to ensure that color_mode is set to MODE_COLORS_RANDOM correctly
for HW that has the mode flags

MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR

The values for speed_min, speed_max, colors_min and colors_max NEED to be initialised to allow for a saved
profile to load correctly in `ProfileManager::LoadDeviceFromListWithOptions`

Commit amended by Adam Honse <[email protected]> to remove Aura SMBus change, will add as its own
commit.
2021-06-20 23:35:37 -05:00
David Lee 09db948f9f fixed typo in SteelSeriesControllerDetect.cpp 2021-06-21 04:12:05 +00:00
Alex fdfe6f764e Update Fedora build instructions in readme
git, make, gcc are pre-installed; qt-creator isn't necessary, qt5-qtbase-devel provides qmake-qt5; libusb is now libusbx; libmbedtls is actually mbedtls
2021-06-20 23:11:10 -05:00
Stefan Silviu 510ac44d27 Fix typo 2021-06-20 23:07:42 -05:00
Stefan Silviu 840aae45a4 Detect Redragon M716 Inquisitor mouse 2021-06-20 23:07:10 -05:00
Alex 9d36d6743a Add Asus Strix rx570 O4G pci id 2021-06-18 22:31:24 +02:00
Adam Honse 50f3c4c4b8 Add Womier K66 to EVision Keyboard controller 2021-06-18 11:01:57 -05:00
Adam Honse bec99489fb Add Womier K87 to EVision Keyboard controller 2021-06-17 21:13:02 -05:00
TheRogueZeta 90338354a6 Update PCI ID Macros to test against device ID 2021-06-17 10:48:06 -05:00
Alex 1053b83782 Fixing wmi issue when device detection thread run nth time 2021-06-17 10:47:59 -05:00
Mola19 b49edaafb0 Added support for ASUS TUF Gaming K7
* Always sends save command when changing modes, this should be reworked to be optional in a future commit

Commit amended for code style by Adam Honse <[email protected]>
2021-06-17 10:47:50 -05:00
Alex ba3aae8780 Fix Razer Ornata V2 Detection 2021-06-16 21:22:44 +02:00
Dave 518c05976e * Fix Smart Device V2 in H710i, bought in June 2021 - it uses a new PID 2021-06-16 13:20:36 -05:00
Alex 276895359a Add UK layout support for HyperX Alloy 2021-06-16 13:13:39 -05:00
mike 4a333e9b50 Fixed HyperX Alloy Origins Core HID communication on Windows
* Added serial number support
  * Amended to pass in HID device information for version number rather than enumerate a second time

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-06-13 16:00:05 -05:00
Vavooon a20a19e570 Add HyperX Origins Core support (direct mode)
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-06-13 00:02:32 -05:00
Roman Stingler c665c877fa Bad deallocator in AsusAuraSMBusController.cpp 2021-06-13 04:43:35 +00:00
Adam Honse 3ccab3d949 Fix Logitech common files out of order in project file 2021-06-12 00:18:00 -05:00
Mola19 fcb617ee47 Add support for ASUS ROG Throne Qi headset stand
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-06-12 00:16:40 -05:00
Alex ce7478737c Add Steelseries Rival 650 wireless support
* Also reworks the LED update functions to handle zones with more than one LED
  * Some other minor code style cleanup in the Rival code

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-06-11 18:12:40 -05:00
edbgon 8736f1b169 Initial support for Logitech X56 Rhino Hotas
Commit amended for code style by Adam Honse <[email protected]>
2021-06-11 17:01:42 -05:00
Alex 18939e6754 Add ASUS ROG Gladius II Wireless
Commit amended for code style by Adam Honse <[email protected]>
2021-06-10 23:13:26 -05:00
TheRogueZeta 806d77d2d6 Convert Polychrome read to i2c_smbus_read_block_data 2021-06-10 22:33:50 -05:00
TheRogueZeta b17b6340bd Test to see if Patriot Viper DRAM modules exist before performing writes
Amended to use read check as quick check doesn't work for SPD addresses by Adam Honse <[email protected]>
2021-06-10 21:09:26 -05:00
TheRogueZeta 46d353bc66 Fix missing % that got lost in transfer 2021-06-10 00:10:28 -05:00
TheRogueZeta b72de2fe5e Update README.md for Hue build requirements 2021-06-07 10:49:52 -07:00
TheRogueZeta 24d1c5f2ae Update HID device log prints to use caps 2021-06-06 16:44:05 -07:00
DrZlo13 bf99a5f250 New device: Obinslab Anne Pro 2
* Renamed "Obins Lab" to "Obinslab" as that is the name that I saw used most frequently in store listings.

Commit amended for code style and to update the name by Adam Honse <[email protected]>
2021-06-06 14:17:57 -05:00
Thomas greenwood 0755959741 Implement modes for Logitech G213 Keyboard 2021-06-06 02:41:56 +01:00
Jeff P fe11115f32 Add support for Corsair Commander Core / Elite Capellix
Amended for code style by Adam Honse <[email protected]>
2021-06-04 22:45:36 -05:00
Adam Honse 9a00f1d6d8 Fix CI for Philips Hue changes
* Debian builder has been upgraded to buster due to incompatible mbedtls package on stretch
  * Mint 19, Ubuntu 18.04 have been disabled for testing as they use incompatible mbedtls packages
2021-06-05 03:18:12 +00:00
Adam Honse b7e2103f41 Disable parsing certificate, it doesn't appear to be necessary to control Hue and prevents build on older mbedtls releases 2021-06-05 03:18:12 +00:00
Adam Honse 87043cde65 Fix issue with Windows in hueplusplus library 2021-06-05 03:18:12 +00:00
Adam Honse 2aaf7017ee Philips Hue (Standard and Entertainment Mode) Support using hueplusplus library
* Dependency hueplusplus-1.0.0 added from https://github.com/enwi/hueplusplus/releases/tag/v1.0.0
* Dependency mbedtls-2.24.0 added (Windows-only) from https://github.com/ARMmbed/mbedtls/releases/tag/mbedtls-2.24.0
2021-06-05 03:18:12 +00:00
mike 22acdd1fed Check return code from hid_get_serial_number_string() in GetSerialString()
Amended for code style by Adam Honse <[email protected]>
2021-06-04 22:14:05 -05:00
Thomas greenwood 4e4eade335 Pad commands for 0x62 with 4 zero bytes 2021-06-05 02:52:37 +00:00
Joe Smith 9f7812bc7b No more qt5-default package in debian
[Looks](https://askubuntu.com/questions/1335184/qt5-default-not-in-ubuntu-21-04) like this [was removed](https://bugs.launchpad.net/ubuntu/+source/qtbase-opensource-src/+bug/1926802) in Debian `bullseye` + Ubuntu `21.04`.
2021-06-05 02:18:02 +00:00
TheRogueZeta 6029a5b0c5 Add Non OC 2060S PCIe ID, correct RAM 2021-06-04 15:51:15 -07:00
TheRogueZeta 74a49ec3e6 Add ASUS ROG Strix RTX 2060S A8G Evo to detector 2021-06-04 15:50:17 -07:00
Short_String_Dev 21dd2ee66a Add ASUS ROG STRIX 2070 A8G Gaming 2021-06-04 08:57:23 -04:00
Short_String_Dev f76d78775c Add ASUS ROG STRIX 2070 O8G Gaming 2021-06-04 08:25:15 -04:00
TheRogueZeta af01ff5de3 Add ASUS ROG Strix 1080 O8G to detector 2021-06-03 17:53:40 +00:00
Tom Greenwood f2f84fc7e3 Add support for Gigabyte RTX3060 Gaming OC 12GB 2021-06-03 17:07:48 +00:00
TheRogueZeta 939f46c025 G Pro Wired are only 1 zone devices 2021-06-03 08:31:37 -07:00
TheRogueZeta a1469041e5 Add ASUS ROG Strix 1070 Gaming to detector 2021-06-03 02:27:14 +00:00
TheRogueZeta f39b57fadc Add Gigabyte RTX 2060 Gaming OC Pro to the detector 2021-06-03 02:26:00 +00:00
Dennis Piecha 08a985a216 Add ASUS ROG STRIX RTX 2070S O8G Gaming 8G 2021-06-02 22:01:52 +02:00
Harry Kane 7054badf4f Update URL to HTTPS 2021-06-02 03:30:01 +00:00
SR_team 332a04f94c Add missing key for ANSI layout of Logitech G815 into LED View 2021-06-01 20:41:57 +00:00
TheRogueZeta ae88771e79 Correct G502 Wireless (wired) PID in linux builds 2021-06-01 00:19:50 -07:00
TheRogueZeta 09e524314f Correct G502 PS and G502 Hero detector changes. 2021-05-31 23:47:37 -07:00
Adam Honse 8e8573e7d0 Increment version number post-release 2021-06-01 01:35:51 -05:00
Adam Honse 405ff7f6a5 OpenRGB version 0.6 2021-06-01 00:05:08 -05:00
Adam Honse 563ff31fe3 Wait up to 5 seconds for the local server connection to retrieve all controllers before continuing, so that CLI mode has all controllers available for applying changes 2021-05-31 23:44:33 -05:00
Chris 4a6c4f0e52 Adding test stages to Linux builds
* Build based on new OpenRGB docker image (Debian Stretch)
* Adapting AppImage build scripts to new docker image
* Changing postinstall script to avoid error

+ Adding test stage keyword
+ Adding needs keyword
+ Debian 10       Buster 32bit & 64bit
+ Debian 11       Bullseye 32bit & 64bit
+ Fedora 34       v34 64bit only
+ Ubuntu 18.04LTS Bionic 32bit & 64bit
+ Ubuntu 20.04LTS Focal 64bit only
+ Ubuntu 20.10    Groovy 64bit only
+ Mint   20.1     Ulyssa 32bit & 64bit

Amended to leave Bullseye builds in place by Adam Honse <[email protected]>
2021-05-31 23:32:09 -05:00
TheRogueZeta be838aa1d6 Update Logitech Lightspeed detector names 2021-06-01 04:13:46 +00:00
Adam Honse 68b0287cdd Make detectors for QMK OpenRGB controller configurable 2021-05-31 18:35:07 -05:00
Adam Honse d18f66f995 Implement dynamic detectors - run-once functions that can register detectors dynamically 2021-05-31 13:55:22 -05:00
Chris 259ba898b0 Enumerate Wireless connected Logitech Lightspeed (Unifying) devices
+ Added common library for Logitech Protocol
    + Moved wireless detection to the LogitechProtocolCommon.cpp
    + Adding Direct Mode to the wireless control
    + Copying the mutex from Lightsync controller to avoid interference
    + Adding LED count info to controller constructor

+ Created a new Logitech class
    + Added Feature list enumeration
    + Added DeviceName detection from device

* Changed LogitechGProWirelessController to accomodate generic devices
    * LED count from device is now used in RGBController setup

+ Adding Windows specific detection as Linux Kernel handles this already.
+ Adding virtual PIDS for wireless detection
    * LOGITECH G403
    * LOGITECH G502
    * LOGITECH G703
    * LOGITECH G900
    * LOGITECH G903
    * LOGITECH GPRO
+ Adding Logitech G900 Wired Gaming Mouse PID
+ Adding other all lightspeed mice to wired detector for testing
    * Genericised and optimised code paths
    * Speed up wireless detection

Commit amended for code style by Adam Honse <[email protected]>
2021-05-31 10:59:04 -07:00
Adam Honse d8252281ce Prevent theme box from saving theme setting until initialized 2021-05-30 21:08:23 -07:00
Kasper a5928518c1 Implement QMK OpenRGB Procotol
This commit squashes commits by:

    Kasper <[email protected]>
    jath03 <[email protected]>
    Adam Honse <[email protected]>

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-05-30 18:41:55 -05:00
Felipe Guaycuru b3b392b3e2 Make Corsair K55 behavior be closer to iCue's 2021-05-30 22:33:31 +00:00
Adam Honse 1df6e8f559 Add geometry settings to settings page 2021-05-28 12:07:38 -05:00
morg c1b9f79052 Add settings page under settings tab 2021-05-28 16:37:41 +00:00
Adam Honse 4764198df7 Add Logitech G910 Orion Spark 2021-05-27 10:25:20 -05:00
Kasper f04da17e4e Corsair hydro platinum fix soft brick once again by increasing delay to 5ms 2021-05-27 14:31:43 +00:00
Adam Honse 6dda941d97 Add debug logging for Aura SMBus DRAM detection 2021-05-26 00:41:57 -05:00
harre b2be4a9411 Added include needed by arch #1427 2021-05-26 02:09:50 +00:00
Adam Honse 9b974d7108 Update Logitech G910 LED list to add G keys and second Logo, update matrix 2021-05-25 19:15:45 -05:00
Adam Honse 4509b9d2e9 Initial support for Logitech G910 Orion Spectrum - G Keys and G910 bottom logo not working yet 2021-05-25 15:38:53 -05:00
Adam Honse 4287128fb4 Attempt to implement !513 using shared mutex pointer for each detected mouse/mousemat combo 2021-05-25 11:48:16 -05:00
Adam Honse a2a93daaab Add numerical_labels setting to UserInterface settings 2021-05-24 23:08:39 -05:00
Kasper f9c7df21f1 Add a number as a label for LEDs that otherwise would be nameless in DeviceView 2021-05-24 22:51:37 -05:00
k1-801 65623d3978 Autoclose updated
Commit amended for code style by Adam Honse <[email protected]>
2021-05-24 22:45:24 -05:00
k1-801 abfb6ea22d Tiny fixups (server conn info leak closed, log va leak closed, config dir optimized)
Commit amended for code style by Adam Honse <[email protected]>
2021-05-24 22:41:12 -05:00
Adam Honse 33b840b2b9 Revert change disabling redetection of i2c interfaces and fix disconnected WMI failure by always reconnecting before query 2021-05-24 18:38:26 -05:00
Adam Honse 2a3a736f09 Don't delete i2c bus list on redetect, as WMI query issues prevent them from being redetected 2021-05-24 17:00:18 -05:00
Adam Honse 8ada7cd6da Add MSI Mystic Light 185 7D13 (MSI MEG B550 Unify), tested on Discord by Markellus 2021-05-23 23:25:47 -05:00
Adam Honse cb656ebdf7 Don't print Running standalone message when local server connection succeeds 2021-05-23 23:22:46 -05:00
TheRogueZeta 707df85d1f DMI Info for MSI-RGB boards 2021-05-23 00:08:43 -07:00
TheRogueZeta 78955de65f Get DMI info for MSI USB boards 2021-05-23 00:08:43 -07:00
edbgon a8e2feddbe New controller for SteelSeries QCK Mousemat 2021-05-22 23:49:20 -05:00
TheRogueZeta fd31b4db7d Fixed Dev and Feature index for PowerPlay 2021-05-22 15:48:06 -07:00
TheRogueZeta a87d2aead7 PowerPlay mat should only be 1 zone. 2021-05-22 15:45:34 -07:00
Adam Honse 2afddf9bbf Only join/delete E1.31 keepalive thread if it has actually been created 2021-05-21 20:43:14 -05:00
TheRogueZeta 1f2d298e14 Add ASUS ROG-STRIX-RTX2080-O8G-GAMING 2021-05-22 00:42:52 +00:00
Adam Honse cdae9b1e78 Fix client registration for auto-detected local server 2021-05-21 19:25:12 -05:00
Diogo Trindade 4c6653bdb4 Asus ROG Strix Flare - Added ISO LEDs 2021-05-22 00:01:32 +00:00
Adam Honse e5d16dedcc Add option in settings file to pass client controllers through to server 2021-05-21 16:58:42 -05:00
Adam Honse d103906c75 Override UpdateLEDs() for RGBController_Network to always process synchronously 2021-05-21 16:39:03 -05:00
Adam Honse 5e959f6bc3 Add Pipeline Status badge to README 2021-05-20 20:56:40 +00:00
Adam Honse 618faf42ec Use block writes for updating all LEDs at once on ASUS Aura SMBus 2021-05-19 21:49:22 -05:00
edbgon 961fbc2585 Update rules file in accordance to detectors 2021-05-19 09:44:15 +02:00
Adam Honse eb9710ee26 Fix name change 2021-05-18 23:21:56 -05:00
Adam Honse 39de6fc175 Code style cleanup for Logitech G Lightsync RGBController 2021-05-18 22:57:45 -05:00
Adam Honse 39d989891e Code style cleanup for Logitech detector 2021-05-18 22:53:38 -05:00
TheRogueZeta 734912732c Rework individual Logitech mouse controllers into a single shared controller and add Direct mode.
Squashes all commits from Merge Request !495
2021-05-19 03:25:55 +00:00
Adam Honse 47160ac7cd Add visitors badge to README 2021-05-18 18:26:14 +00:00
Daniel Augustin 9f0fa7eb67 Add Asus Aura on Asus H570-PRO Motherboards 2021-05-17 18:42:22 -05:00
TheRogueZeta a6cfcdeb1d Retrieve motherboard name for ASUS boards via DMI
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-05-17 18:34:21 -05:00
Cheerpipe cf922db7d5 G815 performance tweaks
* Remove some unnecessary operations on the G815 controller
* Use reserved memory for key color array to avoid excessive memory copy on vector pushback

Commits squashed and commit message amended by Adam Honse <[email protected]>
2021-05-17 18:29:17 -05:00
Cheerpipe 8a56a5103c Packet read size fix. Should be 20, not 200
This bug causes rare unwanted volume changes.
2021-05-17 17:41:59 +00:00
TheRogueZeta 3026a10ff8 Add ASUS ROG STRIX RTX 2080 Ti O11G Gaming 2021-05-17 13:17:44 +00:00
morg f54ecd8b1b Add detection start and end callbacks 2021-05-17 08:14:00 -05:00
Adam Honse d88f9979a9 Rework network client callback pipeline - route callbacks from clients through ResourceManager so that device list callbacks get called. Fixes remote devices not showing up in plugins. 2021-05-14 23:29:34 -05:00
Martin Hartl 94370c24a8 cli: Fix mode specific colors for range 2021-05-14 15:14:11 +02:00
nightsky30 c29a38a8c9 Fix the number of LEDs for Lancehead devices; 16 LEDs, not 18 #6 2021-05-13 23:03:06 -05:00
Artur Pieniążek 651a8d2f2a Handle K95 Platinum ANSI and ISO layouts
Commits merged by Adam Honse <[email protected]>
2021-05-13 22:51:03 -05:00
silas a51e2f8ac8 Make device list change warning callback
This will be helpful for keeping plugins from crashing

Commit amended to change callback function name for consistency by Adam Honse <[email protected]>
2021-05-13 22:30:38 -05:00
k1-801 02ba8a799e Server freed from ResourceManager
Commit amended to revert OpenRGBInterfaces.h header (may reconsider in the future) by Adam Honse
<[email protected]>
2021-05-13 22:10:41 -05:00
alpemwarrior a6bc30a31c Add 64-bit .rpm package build to CI for Fedora. 2021-05-14 02:02:28 +00:00
Chris 81bf61867f Amending QTwindow geometry config to resovle #1245
+ Code to initialise config values.
    + Added "load_geometry" variable so that you can load set values but not have to "save_on_exit"

Commit amended for code style by Adam Honse <[email protected]>
2021-05-13 20:59:32 -05:00
Martin Hartl 1f21d9ad62 Asus mainboard: Rename RGB headers
There is currently no difference in naming for the integrated
motherboard LEDs and the motherboard non-addressable RGB headers. This
commit renames the RGB headers in the RGB controller. The number of RGB
headers is read from the configuration table.

Commit amended for code style by Adam Honse <[email protected]>
2021-05-12 22:35:21 -05:00
Pol Rius 658eb3a1f7 Initialize profile_loaded properly 2021-05-12 18:27:22 +02:00
edbgon a567aa1e62 Update Ducky to support ISO layouts 2021-05-12 07:44:41 +02:00
Adam Honse d3ee9911b5 Change UI_Settings key to UserInterface 2021-05-10 22:17:11 -05:00
Chris 166bc13dec Adding ability to save QTwindow geometry to config solving #1245
+ Load window geometry from config added to constructor
+ Save window geometry to config added to destructor
+ Added an opt out boolean to allow for saving / not saving geometry
+ Consolidated the Minimize settings into the "UI_Settings" in config
+ Code to initialise config values.

Amended for code style by Adam Honse <[email protected]>
2021-05-10 22:15:20 -05:00
Adam Honse 47e4dc7431 Add MSI Mystic Light 7D09 PID to 185 byte controllers list 2021-05-10 08:47:10 -05:00
Adam Honse 20b149aeef Implement direct mode for Corsair K57, only in wired mode. 2021-05-09 15:09:29 -05:00
Adam Honse 91dd39f3f3 Start implementing Corsair Wireless (K57) controller. Detects both keyboard and dongle, no other functionality implemented yet 2021-05-08 13:40:19 -05:00
Dmitry K 647670a04a Skip Inpout-dependent detection when inpout is not available 2021-05-06 23:11:30 +00:00
morg 23db961be3 Refactor OpenRGBDialog2 + add SettingsTab as plugin location 2021-05-06 17:57:28 +02:00
morg 59a0bec399 Toggle plugins visibility for all locations 2021-05-06 01:16:06 +00:00
morg 3543218722 Automatically create the plugins folder 2021-05-06 01:02:08 +00:00
morg 0fbe96f8ec Add button to open settings folder 2021-05-06 01:00:34 +00:00
Gabriel Marcano 30f88d5fcf Fix mismatched new[] / delete
- The device description buffer was allocated using new[] in
   RGBController. Make sure to free it using delete[].
2021-05-05 02:07:19 -07:00
Adam Honse 198a246af1 Add timeouts to prevent lockup of Razer Naga Epic Chroma 2021-05-02 12:02:46 -05:00
silas 827c78da13 Fix window getting larger when spamming toggle LED view
Commit amended to only implement size hint change by Adam Honse <[email protected]>
2021-05-02 11:33:20 -05:00
Adam Honse 08d495941e Add effect handling for per-LED Razer devices 2021-05-02 01:50:19 -05:00
morg 8ee0b12ef8 Auto hide/show plugin containers
Commit amended for code style and to add comments by Adam Honse <[email protected]>
2021-05-02 00:01:52 -05:00
TheRogueZeta 84371c3cd8 Add Asus Strix 2070S A8G Gaming PCIe ID 2021-05-02 02:16:24 +00:00
morg 0b4a8ffce2 Software info: add website link, make links clickable 2021-04-30 21:02:35 +02:00
Bernhard Held 2df555d864 Add support for Gainward RTX 2070 Super Phantom 2021-04-30 16:06:34 +00:00
Adam Honse 429068760d Fix more warnings 2021-04-30 10:56:40 -05:00
Tam Do 47877193a7 rename mode to reactive, behavior is that key changes from color1 to color2 when pressed, and fades back to color1 after some time configured by the speed parameter 2021-04-30 01:42:49 +00:00
Tam Do 7952a035b5 Continued the work started by !62 with respect to adding support for Cooler Master keyboards using the libcmmk library.
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-30 01:42:49 +00:00
Lukas Niederbremer 7e4b9c0cb0 Add experimental Cooler Master MasterKeys support 2021-04-30 01:42:49 +00:00
shawnc722 b3e1cc6552 Fix invalid serial numbers crashing the python interface.
(cherry picked from commit a5ff98940cbe2e91ecaf2445febd87e373f35723)
2021-04-29 19:17:09 +00:00
shawnc722 13b1da9d64 Removed various brightness modes and made highest brightness into Direct mode. Can use relative intensity to set brightness, ie RGB(255,0,255) (magenta) at ~60% brightness is RGB(150,0,150)
(cherry picked from commit b43cfd3b04e9faf980e319c596be5de49140f9b0)
2021-04-29 19:14:54 +00:00
Adam Honse 5616f547e4 Fix a bunch of warnings 2021-04-29 13:42:49 -05:00
shawnc722 37d58ee1a6 Add support for ASUS GTX 1080 2021-04-29 00:17:10 +00:00
TheRogueZeta 74b05f17fd Add ASUS ROG STRIX RTX 2060 EVO Gaming 6G 2021-04-26 12:31:44 -07:00
Chris 6a8524f371 Adding ASUS GTX 1070 Strix OC
* As per yozukiRR adding 0x8599 for the ASUS GTX 1070 Strix OC
2021-04-26 09:42:38 -05:00
k1-801 ad2cd89128 Add filesystem header to select between std::filesystem and std::experimental::filesystem depending on system availability.
Commit amended by Adam Honse <[email protected]>
2021-04-25 22:55:49 -05:00
shawnc722 05d72ba96f Fixed detection of Apex 350 and tweaked display names of OG Apex 2021-04-25 17:06:57 -05:00
k1-801 402423e338 Fix a memory leak in NetworkClient 2021-04-25 16:55:15 -05:00
Adam Honse dd4865c3e0 Add initial version of the Plugin Container, which prevents plugins from resizing the window unless shown 2021-04-23 22:45:30 -05:00
Adam Honse 30623b36fd Use Debian Bullseye for CI builds 2021-04-23 22:37:39 -05:00
Chris 9b8d2c38d3 Changed "Set All Devices"
* Changed `Set All Devices` to `Apply To All Devices`
* Added a tooltip to `Apply to All`
* Added Black and White quick colour swatches and left them "not flat" to
ensure visibility in Light and Dark mode.

Commit amended to fix display issues on Windows and to group buttons in layout by Adam Honse <[email protected]>
2021-04-23 11:44:59 -05:00
Adam Honse be1fbc27ca Add device type string for virtual device 2021-04-22 16:24:48 -05:00
TheRogueZeta 95f40039eb Correct errant hyphen with underscore and update CI names 2021-04-22 19:44:17 +00:00
TheRogueZeta cd8e455b79 Update CI config to rename artifacts.zip with build info 2021-04-22 00:08:17 -05:00
morg 57db50f642 Fix VisualMap plugin URL in README 2021-04-22 00:11:22 +00:00
TheRogueZeta 9789ac0fde Remove 7z compression on Windows builds 2021-04-21 16:05:48 -07:00
morg c45f864977 Add virtual device type 2021-04-21 21:37:50 +02:00
Gareth Hancock 28af2da1c2 Added support for EVGA 2080Ti FTW3 Ultra 2021-04-21 15:44:44 +00:00
Cheerpipe b32ef76121 Creative Sound BlasterX G6 support
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-21 00:03:46 -05:00
edbgon a300e80f47 AMD Reference 6800 cards custom mode set to static 2021-04-21 04:15:32 +00:00
Boothin e098bb5c41 Added Rival 310 and compatible special editions to detector 2021-04-20 22:25:17 -04:00
Adam Honse f06b0ee952 Use NULL (shared) libusb context 2021-04-20 20:30:58 -05:00
Luca Lovisa 0da484bffc Add support for the Lian Li Uni Hub
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-20 20:30:57 -05:00
Adam Honse bea2ae2fdc Add OpenRGB Visual Map plugin link to README 2021-04-20 12:07:19 -05:00
morg 2a6b457324 Add UnregisterRGBController method to ResourceManager
Commit amended by Adam Honse <[email protected]>
2021-04-20 09:21:24 -05:00
TheRogueZeta 50adf9ab51 Correct SetCustomMode() to use virtual mode. 2021-04-18 21:42:54 +00:00
Diogo Trindade 5e2b04618d Initial Wooting One controller
Commits squashed and amended for code style by Adam Honse <[email protected]
2021-04-18 16:26:18 -05:00
Artur Pieniazek 65c626b8c1 Fix Corsair K95 Platinum software mode initialization 2021-04-18 20:49:28 +00:00
git 4110335e30 AsusAuraCore: Support Asus ROG Strix GA15DH.
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-18 15:38:53 -05:00
Cheerpipe 5ce9ddc40a Logitech G815 controller
* All keys works, including media, G and light indicator.
 * mode 2 and 6 functions working to achieve "best" framerate.
 * Add a wakeup function to ensure that all keys works with the first command (just copy/paste bits from what GHub do)

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-18 14:52:19 -05:00
Adam Honse 4dd061e880 Add direction control to RazerController Wave mode 2021-04-18 00:52:42 -05:00
TheRogueZeta cec9675e9a Add EVGA RTX 2080 SC Ultra Gaming PCI ID 2021-04-17 22:38:47 -07:00
TheRogueZeta 0d058ef576 Update EVGA Turing controller to expose HW modes 2021-04-17 22:38:02 -07:00
Chris 55c8ac8e3e Normalising the inverted value to fix #1326
* Inverted value speeds need to be normalised when applying the value to
the slider as well as when reading from the slider
+ added code to UpdateModeUi() to address this
2021-04-18 14:59:00 +10:00
jeffp1 bd3529b1d3 Added Sensei 310 PID, renamed files/classes to be generic to Sensei
products.
2021-04-16 15:59:50 -05:00
jeffp1 6c2013a6bf Added SteelSeries Sensei TEN
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-16 15:15:14 -05:00
TheRogueZeta b342e9a993 Add ASUS GTX 1080 ROG Strix A8G Gaming PCI ID. 2021-04-16 10:10:57 -07:00
Adam Honse 046abeb1ec Get wave mode working 2021-04-16 00:42:05 -05:00
Adam Honse c83ab4bbf6 Add wave mode function parameter for direction 2021-04-16 00:08:27 -05:00
Adam Honse b8f044b296 Enable wave mode for compatible Razer devices in RazerController 2021-04-15 23:31:42 -05:00
Adam Honse fea40cae6d Lower max brightness of EVision back to 4 2021-04-15 00:16:14 -05:00
Adam Honse 5c76284d54 Remove T-Dagger Bora as it is not an EVision/Sonix keyboard 2021-04-15 00:13:07 -05:00
Chris 727fd9efb9 Moved GB_Fusion2USB calibration & custom layout loading to config file
+ Adding layout for Z390 AORUS MASTER-CF
+ Adding destructor to RGBController_GigabyteRGBFusion2USB.cpp to
'delete controller'

+ Allows custom layout saving to config
+ Custom config will save out to config if not present
+ Layout is enablable and disabled by default
+ Added a lookup map from mapping in config
+ Added a template for the reverse_map for saving to the config
+ Removed the header integers from the config to avoid invalid values
+ Changed internal mapping closer to JSON for ease of lookup
+ Added protection to the led count

+ Added calibration to config
* Disabled execution of calibration until explicitely enabled in config

Commit amended for code style of changes as well as general cleanup of RGB Fusion 2 USB controller by Adam Honse <[email protected]>
2021-04-14 23:30:34 -05:00
Kasper 9b2296b0bc Fix sequence number having the wrong value
* I'm really not sure what it is, but for some reason with the ternary operator the sequence number was ending up wrong - it would end up being 1 twice in a row, at startup it would be 0 when it should have been 1 and other issues. This fixes that
* Also made it atomic

Commit amended for code style by Adam Honse <[email protected]>
2021-04-14 15:27:19 -05:00
Adam Honse b2736d6575 Add functions to RazerController for enabling Wave and Reactive modes 2021-04-13 22:30:24 -05:00
Adam Honse 2d9e7f85af Add usage page filtering for MSI Mystic Light 162-byte controllers 2021-04-13 19:33:30 -05:00
Adam Honse cc9e9ad6e3 Add ASUS ROG Strix GTX1080Ti Gaming 2021-04-13 19:15:30 -05:00
Simbaclaws 1ba0104ddd Added ASUS RX 5700XT Strix Gaming OC and RX 580 Strix Gamnig OC
Commits squashed by Adam Honse <[email protected]>
2021-04-13 18:34:06 -05:00
Adam Honse f1dc813782 Update RazerController detection for Kraken Kitty Edition 2021-04-13 15:04:48 -05:00
Adam Honse 4a7d74923f Update MSI usage and usage page to work on both Windows and Linux 2021-04-13 13:01:00 -05:00
Adam Honse f08a2edf01 Add usage and usage page to MSI Mystic Light 185-byte detector to prevent double-detection in Linux 2021-04-13 00:44:11 -05:00
Adam Honse d1f6bc1c27 Rename Mystic Light's Static mode to Direct. Allows effect engines to control MSI Mystic Light, but does not enable per-LED ARGB control 2021-04-13 00:18:44 -05:00
Adam Honse 987cfbbcfc Disable Crucial DRAM addresses that overlap Aura DRAM addresses until a proper detection fix can be implemented 2021-04-12 22:02:25 -05:00
Adam Honse c7e8eec328 Enable Razer Tiamat 7.1 V2 in RazerController 2021-04-12 13:28:26 -05:00
Chris 684594c801 Splitting the set mode code from the set colour code
* Set mode is now only applied in
RGBController_MSIGPU::DeviceUpdateMode()
* Set color is now only applied in
RGBController_MSIGPU::DeviceUpdateLEDs()

- Removes extra (modes[active_mode].color_mode == MODE_COLORS_PER_LED)
check as it's already checked in calling function

+ Profile loading from CLI and GUI now works flawlessly as per #1252
2021-04-12 23:30:53 +10:00
Adam Honse 503cb7c7fe Send resize command to Razer ARGB controller when resizing zones 2021-04-12 00:17:33 -05:00
Adam Honse 516aefeaa6 Make Razer Chroma ARGB controller outputs resizable 2021-04-11 21:24:46 -05:00
Adam Honse 78b4b8fa7c Add Razer Blade 15 (2021 Base model) 2021-04-11 12:08:27 -05:00
Chris 4ae8ea94ea Logging info and adding zeroed speed initialisation to fix #1241
* Adding zeroed speed initialisation to modes that do not support speed to avoid bad save values in profile
* Bad values in saved profile will corrupt brightness calculation on load.
* Aligning profile version and header string
* Adding profile validation logging
* Adding success / failure logging for each controller when attempting to load profile

Commit amended by Adam Honse <[email protected]>
2021-04-11 11:59:25 -05:00
Chris "koying" Browet e08c63a3c0 FIX: crash with older radeon drivers
Commit amended for code style, including surrounding code, by Adam Honse <[email protected]>
2021-04-11 11:52:18 -05:00
silas a3f2cd96c5 Fix OpenRGB not closing 2021-04-11 11:46:32 -05:00
TheRogueZeta 9dccdeff0e Add MSI RTX 2070 Armor OC ID. 2021-04-10 10:23:55 -07:00
TheRogueZeta 4661a56e35 Add Asus ROG GTX1660 Ti device ID. 2021-04-09 23:48:21 -07:00
Adam Honse a897d2c797 Fix newline on OpenRazer version and serial strings on Windows 2021-04-09 22:57:06 -05:00
Adam Honse b148bbe740 Initialize OpenRazer/OpenRazer-Win32 controller to disabled if not present in settings 2021-04-09 22:20:07 -05:00
Adam Honse bfdf620650 Enable Mystic Light 7C92 2021-04-09 22:09:14 -05:00
Adam Honse 4e179b06b6 Add breathing mode to Razer Kraken headsets using RazerKrakenController 2021-04-09 22:07:34 -05:00
Adam Honse 276c7e66e9 Update the detector settings list before running the detectors, so that the list is populated even if a detector crashes 2021-04-09 18:28:37 -05:00
morg b24f989dbc Ignore pre-detection argument (fixes #1300) 2021-04-09 16:48:56 +02:00
Chris 9f58584c05 Removing duplicate GetDeviceMode() entries from
RGBController_CMMP750Controller.cpp
2021-04-09 08:36:03 -05:00
Chris 1cc2c3c252 Resolving the Windows HIDAPI interface problem by changing the IPU macro to PU
* Moved "Off" mode to last
* Created GetDeviceMode() to accomodate change
* Code formatting cleanup
2021-04-09 08:35:46 -05:00
Adam Honse 49d2550815 Add device description for Base Station V2 Chroma 2021-04-09 00:46:51 -05:00
Adam Honse e506c34191 Create FUDING.yml for GitHub 2021-04-09 00:39:35 -05:00
Adam Honse 2af26eb9e9 Clean up Razer Blade laptop naming and add missing device descriptions 2021-04-09 00:36:42 -05:00
Adam Honse 9df6fed170 Clean up Razer Lancehead naming and add RazerDevices definitions for 2017 version 2021-04-08 23:04:53 -05:00
Adam Honse 2aaf23ef1e Add detectors for all remaining devices in RazerDevices.h and rename a few things 2021-04-08 22:47:08 -05:00
Martin Hartl 87150072c8 Asus Mainboard: Fix send color
Byte 3 of the send color message is currently sending the channel id.
Byte 4 is set to a hard coded 0xff and 0x00 for mainboard LEDs and
addressable LEDs respectively. Apparently this is a 16 bit mask to
select the colors to be updated instead.

Commit amended for code style by Adam Honse <[email protected]>
2021-04-07 23:02:21 -05:00
Niels Westphal fc463db074 Update Asus GPU controller to use PCI ID based detection. 2021-04-07 13:45:25 +00:00
KundaPanda 61d70f064d Add ISO/ANSI HyperX Alloy Elite 2 support 2021-04-07 13:44:01 +00:00
Kasper 6aa62c5002 Fix spacing 2021-04-07 00:42:30 +03:00
Kasper 3297742203 Fixed the matrix again
Last time
2021-04-06 08:36:35 +03:00
Kasper bcbd4f88be Implement a controller for Corsair Hydro Platinum AIO coolers
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-04 23:18:20 -05:00
Kasper d8bc1c9042 Fixes an issue where the LED colors show incorrect colors 2021-04-04 19:10:15 -05:00
KundaPanda b572c15cce Add HyperX Alloy Elite 2 support
Squash commits and code style changes, minor reworks to match Alloy Elite 1 code by Adam Honse <[email protected]>
2021-04-04 19:05:32 -05:00
sakloui 2ae12c52ec Updated DuckyKeyboardController with 2ms delays between each packet sent
This should fix the issue where Ducky keyboards would softlock

Commit amended to move delays to packet send functions by Adam Honse <[email protected]>
2021-04-04 15:53:57 -05:00
Adam Honse 0fd106cb92 Enable MSI Mystic Light 7C90 2021-04-03 15:02:07 -05:00
KundaPanda 26e4c76f03 Add V2 Gainward Controller for new NVidia GPUs
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-04-03 14:43:26 -05:00
KundaPanda 2b6a3e19ea Enable LED select box for mode-specific color mode 2021-04-03 19:23:02 +00:00
KundaPanda c8e3554442 Initialize led_count in MysticLight controllers to prevent occasional crashes 2021-04-03 21:03:30 +02:00
Pol Rius 37e021fb1c Add dualshock 4 wireless adapter 2021-04-03 18:41:41 +00:00
Pol Rius bd12100a07 Add second PID for ROG Chakram mouse 2021-04-03 18:29:13 +00:00
Adam Honse e0c5909757 Fix some issues with Yeelight that prevented a different model bulb from working 2021-04-03 13:15:12 -05:00
Adam Honse 81590d8321 Enable MSI Mystic Light 7C86 as it has been tested 2021-04-01 11:00:37 -05:00
TheRogueZeta 1c5a11f426 Add Deskmini Addressable LED Strip PID + Detector 2021-04-01 15:15:58 +00:00
Adam Honse c9e8602f85 Add T-Dagger BORA VID/PID to EVision Keyboard Controller 2021-03-31 22:48:15 -05:00
Adam Honse 27784db5e1 Implement matrix type field for Razer controllers to reduce redundant code 2021-03-31 22:27:30 -05:00
denk_mal db9146147b activate controller for Metadot Das Keyboard 5Q 2021-03-31 12:05:31 +02:00
denk_mal 84f7f32ec2 reformat code 2021-03-31 11:13:44 +02:00
denk_mal 3a270cbea7 handle hid get error and avoid buffer overflow error 2021-03-31 11:13:17 +02:00
denk_mal e69b59d339 resend data on hid send errors 2021-03-31 11:13:13 +02:00
denk_mal 59752dce98 move call of SetupZone from class constuctor to load function 2021-03-31 11:13:06 +02:00
denk_mal 813069a359 remove unused class variables 2021-03-31 11:13:00 +02:00
Adam Honse d5e344f9d9 Add missing keepalive_time parameter back to E1.31 json config 2021-03-30 13:55:10 -05:00
Adam Honse a77792a996 Disable Zalman Z Sync Controller due to bricking, cause unknown, but seems to also happen with official software 2021-03-30 12:23:16 -05:00
Adam Honse 0280ac3b29 Mask off speed bits in MSI Mystic Light controller 2021-03-30 08:53:58 -05:00
Adam Honse d4ae75c512 Add one and two color breathing modes to RazerController 2021-03-29 23:28:23 -05:00
Adam Honse 9cab2437d2 Add random breathing mode to RazerController 2021-03-29 22:38:36 -05:00
Adam Honse a94b43ee3d Scan for an open port, so that multiple Yeelight controllers can be in music mode at the same time 2021-03-29 19:36:23 -05:00
Adam Honse 3e9993a6a4 Add Yeelight music mode, enabled with "music_mode" option in Yeelight configuration. Probably only works for one light right now. 2021-03-29 18:52:38 -05:00
Adam Honse a5a9482206 Fix log folder creation on MacOS 2021-03-29 15:49:12 -05:00
Adam Honse 212c3e6297 Add universe_size field to E1.31 configuration to set number of channels per universe 2021-03-28 23:57:33 -05:00
Chris 501a1ff489 Updated parsers to allow GUI to run implicitly for -v, -vv and --print-
source options

* Added cfg_args counter for each in cli_pre_detection()
* Added each to the ignore options in ProcessOptions()
* Includes slight update to OptionHelp()
2021-03-28 22:27:27 +11:00
Adam Honse 827b75320c Fix profile versioning. Profile version 1 used protocol version 0. Move profile version up to 2 using protocol version 2 and keep them synchronized if a new protocol version is added 2021-03-28 01:40:48 -05:00
Jan Henrik Müller 8e1cb178ca Add real Gigabyte RTC2070 Super Gaming OC 2021-03-28 01:07:13 -05:00
Chris 067aa4d88a Adding logging notices to ResourceManager to track explicit hid_init() and hid_exit() 2021-03-28 01:03:42 -05:00
Chris d926754745 Adding "--loglevel" to ignore list in cli::ProcessOptions 2021-03-28 00:55:40 -05:00
Chris ae8b502ad2 Gathering logging info to fix #1241
* Aligning profile version and header string
* Adding profile validation loggging
* Adding success / failure logging for each controller when attempting
to load profile
2021-03-28 00:53:10 -05:00
kevin wulff e3f7394498 Added z390 Pro Carbon and Gaming Edge MB 2021-03-28 00:43:51 -05:00
morg 8ef9f622f1 Fix memory leak (RGBController::GetDeviceDescription) 2021-03-27 22:15:24 +01:00
Adam Honse e848be5159 Add ASUS ROG Strix Flare PNK LTD 2021-03-27 11:44:48 -05:00
Adam Honse 2103982d7d Add Asus Aura Keyboard controller for ROG Strix Flare (Direct mode only for now) 2021-03-27 00:26:50 -05:00
k1-801 1fdd4379a7 Small adjustments in LogManager 2021-03-24 11:39:26 -05:00
silas 460e53368d Fix bad matrix for custom debug devices 2021-03-24 08:56:14 -05:00
silas 905d52ca57 Make spin box values be correct on startup 2021-03-24 13:40:29 +00:00
Chris d65def0179 Fixing --help string for -p option
* Tweaked the profile mananger to allow to load profiles either with or
without the file extension
* Changed the --help string to reflect the change
2021-03-24 08:18:07 -05:00
Adam Honse 69cb7a0d9e Use resource manager to register I2C interfaces and log them 2021-03-24 01:22:48 -05:00
Adam Honse ec90f4678b Change all I2C/SMBus detectors to use RegisterRGBController 2021-03-23 20:41:50 -05:00
k1-801 f1d6c2953d Logger tweaks
Commit amended for code style and minor cleanup by Adam Honse <[email protected]>
2021-03-23 20:20:52 -05:00
Adam Honse 0089852395 Rename RedragonK556Controller to EVisionKeyboardController 2021-03-23 14:40:08 -05:00
Chris 8492a8c76e Prevent profiles loaded on startup from being overwritten 2021-03-23 12:47:27 -05:00
Adam Honse 16cc5ce6d4 Enable Mystic Light 7C80 2021-03-20 09:52:19 -05:00
Adam Honse 3230a18f98 Rename G502 static mode to direct after verification that it qualifies as a direct mode 2021-03-16 20:58:09 -05:00
Adam Honse 0bf9156374 Add MSI-RGB board 7A34 (MSI B350 PC Mate) 2021-03-16 20:04:43 -05:00
Adam Honse f5d9a4e79f Add 7B12 to 162-byte Mystic Light list 2021-03-13 15:23:49 -06:00
Adam Honse 0022371d64 Clean up MacOS section of OpenRGB.pro 2021-03-13 15:03:18 -06:00
Adam Honse 33957755c3 Use arch x86_64 2021-03-13 14:56:50 -06:00
Adam Honse bac68ee861 Check MacOS architecture and add Intel MacOS build target 2021-03-13 14:50:59 -06:00
Adam Honse 288a1deb91 Enable Mystic Light 7C76 2021-03-13 13:59:25 -06:00
Adam Honse 62b99bb83d Add 7C84 to supported MSI Mystic Light PIDs 2021-03-12 00:00:10 -06:00
Adam Honse 19f0dde82c Add more tested Mystic Light boards 2021-03-11 16:11:19 -06:00
Adam Honse d3da09f47e Add Razer Firefly V2 to OpenRazer device list 2021-03-09 10:05:13 -06:00
Mervin de Ruiter 526a4daae2 Added support for HUE 2 Cable comb 2021-03-09 00:29:16 -06:00
Adam Honse 7531ea3b2f Update OpenRazer-win32 to OpenRazer commit 1316cb9 2021-03-08 23:51:42 -06:00
Biswapriyo Nath 9e9a91a048 SettingsManager: Catch exception with constant reference parameter.
This fixes warning: catching polymorphic type 'class std::exception' by value.
2021-03-09 04:31:21 +00:00
morg e1faa783b6 Add new CLI option, separate auto-detect and auto-connect 2021-03-08 22:25:37 -06:00
silas 30c595c6d6 Fix building on Qt6 2021-03-08 22:06:11 -06:00
Chris e46325cbea Updated CM ARGB Controller to v0023 protocol
* All RGB Modes are working
* All ARGB Modes are working sans Direct
* Direct Mode left available so zones are resizable

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-03-08 21:57:40 -06:00
Adam Honse 1cd0269f60 Move MSI Mystic Light 7C56 to enabled PIDs as it has been tested 2021-03-08 11:49:46 -06:00
Diogo Trindade a8408d0956 Added razer blackwidow v2 keymap 2021-03-08 13:50:11 +00:00
Chris 9767f97719 Initial commit for the Riing Quad Fan Controller Hub
* Only looks like a direct mode controller
* Implemented just that mode
* Likely needs an Effect Engine (EE) to drive it

Commits squashed and amended to more closely match existing Thermaltake Riing controller by Adam Honse <[email protected]>
2021-03-07 21:40:39 -06:00
Adam Honse c401413cb1 Move MSI Mystic Light 7C91 to enabled PIDs as it has been tested 2021-03-07 21:17:41 -06:00
Adam Honse 130e14a26a Move MSI Mystic Light 7C75 to enabled PIDs as it has been tested 2021-03-07 21:01:57 -06:00
Adam Honse 5729e7436c Move MSI Mystic Light 7C35 to enabled PIDs as it has been tested 2021-03-07 14:18:59 -06:00
Adam Honse 090c6421a4 Enable two tested MSI Mystic Light PIDs. Leaving untested ones disabled for now 2021-03-06 23:58:40 -06:00
Adam Honse 7e06b7f3a5 Group pipe and onboard LEDs into zones 2021-03-06 23:46:18 -06:00
Adam Honse 5695a55411 Add MSI Mystic Light 162-byte controller 2021-03-06 23:34:45 -06:00
Adam Honse 40bf2b75b8 Clean up MSI Mystic Light code for 185-byte devices 2021-03-06 22:54:05 -06:00
jath03 ec245617f6 Adding a new SDK version for profile controls 2021-03-06 08:36:31 +00:00
k1-801 e050ca8350 Glory! 2021-03-06 00:21:06 -06:00
Adam Honse 5a5cc52a80 Fix segfault for Sinowealth (Glorious) 2021-03-05 22:51:33 -06:00
Adam Honse a08fb8b532 Move plugin initialization into PluginManager and log plugin loading 2021-03-05 16:58:06 -06:00
Luca Lovisa 00a47f600c Restrict MacOS build to original project 2021-03-05 21:03:40 +00:00
k1-801 ca11939277 Add LogManager and add log messages for the detection process
Commit amended for code style and to remove unrelated changes by Adam Honse <[email protected]>
2021-03-05 14:57:53 -06:00
silas 78ea2ee8f0 Ready To Merge™ 2021-03-05 17:12:36 +00:00
Aleksey Krichevskiy 75a14f2250 ProfileManager: trunc flag to file overwrite 2021-03-05 11:09:16 -06:00
Aleksey Krichevskiy bca9407f70 OpenRGBDialog2: Save Profile button with Save Profile As menu 2021-03-05 11:01:18 -06:00
silas 874a63bab7 Add large comment block 2021-03-05 16:45:54 +00:00
silas 7f90efa75b Move topTabLoaded bool as morg suggested 2021-03-05 16:45:54 +00:00
Adam Honse df92064e20 Add ASUS ROG Gladius II PNK LTD 2021-03-04 15:47:00 -06:00
Adam Honse 126b1b4841 Clean up serial_port class and add MacOS support (only standard baud rates for now) 2021-03-04 12:22:17 -06:00
Adam Honse f1107fc2a5 Add Gigabyte GTX1080Ti Gaming OC BLACK 11G 2021-03-04 08:13:16 -06:00
Adam Honse a0078b6a5e Add MacOS build instructions to README 2021-03-04 00:20:18 -06:00
Adam Honse 22d73da536 Add MacOS target to CI 2021-03-03 23:44:14 -06:00
silas 52a9120257 Fix Hue box not updating when set all is used 2021-03-04 04:44:05 +00:00
Adam Honse 313bc8b616 Fix Razer Charging Pad Chroma detector so it doesn't detect twice 2021-03-03 18:49:39 -06:00
Adam Honse 2915133d96 Update paths for homebrew on Apple Silicon Macs and use Qt Fusion theme on MacOS 2021-03-03 17:14:45 -06:00
Cheerpipe 7c272a909d Small performance and stability tweaks
Performance: Don't set mode on each zone change.
Stability: Fix read buffer size to avoid command corruption - Increase command delay if there is any volume change command conflict.

Commits merged and amended for code style by Adam Honse <[email protected]>
2021-03-02 21:10:04 -06:00
Josh e58fb8935c Support for EVGA GeForce RTX 2070 SUPER XC ULTRA+ 2021-03-03 02:37:07 +00:00
Adam Honse 8437be2304 Define USE_HID_USAGE on MacOS 2021-03-02 18:26:32 -08:00
Adam Honse fdab8a2066 Ignore interface check for non-safe-mode as well 2021-03-02 20:23:49 -06:00
Adam Honse c3c4b3a8eb Ignore interface check if usage page or usage is checked 2021-03-02 19:22:47 -06:00
CoffeeIsLife 3b9f07d52e Switch RazerController to IPU detector macro to prevent multiple instances of devices in Linux with older hidapi versions
Commit amended for code style by Adam Honse <[email protected]>
2021-03-02 19:21:20 -06:00
Luca Lovisa ed48c9634c Fix cli profile mode loading 2021-03-01 23:14:36 +01:00
Martin Hartl ea31b37f91 Asus USB: Remove commit write 2021-03-01 21:24:49 +01:00
Adam Honse 03bf5eb50d Add message queue to speed up FanBus updates 2021-03-01 13:42:45 -06:00
Adam Honse 15829e4dfe Add the rest of the Kraken USB PIDs 2021-03-01 11:05:37 -06:00
Adam Honse 25484a6152 Add Razer Kraken controller based on OpenRazer 2021-02-28 17:42:08 -06:00
silas 11b3f55b94 Fix Color Wheel background 2021-02-27 10:26:45 -06:00
silas 27fb7984f8 Accidentally didn't test enough
loading something like the updates plugin (Which appears in the info tab) would make it load multiple times
This commit fixes that
2021-02-26 17:16:39 -06:00
silas aea6f82026 Fix OpenRGB not closing when min to tray was on 2021-02-26 16:27:34 -06:00
silas f4ab8bd14a Fixed :) 2021-02-26 18:57:01 +00:00
edbgon 5afca1758d Fix for RX 6000 segfault when in "off" mode (!374) 2021-02-26 12:55:29 -06:00
Adam Honse 398c347b20 Add Gigabyte GTX1080Ti Xtreme and rename existing Xtreme to Xtreme Waterforce, as they apparently have different IDs 2021-02-26 09:45:36 -06:00
jath03 84861ef989 Fixing profile loading #1135 2021-02-26 08:17:44 -06:00
silas ea6e961a13 Added some sleeps as well as other changes to the Corsair Vengeance Pro controller
Changed the way direct is handled for corsair devices

Commit amended for code style by Adam Honse <[email protected]>
2021-02-25 09:22:34 -06:00
morg 50fc6308d7 Update EE plugin link in README 2021-02-22 19:45:32 +01:00
TheRogueZeta e4e2f8d73e Add Logitch G303 based on G403 2021-02-20 21:52:53 +00:00
Martin Hartl e0e46f2ceb Logitech: Fix HID usage on Linux 2021-02-20 22:26:55 +01:00
Chris 80f4e5137e Quick formatting change to correct upstream issue and refresh issue
templates
2021-02-20 22:13:29 +11:00
Jack f844108022 Removing .orp extension from profile names 2021-02-19 03:29:39 +00:00
TheRogueZeta f0fbe17456 Add Gainward GTX 1080 Phoenix 2021-02-19 03:12:57 +00:00
Adam Honse 4b1c68abd2 Add Gigabyte 3060Ti EAGLE OC 8G 2021-02-17 12:05:11 -06:00
TheRogueZeta dc9d977efe Add KFA2 RTX 2080 EX OC sub device ID 2021-02-16 23:42:31 -08:00
William Wilson 65e5674b4f Add support for the Gigabyte RTX 3070 Vision 2021-02-16 15:47:31 -06:00
Chris 2b2478fea5 Initial Commit for new device Coolermaster Small ARGB Controller
* Added a new controller class
* Compiles cleanly

Commits squashed by Adam Honse <[email protected]>
2021-02-15 09:33:58 -06:00
Adam Honse 88eb979544 Change device type for Razer Nommos to Speaker 2021-02-15 08:47:43 -06:00
Cheerpipe e9f3a1b3b9 Logitech G560 initial support
Logitech G560 Speaker working with Direct Mode using same bits as the Logitech Ambilight and Audioviz. Other modes are not working (get) as expected.

Note: G560 Direct mode is slow because Logitech hardware implementation but it is working.

Changing volume at the same time colors are changing can reduce FPS because G560 uses the same channel for led and audio modes commands.

Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-02-15 08:45:57 -06:00
TheRogueZeta 00b8e74239 Add Deathadder Essential and Deathadder Essential White Eddition 2021-02-15 14:35:56 +00:00
Mike Achtelik e9107276cf Add support for latest Crucial Ballistix RGB RAM
The latest RAM modules all show up at address 0x27 instead of 0x20-0x23.
So lets remap them so they can be detected and controlled individually.
Since other RGB software can already handle them add and assign the
addresses used there as well.
2021-02-15 14:30:00 +00:00
Chris d5336c9f36 Adding "X570 AORUS ELITE WIFI" to GBFusion2USB layouts as per faux1234 2021-02-15 14:28:15 +00:00
denk_mal 029a04cee8 Das Keyboard version check and udev rules
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-02-15 08:26:06 -06:00
Adam Honse ae4857e24e Add Razer Chroma PC Case Lighting Kit detector 2021-02-12 11:03:30 -06:00
Adam Honse 99f9b6daa9 Add Razer PC Case Lighting Kit 2021-02-12 10:44:14 -06:00
Adam Honse ce22bcfb86 Razer Mug Holder requires device mode change 2021-02-11 16:57:16 -06:00
Diogo Trindade f63aec118c Fixed profile string sdk response not being null terminated 2021-02-10 23:10:57 +00:00
Adam Honse faf7f65372 Add tooltips to the device tabs so that you can see names that are too long to fit on the tab 2021-02-10 16:39:19 -06:00
Alexey Sokolov 367d01ceff Add description tooltips for common modes
Partially addresses #232

Commits squashed and amended for code style and to remove QItemDelegate by Adam Honse <[email protected]>
2021-02-10 13:11:21 -06:00
Adam Honse e20f7f3a44 Remove WIN32 check around Razer ARGB detector, it is needed in Linux too 2021-02-10 01:02:45 +00:00
Adam Honse 1817d3ac4a Only register detector for interface 0 of Razer ARGB controller as detector code looks for interface 1 on its own 2021-02-09 17:53:10 -06:00
Adam Honse 2fd21992b0 Add Razer Chroma Addressable RGB Controller to RazerController 2021-02-09 16:51:25 -06:00
morg 79dacbaeb0 Fix crash on server stop
Commit amended to initialize listening variable by Adam Honse <[email protected]>
2021-02-09 16:34:25 -06:00
alpemwarrior 300e2b526b rename static to direct, as we don't save to flash memory 2021-02-09 16:02:44 +01:00
Adam Honse cdbf9736ae Modify RazerController to work on Linux 2021-02-08 20:58:02 -06:00
TheRogueZeta aed1409eed Add whitespace in Polychrome controller lists. 2021-02-08 14:34:54 +00:00
alpemwarrior 18fd5c75ee add superio udev rule 2021-02-08 14:31:18 +00:00
edbgon 67031bc004 Mode specific fixes 2021-02-08 08:30:19 -06:00
edbgon 5a7e6ae8d4 Fixes for mode specific color
Code style changes by Adam Honse <[email protected]>
2021-02-08 08:29:13 -06:00
santeri3700 f7a68e6fe2 Add support for HyperX Pulsefire Dart
Commit amended to address review comments by Adam Honse <[email protected]>
2021-02-06 14:05:40 -06:00
morg 5b35e64fbe Add a toggle all checkbox on supported devices page 2021-02-06 19:56:01 +00:00
Dredvard 065bbd249c Initial support for ASRock Polychrome USB Controller
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-02-06 13:53:54 -06:00
edbgon f7bcadd9ed Add initial support for AMD Radeon 6000 series reference cards
Commits from edbgon, bobris, and Dr_No squashed and code style changes by Adam Honse <[email protected]>
2021-02-06 13:36:06 -06:00
JesusSanches 16c34572ed Added Naga Trinity to Razer Detect cpp
Commits squashed and code cleanup by Adam Honse <[email protected]>
2021-02-06 11:55:29 -06:00
K900 267dfff247 SapphireGPUController: reimplement configuration readback
Commit amended for code style by Adam Honse <[email protected]>
2021-02-06 11:45:24 -06:00
Ildar Gainanov bae1e08732 Add MSI GTX 1660 Super Gaming 2021-02-06 18:58:40 +03:00
morg e2bc1003e6 Add profile management to SDK
Commit amended for code style by Adam Honse <[email protected]>
2021-02-05 19:13:50 -06:00
Martin Hartl 3026feeebe DS4: Check return value of get serial call 2021-02-06 01:07:28 +00:00
morg 96bbb5a69f Prevent out of bounds access 2021-02-05 21:41:53 +00:00
morg dba814215d Fixing memory leaks in controllers 2021-02-05 16:25:46 +01:00
Chris aa59c6132e Adding X470 AORUS Gaming 7 Wifi 50 to the Gigabyte Fusion2 SMBus Detector
* As confirmed by LimitingFactor on Discord
* https://www.gigabyte.com/Motherboard/X470-AORUS-GAMING-7-WIFI-50-
rev-11#kf
2021-02-04 21:02:13 +11:00
Th3d0nGsT3R 35c76887db Add Firefly V2 and Basilisk Essential to RazerController
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-02-03 23:33:42 -06:00
Chris 4df33a2ad2 Adding the GeForce GTX 1080 Ti Gaming OC 11G
* As per Sharky_PI on Discord
2021-02-03 14:18:39 +00:00
K900 f7756c003f SapphireGPUController: Implement Nitro Glow V3
Commit amended for code style and to squash commits by Adam Honse <[email protected]>
2021-02-03 00:56:20 -06:00
Adam Honse 50219f231a Fix missing default case in Razer custom frame 2021-02-01 16:54:49 -06:00
Morg 77d5e6c550 Add link to OpenRGBRemote repo 2021-02-01 14:14:18 +01:00
Adam Honse 7c7fe16ab9 Disable modes for Zalman Z Sync 2021-01-31 20:19:04 -06:00
Adam Honse 51142d6ab6 Copy Corsair Lighting Node code to Zalman Z Sync code as the two use the same protocol 2021-01-31 17:06:03 -06:00
Adam Honse 578157f44d Initial implementation of Zalman Z Sync controller 2021-01-31 00:33:51 -06:00
Adam Honse a00c259b96 Add function for setting device mode 2021-01-29 23:00:41 -06:00
Adam Honse fdf8d0a093 Add Razer Charging Pad Chroma support, direct mode only for now 2021-01-29 22:14:08 -06:00
Fabricio Zimmerer Murta 271e98c733 Un-swapped zones in Razer Deathadder V2 mice.
The logo and wheel zones were swapped in the zones definitions header
file.
2021-01-29 00:24:50 -06:00
Fabrício Zimmerer Murta 776f512d11 Skips Razer device loading if invalid data is received.
This probably happens due to a general issue with OpenRazer windows
driver.

The "fix" here, simply skips loading the driver if it identifies the
device information fetched doesn't make sense -- instead of employing
NULL references at run time.

The proper fix for this issue seems to be completely remove this razer
support and move to the new RazerController approach being developed in
razer_controller branch.

Related issue: #1047.
2021-01-29 06:23:04 +00:00
Adam Honse 6969542e2d Initial commit of standalone Razer controller 2021-01-29 00:10:42 -06:00
Adam Honse 4fa5b413ee Check the validity of the PCI device string in AMD ADL I2C driver to prevent crash if the string is malformed 2021-01-28 18:03:52 -06:00
Trevor Rowbotham f977598392 Add EVGA RTX 2080 XC BLACK 2021-01-27 20:16:56 +00:00
Kasper 80decf1482 Update SetCustomMode to change to static mode instead of off 2021-01-27 12:42:25 +02:00
denk_mal 582afad557 Das Keyboard 4Q Fix-up
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-01-26 12:17:43 -06:00
Morg 6ca1c1af35 add sdk projects 2021-01-25 23:53:17 +01:00
Adam Honse 92999a06f1 Add Gigabyte RTX2080 (non-A) GAMING OC 8G 2021-01-25 14:04:59 -06:00
Adam Honse c682767d81 Add Hue 2 Underglow (200mm) to Hue 2 accessory list 2021-01-25 13:18:41 -06:00
denk_mal bab18473aa Add support for Das Keyboard 4Q
Commit amended for code style by Adam Honse <[email protected]>
2021-01-25 10:15:44 -06:00
silas ae23037cce Add underglow matrix zone to debug keyboard
Amended by Adam Honse <[email protected]>
2021-01-25 09:27:37 -06:00
silas ca9ab8989b Add proper Direct control of Corsair Vengeance Pro
Amended for code style and to remove unrelated functionality by Adam Honse <[email protected]>
2021-01-25 09:08:18 -06:00
Adam Honse 64e948073d Add Corsair Glaive RGB 2021-01-22 09:33:03 -06:00
Icenowy Zheng 1df7a45691 Add support for Gigabyte GTX1050 Ti G1 Gaming
This card seems to be controllable in the same way as GTX1080 G1 Gaming.

Signed-off-by: Icenowy Zheng <[email protected]>
2021-01-22 06:15:10 +08:00
Morg f955303e0a Make sure to delete QTabWidget after removal
Commit amended for code style by Adam Honse <[email protected]>
2021-01-21 15:00:18 -06:00
XeR addd173944 Add support for Gigabyte GTX 1650 Gaming OC 2021-01-21 11:53:33 +01:00
Adam Honse 99dfeef77c Use a mirror for Qt download because download.qt.io is down 2021-01-19 17:12:50 -06:00
Adam Honse 49bc09d9c2 Initial Yeelight support 2021-01-18 17:52:25 -06:00
mrblade 25a1ad9de7 Add support for Corsair K55
Commits squashed and amended for code style by Adam Honse <[email protected]>
2021-01-17 17:51:34 -06:00
Adam Honse aec70382f5 Add plugins section to README 2021-01-17 17:42:55 -06:00
alpemwarrior 4bbb824ce1 check for msi dmi without trailing dot 2021-01-17 15:35:32 +01:00
Adam Honse 82eade005e README cleanup 2021-01-15 00:17:19 -06:00
Adam Honse 48125a38a2 Add Adalight protocol support to LED Strip controller 2021-01-15 00:08:33 -06:00
Adam Honse 524fefc7d5 Clean up Keyboard Visualizer protocol code 2021-01-14 17:28:42 -06:00
Adam Honse ae5143a520 Update description of LEDStrip since it now supports multiple protocols 2021-01-14 17:04:22 -06:00
Adam Honse 5503560775 Add TPM2 protocol support for LED Strip controller 2021-01-14 17:00:07 -06:00
TheRogueZeta 4a1a6cde5d Correct command to run and add git to debian cmd. 2021-01-13 23:52:05 -08:00
Aurum 639894718d Added G610's second PID
Commit amended for code style by Adam Honse <[email protected]>
2021-01-13 17:02:23 -06:00
Adam Honse 36a9fb85fe Fix Windows build 2021-01-12 17:59:25 -06:00
Adam Honse 117500ad04 Add FanBus support 2021-01-12 17:42:18 -06:00
staticdev 2a2c0f010c Fix readme instructions 2021-01-10 20:01:15 +01:00
silas 667a24a63a Add waitfordevicedetection to resourcemanager interface 2021-01-09 18:00:06 +00:00
Chris M 98244a2b6f Changing SetCustomMode to resolve #955
* Setting Active mode to MSI_GPU_MODE_STATIC at index 2
2021-01-09 17:59:28 +00:00
jath03 e4ec0fa46b Fixed GUI not starting when configuration flags are used 2021-01-07 22:39:29 -08:00
silas b1b260d7cf A bit of cleanup (Remove depreciated entry from PluginInfo Struct) 2021-01-07 12:10:27 -06:00
TheRogueZeta e956ab419b Add EVGA 1070 Ti FTW2 2021-01-06 16:29:23 +00:00
Adam Honse 3ad57aba9a Interfaceify RGBController so it can be used in plugins, add GetDetectionPercent to Resource Manager interface so it can be used in plugins 2021-01-06 00:34:26 -06:00
silas 75df81f972 Allow closing to tray by setting "minimize_on_close" to true in settings key "Minimize"
Code changes and setting key name change by Adam Honse <[email protected]>
2021-01-05 20:28:32 -06:00
Chris be7ca2a16c Update udev rules to allow for normal user control on Asus TUF Laptops
* Resolves #938
2021-01-06 13:12:22 +11:00
silas 93231c3225 Initial commit for Plugins
Commits squashed, code style and naming changes by Adam Honse <[email protected]>
2021-01-05 20:07:13 -06:00
Alex Avance 5f5d50ffd8 Enable profile loading for gui and server 2021-01-04 02:15:57 +00:00
TheRogueZeta c83433ac06 Add Razer Viper to OpenRazerDevices.h 2021-01-02 21:17:01 -08:00
Martin Hartl 7a8c4dd2a6 Support hidraw USAGE/USAGE_PAGE
* Support hidapi 0.10.1 and newer
2021-01-02 14:03:54 -06:00
edo-2313 6454f6c5f2 Added support for Holtek based mousemats
Commits amended and squashed by Adam Honse <[email protected]>
2021-01-01 19:03:10 -06:00
Adam Honse c20ecbffe5 Revert changes to ResourceManager.cpp 2021-01-01 18:28:33 -06:00
Chris b0d12c5850 Corrected mode assignment read from device in constructor 2021-01-01 16:52:33 -06:00
Chris 215baa487a Corrected Logical errors in ResourceManager.cpp
* Removed comparison of -1 to unsigned int
* Corrected comparison of current_device to HID_INTERFACE_ANY
* Exposed downstream errors in Windows implementation of CM_MP750
controller corrected
* Added "Off" mode
2021-01-01 16:52:27 -06:00
TheRogueZeta 14834e1e28 Add EVGA RTX 2070 XC Gaming 2020-12-30 17:09:23 -08:00
TheRogueZeta 7628fe5491 Add EVGA RTX 2080Ti XC Ultra 2020-12-30 17:00:14 -08:00
TheRogueZeta d91d53ceae Update pci_ids.h and add MSI RTX 2080 GAMING TRIO 2020-12-29 16:09:36 -08:00
TheRogueZeta b920aed734 Add Gigabyte RTX2070 Gaming OC 8G 2020-12-28 13:36:22 -08:00
Marcel B fc133dc5d1 Add MSI RTX 3090 Suprim X 2020-12-27 15:58:54 +00:00
jath03 e673b9d331 fixing gui not starting 2020-12-26 01:58:25 -08:00
jath03 5c50cc2ca9 Stopped GUI from starting when only --server flag is set 2020-12-26 03:20:10 -06:00
thombo 36380457d6 Gigabyte RTX2070S Gaming OC graphics card added 2020-12-26 03:17:41 -06:00
Adam Honse 6c3baf477c Add controller for HyperX Pulsefire FPS Pro mouse (new NGenuity firmware) 2020-12-26 03:05:46 -06:00
Adam Honse 5c30255a06 Add bounds check on matrix map index to prevent crashing when matrix map has an out-of-range entry 2020-12-23 18:00:34 -06:00
Thomas Karl Pietrowski 3579a2b529 Fixing upgrade-ability of latest Debian packaging
Seems to be unwanted in the current deployment pipeline of the project.

Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-12-23 18:53:10 +00:00
Chris M c7323e8eb5 Update New Device.md to address #883 2020-12-22 06:16:43 +00:00
alpemwarrior d386b4cf4f add layout 2020-12-21 20:27:08 -06:00
alpemwarrior 5464fc0c19 try to add two last columns 2020-12-21 20:27:03 -06:00
TheRogueZeta 58a7201aa4 Add Gigabyte GTX 1060 Xtreme Gaming 2020-12-22 02:25:27 +00:00
TheRogueZeta 1d317ebbb5 Add MSI RTX 3060 Ti Gaming X Trio 2020-12-21 14:54:01 -08:00
TheRogueZeta de01f8beb9 Add Gigabyte RTX 2080 Gaming OC 2020-12-18 20:31:09 -08:00
TheRogueZeta 64bb8fac2c Alpha sort list 2020-12-18 20:30:05 -08:00
TheRogueZeta ef0a4c31ad Add MSI GeForce RTX 3080 Suprim X 10G 2020-12-12 11:48:29 -08:00
Adam Honse 0fd302b7d1 Reload sizes when changing configuration directory 2020-12-09 12:24:05 -06:00
Chris Jones abf8072710 Add Asus ROG Chakram mouse (wired and 2.4GHz wireless)
Commit amended by Adam Honse <[email protected]>
2020-12-09 10:34:24 -06:00
alpemwarrior 03bf187c7b Filter msi-rgb by dmi
Commits squashed by Adam Honse <[email protected]>
2020-12-08 23:22:15 -06:00
Niels Westphal 70028e6d23 Corsair K95 / Platinum Fixes 2020-12-09 04:39:45 +00:00
TheRogueZeta b733600f4f Add additonal cards 2020-12-07 21:33:31 -08:00
Jan Wendland 9d5b2a705b Add AllMyLights to apps supporting OpenRGB SDK 2020-12-08 05:08:48 +00:00
Chris 42a6bfc2ec Small change to OpenRGB.pro to address #824
* explicitly declaring c++14 for unix:!macx
2020-12-07 23:06:50 -06:00
Chris 836dc03adf Amended the New Device template with the new label types and included a
checklist for admin purposes
2020-12-08 15:10:33 +11:00
TheRogueZeta 8dc4f1f660 Add AORUS GTX 1080 Ti 11G 2020-12-07 20:00:33 +00:00
k1-801 8d3de51a71 One more inter-faceless HID 2020-12-07 23:29:37 +04:00
Jack b2ccea552e Added Gigabyte GTX 1660S Gaming OC PCI id 2020-12-07 14:33:53 +00:00
Adam Honse e43d7f8ba5 Increment version number post-release 2020-12-06 21:22:37 -06:00
Adam Honse 88464d1595 OpenRGB version 0.5 2020-12-06 21:18:48 -06:00
Adam Honse f41da638fa Add informational printouts for local client connection 2020-12-06 21:11:27 -06:00
Adam Honse a2e74eb788 Disable detection when started in local client mode 2020-12-06 21:08:47 -06:00
k1-801 8a88573443 Add settings page to enable and disable devices
Commits squashed and amended to read information only from settings manager by Adam Honse <[email protected]>
2020-12-06 20:19:12 -06:00
Adam Honse a90edce03b Fix loading profiles from command line 2020-12-05 13:42:43 -06:00
Adam Honse 72070f95ad Fix profile deletion 2020-12-05 03:25:23 -06:00
Adam Honse 4b5d66ee12 Don't use HID serial string for Wraith Prism as mine reads inconsistently 2020-12-05 03:23:20 -06:00
Adam Honse 2306b20bb3 Add configuration wiki page link to readme 2020-12-05 03:21:40 -06:00
Adam Honse d2de20425d Add lower case openrgb executable name to .gitignore 2020-12-05 03:07:55 -06:00
Adam Honse b87691f051 Add detection of specific model of HyperX DRAM - Fury or Predator - and use that name if all sticks are the same type 2020-12-05 03:06:33 -06:00
Adam Honse 5841b2c55d Change default name for HyperX DRAM 2020-12-05 02:47:21 -06:00
Adam Honse 5286c27b25 Restrict HyperX DRAM to 4 slots 2020-12-05 02:44:34 -06:00
Adam Honse 9345682eb0 Greatly reduce flickering of HyperX DRAM by saving the apply until all LEDs have been written 2020-12-05 02:31:31 -06:00
Adam Honse 7d76d60db8 Fix HyperX DRAM ordering 2020-12-05 02:19:24 -06:00
TheRogueZeta 7e5546c1f2 Fix some typos and add to .gitignore file 2020-12-05 01:54:42 -06:00
Adam Honse 10876054b3 Razer Ornata Chroma keymap 2020-12-05 01:39:10 -06:00
Adam Honse 7b4d24ac31 Add missing pause/break to huntsman keymap 2020-12-04 21:30:35 -06:00
Adam Honse 96dd92384d Razer Huntsman keymap 2020-12-04 19:41:40 -06:00
Adam Honse 18aa3d35cb Fix serial port issues on Linux and add proper Direct mode to NZXT Hue+ 2020-12-03 22:36:49 -06:00
Chris e7dc95313f Changing the Linux executable (only) to lowercase openrgb
Commits squashed by Adam Honse <[email protected]>
2020-12-03 13:11:52 -06:00
Adam Honse f70c9cc63e Remove Setting_ prefix from all settings keys 2020-12-03 12:02:15 -06:00
Adam Honse 61d4b8fa5d More size loading fixes 2020-12-03 01:03:44 -06:00
Adam Honse 49fda962be Load sizes for HID devices after detection 2020-12-03 00:37:04 -06:00
Adam Honse a7acefb284 Ignore location string when loading profiles for HID devices 2020-12-03 00:10:53 -06:00
Adam Honse d19baf1365 Fill in serial field for all HID controllers using hidapi 2020-12-03 00:01:42 -06:00
Adam Honse 92dc8411d6 Fix Corsair mouse LED names by storing name in controller object 2020-12-02 23:04:49 -06:00
Adam Honse f0468ff8d1 Add mouse LED names for several Corsair mice 2020-12-02 22:28:00 -06:00
Adam Honse 8cc371f9be Add tab borders to Windows dark theme 2020-12-02 22:11:10 -06:00
TheRogueZeta c030157ffb Retrive motherboard DMI name info and use it 2020-12-03 03:54:34 +00:00
Adam Honse 3f7c981ba2 Use up-to-date controller list in profile manager 2020-12-02 21:53:14 -06:00
Adam Honse 7a305b1440 Clean up the device information page, enable word wrap so the layout doesn't resized due to long location strings 2020-12-02 21:43:47 -06:00
Martin Hartl 9c2d186d7e Asus USB: Initialize mode 2020-12-03 03:01:06 +00:00
Adam Honse f8f4dceb4a Add USB: location prefix and USB device ID location string to Corsair Hydro Series controller 2020-12-02 20:00:01 -06:00
Adam Honse 210591aa39 Add COM:, UDP:, and TCP: prefixes to location string for Espurna, LED Strip, and NZXT Hue Plus controllers 2020-12-02 19:29:44 -06:00
Adam Honse d3aefcfdf4 Check entire range of universes when attempting to group multicast controllers, rather than just checking the start universe 2020-12-02 19:14:27 -06:00
Adam Honse 31e35884dd Add --config option where you can pass in a custom path for configuration files 2020-12-02 17:38:49 -06:00
Adam Honse 9bde1c282a Initial E1.31 Unicast support, add ip parameter to E1.31 device to use Unicast mode 2020-12-02 17:20:30 -06:00
Adam Honse ca3c2ad541 Add HID: prefix to all HID detector locations 2020-12-02 12:18:56 -06:00
Adam Honse 3345fe6562 Fix I2C tools by adding I2C bus list change callback to resource manager 2020-12-02 00:08:15 -06:00
Adam Honse ddfcd1caf9 Split CLI processing into pre- and post-detection functions and add --localconfig and --nodetect options 2020-12-01 23:51:56 -06:00
Adam Honse 72da8f362c SDK protocol versioning implemented. Protocol updated to version 1 which adds vendor string to controller request. 2020-12-01 21:02:32 -06:00
Jan Wendland b0de49a107 Use usbdk backend for detecting hydro devices (if available)
This commit fixes #788 by enabling access to Corsair Hydro devices via usbdk if installed on a windows machine.
2020-12-02 01:26:43 +00:00
Adam Honse 09a9a5c257 Add vendor string to RGBController API and update all controllers with vendor information, add vendor to device information page 2020-12-01 19:24:52 -06:00
Chris 35fd4e2aae Adding Hue+ permissions to the udev rules
* Confirmed by Dunnul on discord.
2020-12-02 01:30:38 +11:00
k1-801 e4a819913a ASUS TUF Aura Core port (WMI)
Commit amended to move files to Windows-specific section of Qt project by Adam Honse <[email protected]>
2020-12-01 00:04:00 -06:00
Adam Honse 08718044d0 Fix wiki links in README 2020-11-30 19:39:37 -06:00
Chris M 6ec7901038 Build Debian packages with CI 2020-12-01 01:33:20 +00:00
Adam Honse 43fccf259f Don't flush COM port after writing in NZXT Hue Plus controller 2020-11-30 16:57:01 -06:00
Adam Honse a2f348a245 Don't flush COM port after write in LED Strip controller 2020-11-30 16:55:01 -06:00
Adam Honse 049441a4f5 Add USB HID safe mode (enumerates only enabled devices), enable in detector settings by setting hid_safe_mode to true 2020-11-30 12:23:13 -06:00
Chris 081752c927 Add Gigabyte RGB Fusion 2 SMBus motherboard list to JSON so that boards can be added without rebuilding.
* Moved DMI structure to JSON
* Writes "known good" boards to JSON if not present
* Checks versus JSON settings

Commits squashed and auto keyword removed by Adam Honse <[email protected]>
2020-11-29 03:27:09 -06:00
k1-801 f64fe31daa HID fix for Corsair and Gigabyte devices that weren't being detected after HID change
Commit amended by Adam Honse <[email protected]>
2020-11-27 15:39:33 -06:00
Adam Honse 195730e721 Fix color palette buttons to work with and without Windows dark theme enabled 2020-11-27 02:14:21 -06:00
Adam Honse f2396b453f Add algorithm include as std::max cannot be found in Qt Creator build 2020-11-27 01:42:12 -06:00
silas f1fd3e0191 Add an ARGB debug device
Commits squashed and adjusted for code style by Adam Honse <[email protected]>
2020-11-26 18:43:41 -06:00
Adam Honse fd4dcbd092 Add size check before correcting selected zone 2020-11-26 18:22:25 -06:00
CoffeeIsLife 5b76b83433 Fix the remaining issues with dark theme (Label offsets, Quick colors, Borders, QDialogs, and any others I may be forgetting) 2020-11-26 23:23:53 +00:00
Adam Honse fd3f2c50cb Add workaround for 0x48 controller on Gigabyte RGB Fusion GPUs not detecting until we have a better detection method 2020-11-26 17:20:59 -06:00
Lobo Tommy a414335334 Update 60-openrgb.rules - Added udev rule for LT100 2020-11-26 12:33:18 -06:00
Adam Honse 23ed6955bf Update zones for HyperX Fury Ultra mousemat 2020-11-26 04:05:19 -06:00
J. Bromley 9ca2a28444 Added Gigabyte RTX2060 SUPER Gaming.
Only needed to add a new subdevice ID.
2020-11-26 02:34:15 -06:00
David Lee Chong Yew 80c8b5f7e5 Added preliminary support for SteelSeries Apex OG family keyboards
Commits squashed by Adam Honse <[email protected]>
2020-11-26 02:29:21 -06:00
Lobo Tommy ec7ca4cca3 Update CorsairLightingNodeControllerDetect.cpp - Add Corsair LT100 Support 2020-11-26 02:02:12 -06:00
Adam Honse fca0f53e7a HyperX Alloy Origins doesn't use usage page 2020-11-26 01:42:01 -06:00
Joe Goett 843dacb43e Added M908 to OpenRGB udev rules file 2020-11-25 17:35:27 -05:00
Joe Goett d9771f7b9b Added support for Redragon M908 Impact mouse 2020-11-25 17:01:48 -05:00
k1-801 dc2b41a0e2 Massive HID detectors update
Commit amended to undo change to device list management, still working through that merge request.  Want to work this one in first.  Changes by Adam Honse <[email protected]>
2020-11-25 02:17:18 -06:00
Adam Honse cae28f3ac6 Use different interface on Windows vs. Linux for HyperX Alloy Origins 2020-11-24 18:27:18 -06:00
Adam Honse 0a458623e4 Fix interface number for HyperX Alloy Origins 2020-11-24 18:13:47 -06:00
TheRogueZeta 2850bd1a19 Logitech code cleanup 2020-11-24 08:07:22 +00:00
Adam Honse bcd49298cd Call DeviceUpdateLEDs rather than UpdateLEDs for HyperX keepalive threads 2020-11-23 02:59:05 -06:00
Chris 5458692192 EK Code cleanup 2020-11-23 17:58:35 +11:00
Adam Honse b35474d711 Update udev rules to add more HyperX devices 2020-11-21 23:01:34 -06:00
K900 207e05ba27 gitignore: don't track qmake stash 2020-11-21 07:41:33 +00:00
K900 3ea73ee80c CrucialController: keep track of the last set mode
This saves an extra control transfer when applying settings
that have already been applied. Mostly useful for direct mode.
2020-11-21 07:41:33 +00:00
K900 7cfdaaa501 CrucialController: force mode to static before setting direct colors
This fixes some misbehaving Ballistix sticks that require a mode reset
before they actually apply colors as intended.
2020-11-21 07:41:33 +00:00
silas 6347feb575 Add the dark theme files
Commit amended for code style and to remove duplicate code by Adam Honse <[email protected]>
2020-11-21 01:37:05 -06:00
Jonas Malaco 8dd0d85104 Get active mode and last color set from EVGA v1 cards
Improve the user experience by allowing the UI to be initialized with
the settings that are currently active on the hardware.
2020-11-21 01:21:38 -06:00
TheRogueZeta c1715f25f4 Add Gigabyte RTX 2060 Gaming OC 2020-11-20 19:42:27 +00:00
TheRogueZeta 9b9ec69f57 Add MSI RTX 3070 8 GB Gaming X Trio 2020-11-20 11:16:43 -08:00
Jonas Malaco 3cae2bccb5 Add PID for Logitech G PRO HERO Wired
This mouse is a variant of the G PRO Wired, with the new sensor.  The
protocol appears to have been kept the same.

$ lsusb
Bus 001 Device 002: ID 046d:c08c Logitech, Inc. G PRO Gaming Mouse
...

Related: https://github.com/libratbag/libratbag/commit/6ee1c0a591884db414a3af695b61f06a44b88f83
2020-11-19 17:18:38 -03:00
Adam Honse a2e21e606c Add include to fix linux build 2020-11-18 15:13:26 -06:00
Adam Honse c7a7eaf670 Fix case in Roccat Kone file name 2020-11-18 15:03:00 -06:00
TheRogueZeta ca6c61d47f Add Logitech G Pro Wired 2020-11-18 20:20:23 +00:00
Martin Hartl 2346095994 NZXT Kraken: Remove water cooler resize 2020-11-18 20:19:59 +00:00
enlight3d 7abd511306 add filter for roccat kone aimo detection
and clean up controller
2020-11-18 20:17:00 +00:00
TheRogueZeta f99aa4c4ff Add new devices for openrazer v2.9.0 2020-11-17 18:45:37 +00:00
TheRogueZeta 55af558e0e Logitech code cleanup 2020-11-17 17:48:49 +00:00
Jonas Malaco 4f47e166dd Enable support for EVGA 1080 FTW using V1 controller 2020-11-17 00:45:26 -03:00
Adam Honse 6cf624e56b Update OpenRazer-Win32 to version 2.9.0 2020-11-16 15:13:26 -06:00
Adam Honse e98d43776a Fix ASRock on Linux again 2020-11-15 15:24:43 -06:00
Adam Honse 34d8edb629 Fix inconsistent case in Polychrome filenames that was breaking Linux builds 2020-11-15 14:30:58 -06:00
TheRogueZeta 8ffd302a57 Name cleanup: adding brand names to all controllers 2020-11-15 20:25:51 +00:00
k1-801 dde857dfb4 Tiny threads fixes & a little bit of safety 2020-11-15 13:28:29 -06:00
Chris 9a53709db0 Adding "B450M DS3H-CF" to RGBFusion2SMBus
* Requested by Discord user stephencoons
2020-11-15 00:49:51 -06:00
Chris b495c7723f Code Cleanup for Coolermaster MP750 2020-11-15 00:48:46 -06:00
Florian Kraupa dd36a7362a This commit adds support for the Logitech G610 Orion Keyboard. Its not RGB, but behaves exactly like the G810. Cycle animation doesn't work for obvious reasons. 2020-11-15 00:45:24 -06:00
Chris a4d02d1c32 Adding Razer Viper Ultimate to openrazerdevices.h to fix #728
* Includes both Wired and Wireless modes
2020-11-15 00:42:28 -06:00
Chris M 75bd29126e Adding Razer Lancehead V2 to OpenRazerDevices.h to fix #668
* As referenced from upstream this mouse has both wired and wireless
modes (refer issue for link)
2020-11-15 01:11:32 +00:00
Chris f106e83c94 Adding Razer Tartarus V2 to OpenRazerDevices.h to fix #721
* Also fixed Orbweavers matrix declaration
2020-11-10 19:34:39 -06:00
Adam Honse 100678f85b Rework device enabling - fill in detectors list with detector names, default to true. Setting them to false disables the detectors 2020-11-10 17:57:56 -06:00
Adam Honse b29b987504 Add functions to set and save settings 2020-11-10 15:53:58 -06:00
Adam Honse a24909471f Fix Profile list loading 2020-11-10 15:49:56 -06:00
Adam Honse 49365b3d98 Fall back to HOME if XDG_CONFIG_HOME doesn't exist 2020-11-10 15:49:56 -06:00
Adam Honse c8e547343b Fix issues with empty json and unknown path 2020-11-10 15:49:56 -06:00
Adam Honse 8131b94a5d Create configuration directory if it doesn't exist 2020-11-10 15:49:56 -06:00
Adam Honse f7d187f5b2 Use XDG-compliant configuration directory (APPDATA on Windows) 2020-11-10 15:49:56 -06:00
Adam Honse 7b54787dd7 Rework Linux LED detection to use Settings Manager 2020-11-10 15:49:56 -06:00
Adam Honse 64b592c9bd Rework Disabled Devices list to use Settings Manager 2020-11-10 15:49:56 -06:00
Adam Honse 8998f0a731 Rework Debug Device detection to use Settings Manager 2020-11-10 15:49:55 -06:00
Adam Honse 12ed987333 Rework Espurna detection to use Settings Manager 2020-11-10 15:49:55 -06:00
Adam Honse 73efb1735f Rework LED Strip detection to use Settings Manager 2020-11-10 15:49:55 -06:00
Adam Honse 8eab2b6244 Rework Philips Wiz detection to use Settings Manager 2020-11-10 15:49:55 -06:00
Adam Honse b8835ad44f Clear the settings store if parsing the loaded JSON file fails 2020-11-10 15:49:55 -06:00
Adam Honse 5b68efd09f Initial prototype of settings manager loads JSON settings file and E1.31 detector uses JSON data to detect devices 2020-11-10 15:49:55 -06:00
Chris 5b15251d46 Adding Razer DeathAdder V2 to OpenRazerDevices.h to fix #604 2020-11-10 23:23:47 +11:00
Adam Honse 495c3cfe68 Fix padding in MSI Mystic Light controller and disable multiple-zone modes. Controller is still not enabled for general use. See Issue #389 2020-11-09 23:36:11 -06:00
Chris 945a32bdd4 Fixed resizing issue
* Comparing the passed in led to HDR_D_LED1 instead of the
HDR_D_LED1_RGB
* Removed hardcoded SendPacket()
2020-11-09 21:09:43 -06:00
Chris M d045a45a10 Hardcoding 1024 Leds for both D_LED channels 2020-11-09 21:09:01 -06:00
Chris 7b56ed4fd0 Convert Report.total_leds to enum 2020-11-09 21:08:19 -06:00
Chris M e751c3cf15 Correcting ln59 / 60 2020-11-09 21:07:52 -06:00
Chris M 1ca1ab2f00 Adding code to return current D_LED block count(s) from the controller
* Fixed logical error on ln119
2020-11-09 21:07:34 -06:00
Chris 76bad98bc7 Changes made to RGBFusion2USBController for issue 588
Other code cleanup removed by Adam Honse <[email protected]>
2020-11-09 21:04:45 -06:00
Chris M c3f45f79ca Adding "NZXT Hue 2 Motherboard" with 2 LED channels and 3 Fans 2020-11-09 20:25:55 -06:00
Chris M 3eec91575c Adding "B450 AORUS PRO-CF" motherboards as per request from discord user @troD4RKD3VIL
* Is the "B450 AORUS PRO-CF4" a typo??
2020-11-09 20:22:09 -06:00
Chris fa67bb285c Adding "X570 AORUS ELITE" to layouts 2020-11-09 20:21:44 -06:00
Chris f7d5f4cf38 Adding "B550I AORUS PRO AX" to layouts 2020-11-09 20:21:36 -06:00
TheRogueZeta 6cf334c296 Add support for MSI GeForce GTX 1660 Ti GAMING X 2020-11-10 02:16:22 +00:00
Erik Hanson cfefa73ca2 Add EVGA RTX 2070 SUPER XC ULTRA 2020-11-09 20:13:28 -06:00
TheRogueZeta 06a320d8d6 Add Galax RTX 2070 Super EX Gamer Black 2020-11-09 22:41:08 +00:00
Adam Honse 1d6aa0b17e Define controller address per GPU for Gigabyte RGB Fusion GPU as the GTX1080 G1 Gaming has the controller at 0x48 2020-11-09 16:39:11 -06:00
Adam Honse d2936a38ce Add Gigabyte GTX1080 G1 Gaming 2020-11-09 15:12:07 -06:00
Adam Honse ad2bad17e8 Bring the AppImage tools into the repo so we don't have to download them from unreliable external locations 2020-11-09 09:36:36 -06:00
Adam Honse 940a71931d Back to old AppImage version as link is working again 2020-11-09 09:32:17 -06:00
Adam Honse 7ffefed6c7 Verbose linuxdeploy 2020-11-09 09:08:55 -06:00
Adam Honse 52e802e226 Fix issue with debug keyboard not registering properly 2020-11-07 19:36:33 -06:00
Chris 6e16185e7f Direct Mode partially working
* Colours appear but seem to be one "apply colors" click behind
2020-11-07 19:19:53 -06:00
Chris cce3fcccaf RGB Output now functional
* GetStatus code disabled for now
* Passthru mode working currently testing other functionality
2020-11-07 19:19:41 -06:00
Chris 154f5afa44 Changed detector to allow for usage / usage page detection
* Small correction to packet bytes in CMARGBcontroller.h to allow packet
to send 0x00 at first byte
* Rearranged modes in RGBController_CMARGBController.cpp to have single
colour modes first
2020-11-07 19:18:51 -06:00
Chris 547a35307e CM ARGB Controller now functional
* All modes sans Passthru & Direct working
* All colour indexes now enumerating as expected
* Crashes when changing to Passthru from certain modes. Switch to "OFF"
first
2020-11-07 19:16:09 -06:00
Chris 90002d9eed CM ARGB Controller now working for some modes
* Code SegFaults after a few change packets are sent
2020-11-07 19:15:47 -06:00
Chris 743a27d0a2 Coolermastrer ARGB Controller detecting but not yet applying colour
* Compiling correctly
* Adding 5 controllers to GUI
* Changing Colour will cause segfault
2020-11-07 19:13:54 -06:00
Chris b709e5ddcc Initial add for Coolermaster ARGB controller
* Not yet functional

Commit amended for code style and cherry-pick cleanup by Adam Honse <[email protected]>
2020-11-07 19:12:37 -06:00
TheRogueZeta 06c09da4ea Add MSI RTX 2070 SUPER GAMING TRIO 2020-11-08 00:59:12 +00:00
TheRogueZeta 3a935249ef Add MSI 3090 GAMING X TRIO, fix Galax GPU ID
Commits squashed and amended by Adam Honse <[email protected]>
2020-11-07 18:58:02 -06:00
Adam Honse 89f22f99a0 Revert path for Linux Deploy as the temporary URL went down 2020-11-04 22:29:11 -06:00
Adam Honse 5f1889e101 Update Philips Wiz controller to use new Light device type 2020-11-04 09:24:44 -06:00
Adam Honse 19d554fede Update Espurna controller to use new Light device type 2020-11-04 09:23:46 -06:00
Adam Honse 1e4eacd337 Add a Light device type with a bulb icon 2020-11-04 09:23:17 -06:00
Adam Honse 87c99d31cf Update Wiz controller to use JSON library, receive firmware information from device 2020-11-04 00:45:20 -06:00
Adam Honse 5c5ed6f8bd Initial Philips Wiz controller 2020-11-03 20:06:14 -06:00
Adam Honse 88a96cd0c2 Expire CI builds after 30 days 2020-10-30 00:02:48 -05:00
Adam Honse ffb452f6f4 Use HID path for Location on Logitech mouse controllers 2020-10-29 23:55:30 -05:00
TheRogueZeta 7b93275443 Add issue templates (New Device, Feature Request, and Bug Report)
Templates edited by Adam Honse <[email protected]>
2020-10-29 23:27:29 -05:00
Tom Parker 09ad9b17fb [#582,#448] Fix profile loading RGBController metadata mismatch issue with the RGBFusion2USBController.
The controller description mismatched what was being saved in the
profile, with trailing '\0's filling the string to pad out the
initialized 32 character string.  Strangely enough the code to remove
these '\0's was there, with just a minor typo referencing 'name' instead
of 'description' to obtain the string's end index.

Tested on an X570 Aorus Ultra board revision 1.2.

Fixes issues #582 and #448.
2020-10-29 22:50:22 +00:00
TheRogueZeta 17e3898bcf Add MSI 1660 Super from Ant182 on discord 2020-10-29 10:16:44 -07:00
Adam Honse 56e90d60dd Add Zotac and PNY PCI IDs 2020-10-29 00:37:01 -05:00
Adam Honse efb5975fcf Add PCI ID filtering to Gigabyte RGB Fusion GPU detection 2020-10-29 00:28:25 -05:00
TheRogueZeta 8fa14542ad Add MSI RTX 2070 Super Gaming Z Trio and sort list 2020-10-29 03:40:59 +00:00
Adam Honse 2c93b46b23 Add support for 8-LED and 6-LED Hue 2 strips in the Hue 2 controller (thanks to Discord user peman for the patch!) 2020-10-28 19:06:20 -05:00
Adam Honse f9272872b9 Add ROG Gladius II Origin PID 2020-10-28 14:24:45 -05:00
Adam Honse 045dd98e51 Add support for ROG Gladius II mouse 2020-10-28 12:58:18 -05:00
Florian Heilmann 04b2e35f81 Add SteelSeries Apex M750 support
Commits squashed and some minor code style changes by Adam Honse <[email protected]>
2020-10-27 21:21:56 -05:00
Adam Honse 31a9399d19 Add I2C read check to Sapphire GPU controller, so it only creates a controller for the correct GPU bus 2020-10-27 00:46:53 -05:00
Adam Honse 7dfbdade39 Initial support for HyperX Fury Ultra mousemat (Direct mode only) 2020-10-26 12:51:59 -05:00
TheRogueZeta 41a0f2e7c3 Add TU104 MSI RTX 2060 Gaming X 2020-10-26 11:25:40 -05:00
crashniels da81052247 Use PCI ID based detection for Galax GPUs 2020-10-26 11:18:23 -05:00
Adam Honse a03e6a7800 Fix ROG Gladius II zone order and remove Off mode 2020-10-25 01:37:36 -05:00
Adam Honse 76b575e562 Fix ROG Gladius II Core 2020-10-25 01:30:31 -05:00
Adam Honse cda62b9e0e Fix Linux build 2020-10-25 01:15:42 -05:00
Adam Honse 62145c4548 Add ASUS ROG Gladius II Core 2020-10-25 01:05:20 -05:00
Adam Honse bd15eb022f Add the rest of the EVGA V2 bytes from the capture 2020-10-23 15:26:21 -05:00
Adam Honse f1e74018a3 Add write to 0x08 to EVGA V2 controller 2020-10-23 13:16:01 -05:00
Daniel Dreibrodt cf01a8dc46 Patriot Viper: Limit to one zone, as slots cannot be controlled separately 2020-10-22 15:46:45 -05:00
edbgon b7b2d0c1df Fix detection routine for Logitech G512 (Uses G810) 2020-10-22 15:44:10 -05:00
Adam Honse 0ceb4e1268 Add 0x18A5 Aura Addressable PID 2020-10-21 15:56:02 -05:00
edbgon f6083c8506 Logitech G213 Controller (Merge Request !171)
Commits merged and minor code style changes by Adam Honse <[email protected]>
2020-10-20 23:55:37 -05:00
Adam Honse 9fcc8dd573 Add I2C: label to location string for I2C devices 2020-10-20 23:42:20 -05:00
Adam Honse 5672f556e9 Add additional information from wiki homepage to README - Discord, Reddit, how-tos, donations, contributing history 2020-10-17 18:10:22 +00:00
Adam Honse 167d7ebdc5 Add OpenRGB-python-FX to list of SDK applications 2020-10-17 18:03:06 +00:00
Adam Honse 0b7f4c632a Rework OpenRazer mode inititialization on Windows 2020-10-16 19:59:25 -05:00
Adam Honse 8df9e979da Rework OpenRazer mode setting to get rid of duplicate code 2020-10-16 23:50:07 +00:00
Connor Byrnes da0ff218fa Add support for MSI RTX2070 Gaming X 2020-10-16 17:42:13 +00:00
Adam Honse 165c50689d Use HID path for Location on ASUS Aura USB controller 2020-10-15 17:00:54 -05:00
Bartosz Baranowski af403d5748 Update AuraUSBControllerDetect.cpp
Code modified for cleanup and code style by Adam Honse <[email protected]>
2020-10-15 15:36:47 -05:00
Carson Mathre bfb79e87b0 Update TecknetController.h 2020-10-15 10:03:42 -05:00
Carson Mathre cdb15861ab Update TecknetController.cpp 2020-10-15 10:03:37 -05:00
Carson Mathre a155697393 Update RGBController_Tecknet.cpp 2020-10-15 10:03:30 -05:00
alpemwarrior 54cccaa4a7 Now for real 2020-10-15 09:57:14 -05:00
alpemwarrior 912af1555a Fix initialisation of msi-rgb boards 2020-10-15 09:57:05 -05:00
Adam Honse e3b8ced8ba Update E1.31 controller information, add universe list for location string 2020-10-13 23:39:30 -05:00
Adam Honse 73a1779813 Use device name for E1.31 controller if the controller only contains the one device 2020-10-12 17:03:20 -05:00
Adam Honse e78ad56839 Split E1.31 devices into their own controllers unless they start at the same universe. Need to take universe size into account before feature is complete 2020-10-12 00:48:07 -05:00
Adam Honse b19dfdb010 Fix profile loading 2020-10-09 00:02:57 -05:00
Adam Honse c1c66c37d5 Disable buttons before enabling other buttons, so that window doesn't get resized 2020-10-08 23:20:16 -05:00
Neel Chotai e0f9017982 fix compilation on ppc 2020-10-08 23:08:23 -05:00
Pol Rius 791df64f81 Add support for Sony DualShock 4 (manual merge of !160)
Files pulled in manually and code style changes, Gamepad type addition by Adam Honse <[email protected]>
2020-10-08 17:15:18 -05:00
Adam Honse e52619dbab Move Profile Manager to Resource Manager and rework size loading so that sizes are updated upon redetection 2020-10-08 17:07:39 -05:00
Adam Honse e767b3db90 Split functionality for applying sizes and settings from a temporary controller list to a controller to its own function 2020-10-08 00:35:35 -05:00
Adam Honse da8c06756b Split functionality for loading temporary controllers from a saved profile into its own function 2020-10-08 00:16:37 -05:00
Adam Honse 24de16f77b Keep a separate list of controllers detected from hardware and dynamically add/remove them from the master list when redetecting so client controllers aren't deleted during redetection 2020-10-06 21:20:08 -05:00
Adam Honse 31b6533193 Update OpenRazer-win32 2020-10-05 17:18:29 -05:00
Adam Honse dd29bc9905 Use HID path for Location on SteelSeries Siberia controller 2020-10-05 00:28:59 -05:00
Adam Honse 0e7f2b9fc1 Use HID path for Location on SteelSeries Rival controller 2020-10-05 00:28:37 -05:00
Adam Honse 07dc0ce988 Use HID path for Location on SteelSeries Apex controller 2020-10-05 00:15:16 -05:00
Adam Honse 05c7d49a62 Use HID path for Location on Thermaltake Riing controller 2020-10-05 00:13:11 -05:00
Adam Honse fe8ed09e77 Use HID path for Location on Poseidon Z RGB controller 2020-10-05 00:11:03 -05:00
Adam Honse e4229aae47 Use HID path for Location on NZXT Kraken controller 2020-10-05 00:05:18 -05:00
Adam Honse e82b251bae Use HID path for Location on NZXT Hue 2 controller 2020-10-05 00:03:34 -05:00
TheRogueZeta e678c132bf Add MSI GTX 1660 courtesy of @ry0 2020-10-04 19:10:33 -05:00
Adam Honse acced4d036 Use HID path for Location on MSI 3 Zone controller 2020-10-04 18:38:56 -05:00
Adam Honse 43cea0a1b2 Use HID path for Location on HyperX Mouse controller 2020-10-04 18:14:54 -05:00
Adam Honse 7482363393 Use HID path for Location on Holtek controller 2020-10-04 17:47:41 -05:00
Adam Honse 96da5d5181 Use HID path for Location on Ducky Keyboard controller 2020-10-04 17:26:46 -05:00
Adam Honse 1618de46b9 Use HID path for Location on Corsair Peripheral controller 2020-10-03 17:12:27 -05:00
Adam Honse c8da008b93 Use HID path for Location on Aorus CPU Cooler controller 2020-10-02 21:02:32 -05:00
Adam Honse 4df557391a Use HID path for Location on AMD Wraith Prism controller 2020-10-02 20:56:49 -05:00
Adam Honse 406ebcc789 Use HID path for Location on Corsair Lighting Node controllers 2020-10-02 20:29:17 -05:00
Adam Honse b829bfe538 Use HID path for Location on Redragon controllers 2020-10-02 20:28:38 -05:00
Adam Honse fe74d9ea78 Add B450 AORUS PRO WIFI to RGB Fusion SMBus detection list 2020-10-02 12:55:44 -05:00
Adam Honse 2f08436e95 Use HID path for Location on HyperX Alloy Origins controller 2020-10-02 12:55:23 -05:00
Adam Honse d6350c8504 Use HID path for Location on HyperX Keyboard controller 2020-10-02 12:28:09 -05:00
Adam Honse 158aac5ee4 Remove only device information tabs, leaving other information tabs alone 2020-10-01 23:53:14 -05:00
Adam Honse 9c9dff41c3 Don't clear the entire tab bar, instead add new controller tabs only if missing and sort existing ones, then delete only those that no longer have an associated controller in the controllers list. Disabled software info and i2c tools pages for now 2020-10-01 22:33:54 +00:00
Shawn 86034a9ce5 Clear port_ID just like the remaining items that are updated each loop.
Re-add code to make NVIDIA cards work with the updated device manager.

Commit amended by Adam Honse <[email protected]>
2020-10-01 19:47:58 +00:00
Adam Honse 678e2fbc33 Rename Fn to Right Fn on Alloy Origins 2020-10-01 14:48:15 +00:00
Adam Honse 716b2aaac3 Protect controller list updates with mutex 2020-09-30 22:45:03 -05:00
Adam Honse fde002707a Clear the controller list before deleting the controller objects, same for i2c busses 2020-09-30 21:50:26 -05:00
flappy 0d938da87a Added MSI RTX 3080 10GB Gaming X Trio 2020-09-30 11:03:46 -05:00
Adam Honse 2d06a7fbe9 Update AMD PCI vendor ID on Sapphire GPU controller detection 2020-09-30 11:01:54 -05:00
Adam Honse f3ccaf1a2b Move RGBController files for device controllers into the Controllers directory 2020-09-29 20:54:04 +00:00
Adam Honse 278d6b0d00 Ensure controller still exists before trying to unregister callback 2020-09-28 23:45:41 -05:00
Adam Honse 8ead2f9c73 Call the callbacks when redetection starts, move matrix map deletion to individual controllers to avoid attempting to delete const pointers 2020-09-28 23:22:01 -05:00
Adam Honse 4f43e85139 Don't call the server's device list update function when updating detection progress 2020-09-29 01:38:20 +00:00
Adam Honse 7871b7d76a Implement detection progress callback and device rescan button 2020-09-29 01:16:46 +00:00
Adam Honse c30480af91 Add detection progress callback to avoid unnecessary device list updates 2020-09-28 19:11:47 -05:00
Adam Honse c3b4489fd3 Fix Windows build 2020-09-27 23:19:59 -05:00
Adam Honse 8347644b07 Client clears list and reinitializes controller when the device list updates 2020-09-28 01:29:35 +00:00
Adam Honse 60fd721586 Server sends a request to the client when the device list is updated 2020-09-27 22:12:34 +00:00
Erik Gilling 854bc099f7 Add Corsair Dominator Platinum RGB driver.
Code style changes by Adam Honse <[email protected]>
2020-09-27 03:23:51 +00:00
Adam Honse 19b1a400d9 Remove Qt warning for client disconnect slot 2020-09-26 19:18:28 +00:00
Adam Honse 533bd0c1a0 Linux LED sysfs entries controller 2020-09-26 00:48:11 +00:00
crashniels 88759aaac3 Update Glorious (Sinowealth) driver (Merge request !155)
Manually merged by Adam Honse <[email protected]>
2020-09-22 23:03:07 -05:00
Adam Honse 5fb3d83706 Update NZXT Hue 2 accessory list 2020-09-22 16:39:47 -05:00
Adam Honse 0fb2b08818 Print out NZXT Hue 2 device codes 2020-09-22 16:28:20 -05:00
Adam Honse b66e3347ea Add NZXT Kraken X3 to Hue 2 controller 2020-09-22 15:49:22 -05:00
Adam Honse 1354864038 Get master building on MacOS 2020-09-22 13:24:08 -07:00
Adam Honse 55bf28d4c3 Clean up some more reference passing related to server and clients and use the Resource Manager instead 2020-09-22 12:37:41 -05:00
Adam Honse 128bfc7792 Move network clients to Resource Manager 2020-09-22 12:17:54 -05:00
Adam Honse c1ac870035 Move network server to resource manager 2020-09-21 00:34:41 -05:00
TheRogueZeta 90e6ba88f1 Add EVGA RTX2070 XC OC from discord 2020-09-20 15:20:35 -05:00
Adam Honse b31a37e860 Make sure PCI ID variables are cleared before each bus initialization and don't break out of bus detection when PCI ID is zero 2020-09-14 20:12:31 -05:00
Adam Honse f2fd3c92ea Check for vendor == 0 for Nuvoton bus and add macro for motherboard SMBus checking 2020-09-14 19:55:58 -05:00
Adam Honse 9b2315234f Add Intel vendor ID to DRAM SMBus check 2020-09-14 19:29:28 -05:00
Adam Honse d41e817253 Add PCI IDs to AMD SMBus (PIIX4) detection on Windows 2020-09-14 00:21:27 -05:00
Adam Honse 29fea380aa Check PCI IDs for scanning SMBus devices to speed up detection 2020-09-13 23:59:41 -05:00
Adam Honse 2d53a2c7f1 Add EVGA v2 controller for RTX2080 XC GAMING, only supports Off and Direct mode for now 2020-09-13 20:12:50 -05:00
Adam Honse 62488cbc1e Rename EVGAGPU to EVGAGPUv1 before writing a controller for EVGA RGB V2 2020-09-13 19:43:07 -05:00
Adam Honse 651252b08c Add SteelSeries Apex Pro TKL ID 2020-09-13 15:27:48 -05:00
Adam Honse ed821cfac8 Update custom mode index for EVGA GPU controller 2020-09-13 14:26:09 -05:00
Adam Honse 3a32b4064f Don't try to call AMD ADL calls if DLL did not load 2020-09-13 13:39:44 -05:00
Adam Honse 12fbed760a Add PCI ID based detection for EVGA GPUs and add EVGA GTX1070 FTW to detection list 2020-09-13 13:34:39 -05:00
Adam Honse 973dce9d80 Fill in PCI information for all i2c interfaces on Linux 2020-09-12 03:06:00 -05:00
Adam Honse 1bd3c2ce49 Parse PCI information from AMD display library on Windows 2020-09-12 02:06:04 -05:00
Adam Honse cf6a4c5647 Update Sapphire GPU controller to use PCI IDs 2020-09-11 23:23:33 -05:00
Adam Honse f17cdea5b6 Initial controller code for EVGA GPUs. No detection implemented yet. 2020-09-11 23:04:52 -05:00
Stefan Frijters f1b7b8ba90 Allow to override build date with SOURCE_DATE_EPOCH
in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.
2020-09-11 22:18:07 -05:00
Adam Honse 128cf7a533 Included in wrong file 2020-09-11 16:33:48 -05:00
Adam Honse 0c03632b7b Espurna fixes for Linux build 2020-09-11 16:22:48 -05:00
Adam Honse 312d068021 Add controller for Espurna HTTP API 2020-09-11 15:58:58 -05:00
Pol Rius db64cd66a1 Invert colors depending on the boards DMI (For MSI RGB boards)
Commits in pull request !147 squashed and minor code style changes by Adam Honse <[email protected]>
2020-09-10 12:16:46 -05:00
TheRogueZeta 6ff72d58c8 Update max number of leds per #579 2020-09-10 12:08:09 -05:00
Adam Honse e9231c8b4b Update README 2020-09-10 12:07:37 -05:00
Adam Honse 8b5fcf1db0 Increment version number post-release 2020-09-09 01:31:03 -05:00
Adam Honse 1177e9fa68 OpenRGB version 0.4 2020-09-09 01:05:11 -05:00
Adam Honse 91b139987f Undo Corsair mouse LED change as the zones differ between mice 2020-09-08 17:48:22 -05:00
Adam Honse 72233ffed6 Add Corsair Sabre RGB 2020-09-08 12:37:59 -05:00
Adam Honse bc31490085 Start labeling Corsair mouse LEDs 2020-09-08 12:22:01 -05:00
Adam Honse fa4d330933 Fix LED name on HyperX Pulsefire Surge 2020-09-08 11:55:10 -05:00
Adam Honse 346beed0eb Standardize common mouse zone/LED names 2020-09-08 11:51:26 -05:00
Adam Honse e74faeb6be Rename Static mode to Direct mode for RGB Fusion 2 SMBus 2020-09-08 11:38:35 -05:00
Adam Honse 70c51abff7 Change order of HyperX DRAM so that sticks are in order 2020-09-08 02:11:28 -05:00
Adam Honse d2ebd167b3 Don't update Polychrome LEDs when the active mode doesn't require an update 2020-09-08 01:42:46 -05:00
TheRogueZeta a605d5581a Update zones on mode update
Minor cleanup, logic tweak to only update per-zone modes for Polychrome V1 by Adam Honse <[email protected]>
2020-09-07 16:36:26 -05:00
TheRogueZeta 759e09b3a3 Rework Polychrome v1 to be separate from ASRLED/V2
Code cleanup and some register name changes by Adam Honse <[email protected]>
2020-09-07 16:27:52 -05:00
Adam Honse a8b3279c1d Add X470 Aorus Gaming 7 Wifi 2020-09-07 13:14:20 -05:00
TheRogueZeta 3f2b925dd0 Update remaining controlers 2020-09-07 03:09:49 -05:00
TheRogueZeta 0cab595ef6 Fix G PRO speed slider. 2020-09-07 03:05:29 -05:00
Adam Honse 1a946268ba Update detection list for RGB Fusion 2 SMBus 2020-09-06 15:24:20 -05:00
Adam Honse 1f1548929d Use working directory for all file accesses, some old file accesses always used the executable directory 2020-09-06 12:56:20 -05:00
Adam Honse 3e62c91ed3 Add location to Polychrome controller 2020-09-06 12:44:34 -05:00
Adam Honse 9be25d1ca4 Make zone LED count a char as it can only be up to 0xFF 2020-09-06 12:25:52 -05:00
k1-801 290fddaf55 Fix incorrect font color detection for DeviceView (threshold 50) 2020-09-06 02:36:53 -05:00
Adam Honse 8823e28fa0 Call update device list callback after detection is finished 2020-09-06 02:29:22 -05:00
k1-801 ec77c658f2 Rudimentary rescanning implemented but button for it not added due to SDK conflicts. Stop detection button.
Commit amended by Adam Honse <[email protected]>
2020-09-06 01:37:16 -05:00
Adam Honse be84a60af6 More Polychrome V1 changes, set LED selection register for ASRLED/Polychrome V1 2020-09-05 02:00:56 -05:00
Adam Honse e40617e417 Set LED select register for Polychrome V1 2020-09-05 01:33:18 -05:00
Adam Honse 7556a2872c Rework LED handling for Polychrome V1 2020-09-05 01:13:38 -05:00
TheRogueZeta 7ccb3cd9e6 Fix reversed G PRO modes 2020-09-04 11:49:23 -05:00
TheRogueZeta cbf867c0ee Change zone name and move Polychrome_V1 2020-09-04 11:33:03 -05:00
Adam Honse b7ee237fbf Add Razer Cynosa Chroma keymap and add ISO keys to other Razer layouts 2020-09-03 16:21:29 -05:00
Adam Honse 0345eb582b More warning fixes 2020-09-02 19:03:43 -05:00
Adam Honse f568253c51 Clean up more warnings 2020-09-02 18:25:58 -05:00
Adam Honse 2251feb701 Add AUMA0-E8K4-0101 Aura SMBus controller as a V2 register device 2020-09-02 09:45:50 -05:00
k1-801 8b8451017e Non-important warnings removed
Commit amended by Adam Honse <[email protected]> due to merging from a different branch.
2020-09-01 23:29:00 -05:00
Adam Honse 94c18fc9b4 Change less than or equal to less than. This shouldn't change anything, but it seems the Media Next key has issues as it was and this fixes that 2020-08-31 23:30:29 -05:00
TheRogueZeta f741cb7c6b Add Logitech Powerplay mat and add speed opt GPW 2020-08-31 23:06:51 -05:00
TheRogueZeta d19b5bc87d Update Logitech Lighspeed nameing and openrgb.rule 2020-08-31 22:41:10 -05:00
Carson Mathre 319f19e65d Update RGBController/RGBController_Tecknet.cpp 2020-08-31 17:30:21 -05:00
Adam Honse ad97bf8c08 Rename Key: Cal to Key: Calculator on Ducky keyboard controller 2020-08-31 14:16:33 -05:00
Adam Honse 835a007445 Draw color wheel with transparent background rather than by pulling background color from palette, as it didn't always get the background the right color 2020-08-31 11:17:59 -05:00
k1-801 66fd8ab394 Dark theme icons 2020-08-31 09:35:35 -05:00
Adam Honse 9407ef7f4d Add X470 AORUS GAMING 5 WIFI to RGB Fusion 2 SMBus supported motherboard list 2020-08-31 08:29:37 -05:00
Adam Honse fb420b3928 Add X470 AORUS ULTRA GAMING to RGB Fusion 2 SMBus detection list 2020-08-30 18:01:33 -05:00
Adam Honse bc3e351f26 Add X470 AORUS ULTRA GAMING-CF to RGB Fusion 2 SMBus detection list 2020-08-30 17:13:54 -05:00
Adam Honse edbccc345f Change LED configuration offset for AUDA0-E6K5-0101 Aura SMBus controller 2020-08-30 17:06:54 -05:00
Adam Honse db3c3e9fb1 Use DMI information to detect RGB Fusion 2 SMBus controller. Only one board added for now. 2020-08-30 16:30:47 -05:00
Adam Honse 6af7324840 Fix missing comma in Ducky key name list 2020-08-30 15:25:04 -05:00
Adam Honse 640f7c7cde Add keymap to Ducky keyboard controller 2020-08-30 15:13:16 -05:00
Adam Honse 37224a6c4d Add support for ASRock Polychrome addressable header as a single LED zone 2020-08-30 14:24:37 -05:00
Adam Honse 6235bcb2b4 Update README 2020-08-30 13:24:59 -05:00
Adam Honse 90ca955343 ASRock zones created based on LED configuration register rather than pre-defined board layouts 2020-08-30 13:07:00 -05:00
Adam Honse d38dcc038a Remove boolean for ASR LED and replace it with an ASRock type enum with ASR LED, Polychrome V1, and Polychrome V2. 2020-08-30 01:57:13 -05:00
Adam Honse f577e5ef3c Add more sleeps to prevent mode corruption and add a function for reading the LED configuration register 2020-08-30 01:43:14 -05:00
Adam Honse 877469cd2d Fix case typo 2020-08-30 01:06:10 -05:00
Adam Honse 4d506588b5 Add sleeps after i2c operations to make ASRock controller more reliable 2020-08-30 00:59:45 -05:00
Adam Honse e972335872 Move speed setting to mode function, add struct to hold board information, remove firmware version from name string and add it to firmware version field. 2020-08-30 00:48:51 -05:00
Adam Honse 9f584b1f76 Hard coded test with all B450M Steel Legend LEDs (except addressable) 2020-08-30 00:48:51 -05:00
k1-801 45dc619076 Expand large keys to fill empty spaces in the matrix, if possible
Change manually picked from merge request by Adam Honse <[email protected]>
2020-08-30 00:31:18 -05:00
Kryesh 81c8ec6684 Allow for multiple RGBFusion 2 Controllers
See issue 529
2020-08-30 00:11:32 -05:00
k1-801 1c7bfdaeb4 Proper UTF-8 labels
Commit amended by Adam Honse <[email protected]>
2020-08-29 01:40:59 -05:00
crashniels f6812a5c88 Corsair Layout changes
Added the KeyIDs for the K95 and K95 platinum as well as the European specific keys. IDs from ckb-next. https://github.com/ckb-next/ckb-next/blob/ba063cedb751cecb1b8b1abf1af3f6e8dc31e9fe/src/daemon/keymap.c
2020-08-29 00:32:40 -05:00
Adam Honse c76dbc943f Update udev rules for G502 Lightspeed with Powerplay Mousepad 2020-08-29 00:22:16 -05:00
Ryakna cd1ceed5df Added detection for Logitech G502 Lightspeed when connected through the Logitech Powerplay Mousepad 2020-08-29 00:18:06 -05:00
Rafail Giavrimis 1558ffc61f Added Support for Steelseries Apex 5 2020-08-29 00:10:25 -05:00
k1-801 06b75f5ae7 Add debug keyboard
Commit modified by Adam Honse <[email protected]> to remove wingdings portion of change.
2020-08-29 00:07:29 -05:00
Adam Honse 95275ebf39 Make linear zones linear in demo devices 2020-08-28 17:46:48 -05:00
Adam Honse d5f86baa73 Create a debug controller with fake devices for SDK testing. Enable with debug_<type> lines in debug.txt 2020-08-28 16:47:38 -05:00
Adam Honse c386a6c571 Add i2c tool for reading multiple bytes from an SMBus device register 2020-08-27 19:12:37 -05:00
Adam Honse 4e95bc55d8 Add the ability to disable device detection using a text file 2020-08-26 19:44:24 -05:00
Adam Honse ae4c88fef8 Fix missing parameter in i2c call 2020-08-26 15:14:25 -05:00
Adam Honse 989dc7fc5d Select all zones before applying Polychrome colors 2020-08-26 15:04:43 -05:00
dumbasPL 1b863fdc7b Add support for Corsair H150i Pro RGB 2020-08-25 15:06:50 -05:00
Adam Honse 933ea93c25 Update README 2020-08-24 22:54:20 -05:00
Adam Honse 7daa5b6556 Use horizontal layouts for buttons and detection elements, repaint device view when selecting all 2020-08-24 22:36:18 -05:00
k1-801 1598fc8de4 Add apply and select all buttons.
Select all button and some minor rework by Adam Honse <[email protected]>
2020-08-24 22:12:09 -05:00
Adam Honse b03fce33ca Update Key: Context to Key: Menu in device view label lookup 2020-08-24 00:51:34 -05:00
Adam Honse 6d9aea38a6 Fix setting mode specific colors and not changing to direct mode when the mode has no configurable colors 2020-08-24 00:40:44 -05:00
Adam Honse a2ed9571cf Add button to toggle graphical LED view and default to hidden 2020-08-24 00:40:44 -05:00
Adam Honse ba24efe544 Fix display for devices with multiple matrix zones 2020-08-24 00:40:44 -05:00
Adam Honse f750654b3e Check for size changes and refresh data if size has changed 2020-08-24 00:40:44 -05:00
Adam Honse b0b46dd3a5 Use QString for LED labels vector 2020-08-24 00:40:44 -05:00
Adam Honse 5e002107ef Add key labels based on key names 2020-08-24 00:40:44 -05:00
Adam Honse b6824b8a46 Don't update the mode UI when the update callback occurs for now 2020-08-24 00:40:44 -05:00
Adam Honse 342d90b82a Add function to unregister update callback when device page is deleted 2020-08-24 00:40:44 -05:00
k1-801 63f005d4fc Forgot a DeviceView update in setSelectionColor 2020-08-24 00:40:44 -05:00
k1-801 4601b91f1f Fixed multiple selection, temporarily disabled interface updates due to update spam from a controler
Code style changes and integration by Adam Honse <[email protected]>
2020-08-24 00:40:44 -05:00
k1-801 c8ea2ff36f Zones overlapping fixed
Code from RGBController moved to DeviceView by Adam Honse <[email protected]>
2020-08-24 00:40:44 -05:00
k1-801 7781b1425d Ctrl-held selection fix 2020-08-24 00:40:43 -05:00
k1-801 7977a3ef50 Fix some signedness warnings, add size caching 2020-08-24 00:40:43 -05:00
k1-801 3000d625fa WIP: Zone names displayed fine now, but off-center 2020-08-24 00:40:43 -05:00
k1-801 bbc3c1de5b WIP: Instant color setting, buttons removed
Code cleanup by Adam Honse <[email protected]>
2020-08-24 00:40:43 -05:00
k1-801 a2a394492b WIP: Multiple selection test
Rework of LED position data from RGBController into DeviceView, code style cleanup modified by Adam Honse <[email protected]>
2020-08-24 00:40:43 -05:00
Adam Honse c6b10d9316 Center the device view horizontally 2020-08-24 00:40:43 -05:00
Adam Honse 177cd2ec92 Use matrix map when available 2020-08-24 00:40:43 -05:00
Adam Honse f787c5e63f Move device view above other controls, begin working on matrix display 2020-08-24 00:40:43 -05:00
Adam Honse d3993547c3 Device view resizes width to fit window size, UI updates on SDKcontroller update 2020-08-24 00:40:43 -05:00
Adam Honse 17f1390f36 Add widget that displays the current color of all LEDs on a controller 2020-08-24 00:40:43 -05:00
Adam Honse 38f8808bea Rename Key: Context to Key: Menu 2020-08-23 21:40:06 -05:00
Adam Honse c58d458062 Remove non-direct modes 2020-08-23 15:18:08 -05:00
Adam Honse d96fd19c6c Clean up profile setup packets 2020-08-23 15:16:09 -05:00
Adam Honse 9f91170240 Initial implementation of Pulsefire Surge direct mode (requires new firmware?) 2020-08-23 15:16:09 -05:00
Adam Honse 2440ab8fc9 Update Linux CI scripts to use temporary linuxdeploy path as the main release is broken 2020-08-23 00:16:28 -05:00
Denzil S.T. Ferreira 6ec3cfb1de Add support for NZXT Kraken M22 AIO
Reworked to use device information table by Adam Honse <[email protected]>
2020-08-22 14:06:03 -05:00
Adam Honse ebae2a3ba3 Fix typo in MSIGPUController 2020-08-22 13:24:36 -05:00
Felipe Cavalcanti effa243adb Adding support for CPU Cooler Gigabyte Aorus ATC800 2020-08-22 12:57:50 -05:00
Azymm 715099d768 Update MSIGPUControllerDetect.cpp 2020-08-22 12:42:20 -05:00
Adam Honse e6531e5379 Add HyperX Alloy Origins Core PID 2020-08-21 23:23:32 -05:00
Adam Honse 41762d4670 Add additional Corsair Hydro modes 2020-08-21 00:22:09 -05:00
Adam Honse ce836ce7b6 Fix E1.31 device name strings 2020-08-20 15:06:59 -05:00
Adam Honse c517257cb0 Add initialization packet to Corsair Hydro controller 2020-08-18 13:01:10 -05:00
Adam Honse ed368fba12 Add Corsair H115i PRO RGB to udev rules 2020-08-18 12:10:45 -05:00
Adam Honse 0b7b42b8f5 Add Corsair H115i PRO RGB to Corsair Hydro list 2020-08-18 12:06:47 -05:00
Adam Honse 68a16fadc2 Initial support for Corsair Hydro Series devices (only H100i Pro RGB for now) 2020-08-18 00:34:42 -05:00
Adam Honse 4f5cf83e47 Add keepalive option for E1.31 output 2020-08-17 15:53:44 -05:00
Adam Honse ed01850926 Initialize new map 2020-08-14 01:33:50 -05:00
Adam Honse 29e2626471 Generate matrix maps for E1.31 matrix configurations 2020-08-14 01:32:35 -05:00
Adam Honse 4f0cf752f5 Add e131.txt parser for matrix configuration. 2020-08-13 22:19:14 -05:00
Térence Clastres 6c52e3ce11 Fix hang when deleting busses 2020-08-13 00:05:29 -05:00
Térence Clastres 53379c5482 Fixes for memory issues detected by valgrind 2020-08-12 23:48:03 -05:00
Adam Honse ff07a488a2 Update Blackwidow Elite keymap 2020-08-12 23:34:33 -05:00
Adam Honse 73a8a50848 Add Blackwidow Elite keymap 2020-08-12 15:22:31 -05:00
Adam Honse 78a8a2c4a9 Add Blackwidow 2019 keymap 2020-08-12 15:14:21 -05:00
AnierinB 9939d7e4f1 Add support for RTX 2060 Z with Sub-Device ID 0x3752
USB controller: NVIDIA Corporation Device 1ada (rev a1) (prog-if 30 [XHCI])
Subsystem: Micro-Star International Co., Ltd. [MSI] Device 3752

Signed-off-by: AnierinB <[email protected]>
2020-08-11 00:01:20 -05:00
xyz 9cf32593ae add PID of Logitech G502H 2020-08-10 19:14:21 -05:00
santeri3700 7294fa8180 Enable support for Corsair Scimitar PRO RGB 2020-08-09 14:10:47 -05:00
edbgon bd35a83837 Added missing key for US layouts 2020-08-09 14:09:12 -05:00
edbgon 3da5a4f6ba Update to add Apex Pro keyboard 2020-08-08 22:13:39 -05:00
Adam Honse c571ea124f Add GitLab URL to the Software Information page 2020-08-08 02:46:41 -05:00
Adam Honse 9db92e9afa Show Software Information and SMBus Tools tabs after device list has been refreshed 2020-08-07 23:37:23 -05:00
Adam Honse 634ec9f488 Wait on asynchronous device detection before performing CLI operations that require device list 2020-08-07 23:01:20 -05:00
Adam Honse 9c4e73bbed Set default percentage to 100% so that the progress bar goes away if device detection is skipped 2020-08-07 14:02:00 -05:00
Térence Clastres f8af9980fd Fix crash on close while detecting devices 2020-08-07 14:01:59 -05:00
Adam Honse 06b2cd87c6 Clean up progress bar initial state 2020-08-07 14:01:59 -05:00
Adam Honse f716a05947 Add detector names and display them in the progress bar 2020-08-07 14:01:59 -05:00
Adam Honse 75899f973b Load sizes after detection is complete 2020-08-07 14:01:59 -05:00
Adam Honse e84cb98055 Add detection progress bar to the user interface 2020-08-07 14:01:59 -05:00
Adam Honse aaa2ecddc7 Move i2c bus detectors to their respective files and add a detector macro for i2c busses so they can be detected asynchronously. Fix WMI and DMI info. 2020-08-07 14:01:59 -05:00
Adam Honse 7898e9b95d Initial prototype of asynchronous detection. DMI information broken 2020-08-07 14:01:59 -05:00
TheRogueZeta 5270b46e31 Re-order Zones 2020-08-07 12:54:56 -05:00
TheRogueZeta d0ab5a4de4 Fix Lighting Control packet typo. 2020-08-07 12:53:32 -05:00
TheRogueZeta 9be8ab8371 Add Logitech G Pro Wireless 2020-08-07 11:58:29 -05:00
Chris f0be42db38 Added 'X570 AORUS ULTRA' to known layouts 2020-08-07 11:44:03 -05:00
Adam Honse 8667211180 Move console attachment to main and only perform if running in a terminal. (!102) 2020-08-05 21:49:20 -05:00
Chris 8168e1cadb Initial controller for Tecknet mice 2020-08-05 21:35:23 -05:00
kernzerfall c15ceaa26c Add support for Logitech G502 Proteus Spectrum and G512 RGB.
- Set the G512 RGB to use G810 driver
- Add driver and interface for the G502 Proteus Spectrum
2020-08-05 21:06:30 -05:00
kernzerfall ee61b87fe4 Add udev rules 2020-08-05 21:06:12 -05:00
pobrn ddc69778dc Modular detection system with resource manager.
Includes pull request !87 with modifications by Adam Honse ([email protected]).
2020-08-05 00:23:34 -05:00
Adam Honse b3a7b7be81 Add 32-bit AppImage build target 2020-08-04 17:26:44 -05:00
Adam Honse f05df3768b Add number pad to Ducky matrix map 2020-08-04 10:26:38 -05:00
Katzenbiber 1be9f6e460 Add support for Logitech G203 Lightsync 2020-08-02 22:49:14 -05:00
santeri3700 3bbc3da48b Enable support for Holtek USB Gaming Mouse 2020-08-02 22:45:15 -05:00
santeri3700 92f7fe7dc4 Add support for Holtek USB Gaming Mouse 2020-08-02 22:42:56 -05:00
Ahmad Nassri f1d42d27ce docs(readme): include note about VS 2019 runtime 2020-08-02 22:41:24 -05:00
Adam Honse f288f63087 Update default DPI and add some modes to Pulsefire Surge controller 2020-08-02 22:38:42 -05:00
Adam Honse 226045cb8e Update key names on SteelSeries Apex controller 2020-07-31 22:36:21 -05:00
edbgon 4660870c22 Update SteelSeries Apex controller for Apex 7 TKL version 2020-07-31 22:08:57 -05:00
Adam Honse 412c819699 Set matrix map pointers to NULL for HyperX Pulsefire Surge 2020-07-31 12:29:08 -05:00
Adam Honse 635dcce7f0 Use the name Direct for all custom/static modes that transition smoothly without flicker 2020-07-31 10:49:25 -05:00
B Horn 1457831840 Modifying find_usb_serial_port() to return a vector 2020-07-31 08:47:39 -05:00
Adam Honse 00cc6978a2 Initial HyperX Pulsefire Surge controller 2020-07-28 20:37:12 -05:00
Chris d26e4da9f1 Added B550 Aorus Pro & Elite layouts
* Added MBName2Layout map
* Changed layouts to accomodate
2020-07-27 10:46:52 -05:00
Adam Honse 0a821526fa Fix typo 2020-07-27 10:17:28 -05:00
crashniels 68a92d0219 Read device mode and colours 2020-07-26 23:13:13 -05:00
crashniels 5221d93fc0 Changed UpdateMode() to DeviceUpdateMode() 2020-07-26 23:13:07 -05:00
crashniels 22deb13ac0 Added Galax modes in 2020-07-26 23:12:28 -05:00
crashniels 58b875d5ed Added missing references in the Qt Project file 2020-07-26 23:12:15 -05:00
crashniels 12f5d6070f WIP Galax RTX GPU support
Setting RGB values works. Modes still unknown.
2020-07-26 23:07:35 -05:00
crashniels 5e0b1fa3cc Added 0x3A to the Aura Ram Address list 2020-07-26 20:04:35 -05:00
Roger Roger 1ee3a7c3e2 Fix crash related to Razer Naga Trinity
Not all devices have static_mode at position 1, just setting it without
checking can crash the app
2020-07-26 15:49:39 -05:00
edbgon 43c13db970 Updated HID feature report with report ID for Windows compatibility 2020-07-26 15:46:20 -05:00
edbgon b5818d22af Update HID feature report to include report number for windows compatibility 2020-07-26 15:45:45 -05:00
Adam Honse fd7a5fc057 Add empty files/classes for HyperX Pulsefire Surge 2020-07-25 17:36:24 -05:00
Adam Honse 5af1ca9363 Fix formatting 2020-07-25 16:51:56 -05:00
Adam Honse c4d096e60c Update warning section in README to clarify a few things 2020-07-25 16:50:41 -05:00
Adam Honse 174b0743a9 Update timer resolution every 500ms to ensure it stays set while OpenRGB is active 2020-07-25 01:51:39 -05:00
Adam Honse 4b50533560 Uncomment timer initialization... 2020-07-25 01:33:18 -05:00
Adam Honse 1555dae1c8 Set timer resolution to 0.5ms on Windows 2020-07-25 01:20:49 -05:00
Chris 8b5717470a Fix for Gigabyte Fusion2 USB detection
* Adjusted the selection criteria for  USE_HID_USAGE flags
* Slight changes to the Fusion2USB controller to avoid crashes
* Updated DMIInfo to return correct Motherboard name on windows
2020-07-24 12:41:25 -05:00
edbgon 38b2cf03b0 LED name for 3rd LED group fixed 2020-07-24 12:39:24 -05:00
cjber 1293b07c9e add MSI 2070S Gaming X Support 2020-07-24 12:37:39 -05:00
Adam Honse aa4c41ddf7 Add Razer Blade Stealth and Blade Pro (2017) keymaps 2020-07-24 12:02:16 -05:00
Chris 628f423171 Minor fix for the Razer Blackwidow X Chroma 1532:0216
* Changed the 'w' to 'W' to match upstream
2020-07-23 21:57:21 -05:00
roger roger a9d179f93a Fixed typo that prevented the razer naga trinity from being detected 2020-07-23 21:56:26 -05:00
衛俊儒 4955dc0844 Update MSIGPUControllerDetect.cpp
MSI RTX2080 Sea Hawk EK X
2020-07-23 21:55:04 -05:00
Al_eXs 3f66f0d67a Fix Tab navigation order in the GUI 2020-07-23 21:48:31 -05:00
Adam Honse bc7ab5170a Add Razer BlackWidow Chroma Tournament Edition keymap 2020-07-23 21:18:30 -05:00
Adam Honse d61649f748 Add Razer BlackWidow Chroma keymap 2020-07-23 21:09:38 -05:00
Adam Honse 9a33a78574 Add keymap support to OpenRazer code and add a keymap for the Huntsman Elite 2020-07-23 14:42:34 -05:00
Adam Honse 030c0c60f3 Add (ANSI) and (ISO) specifiers to keys that differ between layouts 2020-07-23 11:17:23 -05:00
Adam Honse 19ff834d99 Fix apostrophe key on G810 2020-07-23 10:54:59 -05:00
Adam Honse 400a078a05 Fix media key names 2020-07-23 10:46:45 -05:00
Adam Honse 618bebc46b Update key names for G810 and Poseidon Z RGB 2020-07-23 10:26:16 -05:00
Adam Honse dee23ec52e Use synchronous mode update function in CLI 2020-07-22 23:29:32 -05:00
Adam Honse baca85b8cd Create a detection list for MSI GPU controller with card names 2020-07-22 22:32:00 -05:00
Arturo Casal 00b1cfcb3b Added Identifiers for MSI RTX 2080 Gaming X Trio 2020-07-22 20:47:55 -05:00
Shawn a9dbf5ef70 Add support for MSI 2060 Gaming X 2020-07-22 20:45:45 -05:00
Jeff Geer a0b1153ec3 Added Identifiers for MSI RTX 2080 Ti Gaming X Trio 2020-07-21 23:22:15 -05:00
Adam Honse 39a5e0eba0 Increment version number post-release 2020-07-21 23:21:10 -05:00
Adam Honse 308bb6f9b8 OpenRGB version 0.3 2020-07-21 19:34:18 -05:00
Adam Honse 86d96848a2 Fix buffer pointer in HyperX Alloy Origins controller 2020-07-21 19:33:34 -05:00
Adam Honse 98100a9bad Add two skipped slots before Number Pad Enter on HyperX Alloy Origins 2020-07-21 17:28:40 -05:00
Adam Honse e66562bb25 Fix number pad mapping on HyperX Alloy Origins 2020-07-21 16:29:17 -05:00
Adam Honse 902ebc2e83 Initialize transmit color count after inserting blanks 2020-07-21 12:28:05 -05:00
Adam Honse 403d60e214 Update skip list for HyperX Alloy Origins 2020-07-21 12:25:34 -05:00
Adam Honse 1c5130e78a HyperX Alloy Origins keymap 2020-07-20 23:30:10 -05:00
Miles M 481a5dea2e Update RGBController/OpenRazerDevices.h 2020-07-20 18:14:46 -05:00
Adam Honse 320129633d Add SMBus detection mode selection box 2020-07-20 17:49:12 -05:00
xgelectro 0dea21a53e i2c_smbus_nvapi::i2c_smbus_xfer now returns -1 for I2C_SMBUS_QUICK accesses which are unsupported 2020-07-20 17:37:43 -05:00
xgelectro 79625e9c8a Removed read bit from i2c_dev_address, so the detection of ASUS ROG RTX20xx Super is now working 2020-07-20 17:37:38 -05:00
Adam Honse 0cff1734ce Use 65 as size for Alloy Origins feature reports 2020-07-20 17:29:45 -05:00
David Reidsma e1d8f48cb9 changed max brightness from 5 to 4 2020-07-19 13:32:47 -05:00
B Horn 752737034b AddressSanitizer build time configuration option
This adds a configuration time option for enabling AddressSanitizer,
a tool included with recent versions of gcc (4.8+) and clang (3.1+).

To use it:
qmake CONFIG+=asan <path to orgb>
2020-07-19 13:25:51 -05:00
B Horn ecf1d2ce98 Bounds checking for ResizeZone implementations
As noted in #350, various RGBControllers don't validate if the zone they
are trying to resize actually exists.

This was fixed by a just checking they remain in bounds.
2020-07-19 13:23:40 -05:00
B Horn bb743c6b62 Validating user provided indexes in RGBController
When using the SDK Server, it was possible to provide indexes that would
later be used inside the various SetXDescription functions in
RGBController. This would result in possible out of bounds reads /
writes.

This is patched by checking the various indexes remain in bounds.
2020-07-19 13:19:59 -05:00
B Horn f02223d6ba Checks to avoid null dereferences in NetworkServer
Various commands in NetworkServer require extra data. However, if the
packet size is set to 0 for these, the code will skip over reading the
data in and allocating memory. This results in null dereferences.

This patch adds checks to the relevant commands to make sure they don't
continue reading a null pointer.
2020-07-19 13:16:19 -05:00
edbgon b87980965d Updated key names in accordance with usb spec 2020-07-19 13:05:51 -05:00
edbgon 2255eea14e Proper matrix map for Apex 7 keyboard 2020-07-19 13:05:26 -05:00
Adam Honse 0ccf2d0c33 Remove some debugging printouts in Network Client and Server code 2020-07-17 22:10:53 -05:00
Adam Honse 5ce6ec9ea7 Request updated controller mode from server after sending a Set Custom Mode command 2020-07-17 18:29:37 -05:00
Adam Honse 97e1c3e913 Update mode asynchronously 2020-07-17 18:29:37 -05:00
Adam Honse 9937731ad8 Remove WinUSB instructions and instead provide WinUSB uninstall instructions after the Windows HID switch 2020-07-17 17:15:19 -05:00
Adam Honse bd4f3728f6 Re-add interface check for Corsair driver when not using HID usages. Only set special function control for non-keyboards 2020-07-17 09:23:50 -05:00
Chris 009a6ccd2a Updated detector to include code pages
* Report descriptor for GB Fusion2 USB 048d:8297

0x06, 0x89, 0xFF,  // Usage Page (Vendor Defined 0xFF89)
0x09, 0x10,        // Usage (0x10)
0xA1, 0x01,        // Collection (Application)
0x85, 0x5A,        //   Report ID (90)
0x09, 0x01,        //   Usage (0x01)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x10,        //   Report Count (16)
0xB1, 0x00,        //   Feature (Data,Array,Abs,No Wrap,Linear,Preferred
State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x06, 0x89, 0xFF,  // Usage Page (Vendor Defined 0xFF89)
0x09, 0xCC,        // Usage (0xCC)
0xA1, 0x01,        // Collection (Application)
0x85, 0xCC,        //   Report ID (-52)
0x09, 0x01,        //   Usage (0x01)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x3F,        //   Report Count (63)
0xB1, 0x00,        //   Feature (Data,Array,Abs,No Wrap,Linear,Preferred
State,No Null Position,Non-volatile)
0xC0,              // End Collection
2020-07-17 09:23:50 -05:00
Katzenbiber 6606ab92bd Fix Wraith Prism using WinUSB on Windows
- Add Usage Page to Wraith Prism Detect, which fixes WinUSB bugs.
- Change AMDWraithPrismControllerDetect.cpp structure
2020-07-17 09:23:49 -05:00
Adam Honse 595248cc10 Fix issues preventing hidapi from working without WinUSB on Windows 2020-07-17 09:23:49 -05:00
Chris ffc02e6c98 Coolermaster MP750 now supports on load status from device
Previous issues with hidapi-hidraw vs hidapi-libusb have been resolved.
CMMP750Controller.cpp now calls GetStatus in the constructor to query
device and set current state. Added "Getters" to the public interface to
allow the RGBController_CMMP750Controller.cpp to access current state in
construction.
2020-07-17 09:16:02 -05:00
Adam Honse ac2d911566 Disable MSI Mystic Light controller until the bricking issues are understood 2020-07-16 23:34:50 -05:00
Adam Honse 633dfdbddd Re-add EKControllerDetect.cpp with fixed capitalization (to fix build break on case-sensitive systems 2020-07-16 13:09:59 -05:00
Adam Honse 54cd8408e8 Temporarily delete EKControllerdetect.cpp (lower case) 2020-07-16 13:09:19 -05:00
Chris 384011aab3 Preliminary functionality implemented for EK Loop Connect
* 9 modes implemented
* Speed Slider works
* Currently single (non linear) zone
2020-07-16 11:12:59 -05:00
Chris 95ded7b871 Initial commit for the EK Loop Connect Support
* Implemented Static & Breathing modes
2020-07-16 11:12:48 -05:00
Adam Honse 607d83b795 More Sapphire GPU work 2020-07-15 14:47:37 -05:00
SuNNjek f4872c52bd Add support for MSI RTX 2070 ARMOR 2020-07-15 10:20:05 -05:00
Adam Honse 505e2d2aa4 Initial driver for Sapphire GPU (tested on RX580 Nitro+ on Windows) 2020-07-15 00:22:46 -05:00
Chris 77ecfc3b46 Cleaned up MSI Mysticlight detect pids
* Added all MSI Mystic light PIDS to udev rules
* Slight tweak to speed up CM detector
2020-07-14 15:43:40 -05:00
Chris 8107288838 Additonal code corrections and updates for B550 2020-07-14 15:36:56 -05:00
Adam Honse 05e76cc733 Fix Windows build 2020-07-12 17:02:11 -05:00
Adam Honse 816eabb1d1 Update direct packet for HyperX keyboards based on Alloy FPS captures 2020-07-12 16:53:20 -05:00
Adam Honse 9b6e24947d Code style cleanup for MSI GPU controller 2020-07-12 16:29:34 -05:00
Hex3l 5778d344e0 adds support to MSI 2080 Ti Sea Hawk EK X 2020-07-12 16:25:56 -05:00
xyz b785f2efbf Attach PCI IDs in DetectNvAPII2CBusses() 2020-07-12 16:25:07 -05:00
xyz 224f59450e Add support for MSI RTX 2080S Gaming X Trio 2020-07-12 16:20:57 -05:00
Adam Honse b80cbe931e Add Corsair Glaive RGB PRO to detection list 2020-07-12 16:06:58 -05:00
Adam Honse 87adb0bdb7 Add keepalive thread for Alloy Origins 2020-07-12 02:41:07 -05:00
Adam Honse 78c7572a2c Update constants for Alloy Origin driver and use 64 byte instead of 65 byte operations 2020-07-12 02:10:05 -05:00
Adam Honse bbed1f64a7 Use interface 3 for Alloy Origins 2020-07-12 01:20:59 -05:00
Adam Honse ac071902c0 Fix MSVC paths from 2017 to 2019 upgrade 2020-07-12 00:54:06 -05:00
Adam Honse 62a4cd31c5 Update QT path for GitLab CI 2020-07-12 00:47:32 -05:00
Adam Honse 751961b3b3 Initial controller for HyperX Alloy Origins 2020-07-12 00:31:40 -05:00
Chris 30625548e5 Adding USB PID 048D:5702 for Gigabyte B550 Aorus Elite 2020-07-09 22:38:12 -05:00
Chris 9451771ccb Rewrote the RGBFusion2USBController to allow for per model
configurations of LED's and zones

* largely changed knownLayoutsLookup to remove reliance on other enums /
structures and made it a map of maps
* rewritten the code to accomodate that change
2020-07-09 22:25:56 -05:00
Chris 12442046e2 Initial commit for dmiinfo.cpp
- Tested working for Linux
- Implemented in Fusion2USB controller and the motherboard name will
populate the controller name in the GUI / CLI
2020-07-09 22:25:45 -05:00
B Horn 47baeb6b6b Improving NetworkServer's memory management (#373)
This patch resolves several bugs:

* NetworkServer would allocate various instances of `NetworkClientInfo`.
  This is patched by deallocating the NetworkClientInfo when it's
  listening thread ends in the `listen_done` section.

* Memory would be allocated for threads that wouldn't be freed. This
  is resolved by detaching from the threads, so they no longer need to
  be joined to be freed, and then freeing the memory as they finish.

* Thread-Safety issues involving `ServerClients` would result in stray
  `NetworkClientInfo`'s not being removed from the list in certain
  situations. This is resolved by used a mutex to lock access to this
  from different threads.
2020-07-09 21:56:42 -05:00
Neel Chotai 263561868c fix musl compilation 2020-07-09 21:51:33 -05:00
Adam Honse 9bc58b039b Add Corsair Harpoon (non-Pro) to detected Corsair Peripheral list 2020-07-09 12:00:02 -05:00
Adam Honse 82c0ff8452 Add HyperX Alloy FPS to detected HyperX keyboard list 2020-07-08 11:43:41 -05:00
edbgon 2d7e996e4b Added initial support for SteelSeries Apex 7 Keyboard (Nordic model) 2020-07-08 03:22:03 -05:00
Adam Honse 0ae76e40c2 Add matrix map for Ducky One 2 TKL 2020-07-07 16:33:21 -05:00
Adam Honse 343c285321 Initial driver for Ducky One 2 keyboard 2020-07-07 13:15:02 -05:00
Adam Honse 6492852627 Add Corsair Harpoon RGB Pro to supported devices list 2020-07-07 01:20:56 -05:00
Adam Honse acc032a69c Adjust Polychrome speed 2020-07-06 13:17:39 -05:00
Adam Honse 950a3be01d More MSI Mystic Light cleanup 2020-07-06 03:45:45 -05:00
Adam Honse 6626321e80 Don't update NZXT fan status for any Hue 2 devices until we get initialization packet working 2020-07-06 02:13:00 -05:00
Adam Honse 7276f5e1d5 Add speed control to Polychrome controller 2020-07-06 02:03:47 -05:00
Adam Honse 5f9c4f8432 Code cleanup and rework for MSI Mystic Light controller
* Replace decimal constants with hexadecimal constants when ANDing/ORing values
* Add comments to explain what the code is doing
* Use C-style casts to fit the project standards
2020-07-05 18:27:51 -05:00
Adam Honse a1cd324731 Add comments and minor cleanup to Kraken driver 2020-07-05 12:12:07 -05:00
Adam Honse c2c5e6666d Fix previous commit 2020-07-05 12:04:35 -05:00
Adam Honse f7d6ede033 Update NZXT Hue 2 and Kraken detectors 2020-07-05 12:02:29 -05:00
Adam Honse 25f9e2a110 Add --client command line argument for opening network clients 2020-07-05 04:25:46 -05:00
Adam Honse 8ef6888a28 Add I2C byte operation to piix4 driver on Windows 2020-07-04 15:40:46 -05:00
B Horn 78a7be63ef Using the correct PID for the Steelseries 300 (0x1710) 2020-07-04 03:28:46 -05:00
Adam Honse f108515a6e Fix Set All Devices being slow and crashing on certain setups. It was sending the update multiple times 2020-07-03 02:59:54 -05:00
Adam Honse ad4e198aea Replace C-style clock() with std::chrono::steady_clock to fix timing on Linux 2020-07-02 16:59:30 -05:00
Adam Honse 5aad79135f Don't try to read fan status for Hue 2 devices without fan controllers 2020-07-01 19:25:29 -05:00
Adam Honse 5fc6981c16 Fix OpenRazer devices with logo/scroll/left/right matrix effect nodes on Windows 2020-06-30 18:11:15 -05:00
Adam Honse 942df26432 Update Readme 2020-06-30 18:10:44 -05:00
Adam Honse b3860be638 Bring in NZXT Hue 2 controller improvements from fan_devel branch 2020-06-28 23:44:35 -05:00
Adam Honse 8ecabb0789 Add 32-bit GitLab CI build target for Windows 2020-06-28 22:40:42 -05:00
Adam Honse d3fc88b24f Fix USB serial port detection in Windows. Fixes false Hue+ detection 2020-06-28 22:36:25 -05:00
Adam Honse dfb2e52e7b Add --i2c-tools to help text with warning, set GUI flag if --i2c-tools is specified 2020-06-28 21:41:00 -05:00
Adam Honse 96af869d79 Check for local server before detecting devices from hardware and tweak timeouts to make network connections faster 2020-06-28 21:08:59 -05:00
Adam Honse 4c6429ae76 Add OpenRGB client support to GUI 2020-06-28 17:57:27 -05:00
Adam Honse 7d2877a8e9 Don't exit after loading a profile from the command line 2020-06-28 11:21:56 -05:00
Adam Honse a25f3ef2fc GUI rework to provide more control over optional tabs to main.cpp, add TODO comments for client mode 2020-06-28 03:01:43 -05:00
Adam Honse 15ace9d094 Add flag to start application minimized to tray 2020-06-28 02:30:23 -05:00
Adam Honse 58aba0a147 Allow specifying --gui and --server together 2020-06-28 02:18:28 -05:00
EXtremeExploit 199db16ec0 Fix RGB problem with strip and media keys 2020-06-26 20:59:54 -05:00
EXtremeExploit c364fabf57 Add the UK Enter and UK Backslash leds 2020-06-26 20:20:46 -05:00
Adam Honse 15a2d5beaf Add zadig clarification to readme 2020-06-26 13:50:00 -05:00
Adam Honse 5b956f7ff1 Add missing Corsair PIDs 2020-06-26 11:15:59 -05:00
Chris dc42248a88 Added Warrior Kane TC235 2020-06-25 23:59:28 -05:00
Adam Honse eeeab399be Fix LED count in Corsair Lighting Node controller 2020-06-25 22:32:33 -05:00
Adam Honse 39d451793b Update Lighting Node detection to detect multiple of the same device. Add reads to Lighting Node driver to fix compatibility with Corsair Lighting Protocol Arduino project 2020-06-25 22:30:31 -05:00
Adam Honse 5db888fba0 Add Fedora dependency list to README 2020-06-25 14:51:02 -05:00
Adam Honse 1b91687fac Re-add LED 2 for WiFi X570 Gigabyte boards 2020-06-25 13:25:11 -05:00
Chris 7d38cd4a78 Fix issue #161
- removed added LED in known_channels for the x570
- ensured that the .header address is passed to SetLEDEffect() correctly
2020-06-25 13:07:18 -05:00
Chris 899b90decc Udev rules to replace 99-openRGB.rules
- whilst rule number is arbiturary TAG=+"uaccess" needs to be run prior
to /lib/udev/rules.d/70-uaccess.rules
- Removed unsafe MODE="666" access
- Removed GROUP tags as no longer required

- Confirmed working on Ubuntu & Arch. See issue #329
2020-06-25 09:15:50 -05:00
edbgon 8dcb1f075d Add LED header for Gigabyte RGB Fusion 2.0 - X570 I AORUS PRO WIFI (rev. 1.0) motherboards. Solves #161. 2020-06-25 08:50:47 -05:00
Nate Dean 5588f9b7a9 Quick G403 Hero support (First Time contributing to something so hopefully I don't mess up) 2020-06-25 08:16:54 -05:00
Thomas Karl Pietrowski 717620e8dd debian: openrgb-udev depends on udev
Makes sense, no?

Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 12:05:29 -05:00
Thomas Karl Pietrowski 877d462dbc debian: Remove package dependencies
debhelper is smart enough to determine these on it's own.

Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 12:05:19 -05:00
Thomas Karl Pietrowski d3cf315175 debian: Also recommend openrgb-dkms-drivers
Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 10:51:32 -05:00
Thomas Karl Pietrowski f47129902a debian: Building in parallel
Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 10:51:07 -05:00
Thomas Karl Pietrowski 5a3c69ec32 debian: Recommend to install openrgb-udev
Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 10:50:55 -05:00
Thomas Karl Pietrowski 392c547b87 debian: Making openrgb-udev a arch-indep package
Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 10:50:37 -05:00
Thomas Karl Pietrowski 38527a5122 debian: Adding pkg-config as Build-Dep
Signed-off-by: Thomas Karl Pietrowski <[email protected]> (github: thopiekar)
2020-06-24 10:49:37 -05:00
Thomas Karl Pietrowski 77412a959f debian: Cleanup
Signed-off-by: Thomas Karl Pietrowski <[email protected]> (github: thopiekar)
2020-06-24 10:49:17 -05:00
Thomas Karl Pietrowski 3a5ebe387e debian: Adding separate package for udev rule
Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-24 10:48:49 -05:00
Térence Clastres 1db412e970 Fix high CPU usage when running the SDK server
It was coming from `recv_select()` and `accept_select()`
The timeval struct members for select() is reset after each call to select() for
whatever reason so like FD_ZERO and FD_SET it needs to be placed inside
the loop.

Source: https://stackoverflow.com/questions/3324078/why-select-always-return-0-after-the-first-timeout
2020-06-24 10:08:40 -05:00
Chris a3c931392a Merged MP750 Medium changes and made logic changes to correctly compile
and execute
2020-06-24 10:04:39 -05:00
Térence Clastres b94f701db8 Fix high CPU usage when running the SDK server
It was coming from `recv_select()` `nd accept_select()`
The timeout for select() is only when waiting for the file descriptor to
be ready for reading/writing so when the FD is ready AND there is
nothing to read, it will not return and instead keep executing the while loop with no timeout.
Fix this by adding a 100ms timeout when there is nothing to read.
2020-06-24 09:35:31 -05:00
Térence Clastres b79ff124e6 Replace Sleep() by std::thread::sleep_for() 2020-06-24 09:28:11 -05:00
Adam Honse 60baf6d05f Remove duplicate line 2020-06-24 08:26:09 -05:00
Swyter cb9b22804a Implement human color parsing in the command-line by using the standardized CSS 3 subset, well known for styling. Interpret first as text to avoid problems like 'darkgreen' being picked up as 0xDA.
- Also, and make case insensitive by using the strcasecmp() function. Both for colors and modes. The only improvement I can think of is stripping whitespace beforehand.
  - Also, improve digit parsing by using `strtoul()`, previously only FF00FF worked, whereas now we can type things like 0xFF00ff or 0xff00ff.

For example; something like this should work: `OpenRGB.exe -c darkgreen,ff00ff,0xff0000,red,REd,teal,pink,gOLd,AAgoldo,magenta -m breathing`

(`AAgoldo` will throw a `Error: Unknown color: 'AAgoldo', skipping.`; and pick the next color instead, this is intended behavior)
2020-06-23 23:15:10 -05:00
Térence Clastres d2dfd03551 Use the default SDK port constant in the CLI 2020-06-23 23:10:41 -05:00
Térence Clastres f3bdee9bd2 CLI: Allow --mode flag to be case insensitive
Also fix handling when no argument passed
2020-06-23 23:10:29 -05:00
Adam Honse 7a3de1edbb Add firmware version request to NZXT Hue 2 controller 2020-06-22 23:23:36 -05:00
Adam Honse 0464fbcbe2 Make default SDK port a defined constant 2020-06-22 11:32:32 -05:00
Adam Honse 12226804f3 Rename small to medium for Cooler Master MP750 2020-06-22 11:23:26 -05:00
Adam Honse f06d71bd0c Add Cooler Master MP750 small variant PID 2020-06-22 08:59:42 -05:00
Adam Honse 112d5a1cb2 Add Corsair Strafe IDs to detection list 2020-06-22 08:47:46 -05:00
Martin Hartl b70658e37d Asus USB: Fail detection if config table read fails 2020-06-21 20:24:52 -05:00
Adam Honse 80a2770263 Update Corsair peripheral controller to use HID writes and reads instead of feature reports where possible 2020-06-21 20:11:16 -05:00
Erik Karlsson 765ef62858 Add SteelSeries Siberia 350 2020-06-21 19:18:38 -05:00
Matthias Wirtz 0e58fcc236 Update AuraUSBControllerDetect.cpp 2020-06-21 01:45:42 -05:00
Adam Honse 4bf0330974 Fix mode colors in Corsair Lighting Node controller 2020-06-20 22:14:30 -05:00
Térence Clastres 6d585d3eeb Network: Print used port on startup and change default to 6742
Also print an error if server can't be started

1337 is already used by razer's rest server
Port idea by @bahorn (6742 = ORGB on a phone numpad)
2020-06-20 14:39:14 -05:00
Térence Clastres 0286a5dd58 CLI: Add daemon/server mode 2020-06-20 14:39:01 -05:00
Térence Clastres b3cadbae5d Fix CLI
It was not changing the colors since e3e6c034 and had an overflow on
`options->devices.size()` since 0f4ddd16 causing options not to be applied

Second issue was a bit trickier as it was not reproducable when using a
debug build. It seemed like `std::vector<DeviceOptions> devices` had an
overflow. I saw a bunch of warnings regarding comparison with implicit
cast so I figured I'd fix that first and see if it makes a difference.
Turns out it did and fixed the issue.

While toying around, I also noticed that `throw` didn't seem to work,
causing crashes later in the program. It turns out the catch-all clause
`catch (...)` is not necessary matching a `throw NULL` expression as it
might be of type `int`. The solution is to use `thrown nullptr;`
instead.

Reference: https://en.cppreference.com/w/cpp/language/try_catch
2020-06-19 16:46:57 -05:00
Adam Honse e26e874d1c Fix file that didn't get renamed 2020-06-19 16:34:51 -05:00
Adam Honse c9c214267d Update matrix map to fix offsets and add ISO layout keys to the matrix. ENTER was shifted right one column to account for ISO #/~ key 2020-06-19 15:18:52 -05:00
Adam Honse 6957c1ca03 Add link to OpenRGB.NET project by diogotr7 to README 2020-06-19 14:51:37 -05:00
Diogo Trindade f5aafda340 Added logitech g512 PID 2020-06-19 14:41:14 -05:00
Adam Honse f1fe428f59 Rename Hue2Controller to NZXTHue2Controller and add additional Hue 2 protocol devices documented in liquidctl 2020-06-19 14:41:09 -05:00
Thomas Karl Pietrowski 614c9768ad Needed changes for nightly builds on launchpad.net
Signed-off-by: Thomas Karl Pietrowski <[email protected]>
2020-06-19 08:35:43 -05:00
Adam Honse 5828c4df8d Add Debian packaging files 2020-06-19 08:35:26 -05:00
Adam Honse 6cf32b8a94 Remove icon extension in desktop file 2020-06-18 21:51:51 -05:00
B Horn bc6487505a Adding scripts and tooling to build an AppImage 2020-06-18 21:36:59 -05:00
Diogo Trindade d1e8104442 Added missing g810 keys and PID 2020-06-18 11:48:33 -05:00
Adam Honse 91414084d6 Move Off mode to second position in MSI Mystic Light mode list so that custom mode works 2020-06-18 10:50:25 -05:00
Adam Honse 372ff746ad Add SteelSeries Rival 300 Black Ops edition to PID detecton list 2020-06-18 09:47:39 -05:00
Adam Honse ab297281d3 Fix Blackwidow 2019 string in OpenRazer device list 2020-06-17 03:26:22 -05:00
Adam Honse 2cbba19bf9 Code style changes to MSI Mystic Light detection, use the same hidapi detection code as used by other drivers 2020-06-16 17:21:35 -05:00
Adam Honse b5001c983e Add RGB Fusion 2 USB to udev rules 2020-06-16 13:47:14 -05:00
Adam Honse 7d4d6152ab Add OpenRGB E1.31 Receiver to SDK projects list 2020-06-15 22:46:51 -05:00
Adam Honse f2c1022c7f Don't consider client online until it has been initialized 2020-06-15 22:41:33 -05:00
Adam Honse 771e362a63 Do not automatically refresh HyperX direct mode unless it has been 50ms since last device update to prevent flickering 2020-06-15 11:04:59 -05:00
Adam Honse 3eba2c3dd3 Add underglow zone for Razer Huntsman Elite 2020-06-14 15:57:50 -05:00
Adam Honse 305f66ad3d Treat the LED strip on the Razer Diamondback as a single zone 2020-06-14 14:14:12 -05:00
Adam Honse 3191a87f46 Update README 2020-06-13 19:45:59 -05:00
Adam Honse a9493d46aa Implement LED packing for Logitech G810 direct mode 2020-06-13 17:32:39 -05:00
Adam Honse 6499ee4312 Add Logitech G810 direct mode, LED list, and matrix keymap. Update function still needs optimization to pack multiple keys per packet 2020-06-13 16:51:20 -05:00
Adam Honse f26897df71 Fix Logitech G810 controller build on Linux 2020-06-12 19:49:04 -05:00
Adam Honse 8ae07ea9e2 Logitech G810 Orion Spectrum driver, does not include direct mode yet 2020-06-12 15:23:22 -05:00
Adam Honse cb94b4fe28 Update .gitignore 2020-06-11 08:31:51 -05:00
Adam Honse f51f222fb4 Initialize color modes for per-LED modes on Aura Core controller 2020-06-10 18:58:00 -05:00
Swyter d3162ea2e8 Initial version of the MSVC/Qt5 GitLab buildbot. On Windows also copy inpoutx64.dll and libusb-1.0.dll to the final destination and use intermediate build folders to get rid of the cruft. 2020-06-10 18:32:40 -05:00
Adam Honse fa1f0b05ce Initialize i2c start and done flags 2020-06-10 11:42:28 -05:00
Adam Honse c7bb002b7c Add Aura X570 interface number workaround to libusb DLLs
Source for my libusb fork can be found on GitHub:

https://github.com/CalcProgrammer1/libusb
2020-06-10 09:43:30 -05:00
crashniels b1de039f21 Finished up all the modes 2020-06-07 18:05:29 -05:00
Adam Honse e086ecd0bb Fix wheel color changing when setting all devices 2020-06-07 18:01:48 -05:00
Adam Honse f612ca8bdc Fix bug with ColorWheel updating 2020-06-07 17:58:55 -05:00
Adam Honse 5b8441c57d Initial implementation of RGB Fusion 2 DRAM controller 2020-06-07 15:49:28 -05:00
Adam Honse 919d89d52f Update Redragon M711 controller with generic write function 2020-06-03 21:48:17 -05:00
crashniels 479d51df87 AMD ADL Windows 2020-06-02 20:39:26 -05:00
Adam Honse 687424e732 Rename Glorious Model 0 detection file 2020-06-02 17:35:22 -05:00
crashniels a2a613f22d use hidapi instead of libusb 2020-06-02 17:34:01 -05:00
crashniels a34d0f93a3 Added most modes in 2020-06-02 17:31:14 -05:00
crashniels 8e62be0b9e Added the Model O 2020-06-02 17:31:02 -05:00
vinno97 95bcc5e0fd Add pkgconf to the dependencies in the README
If the `pkg-config` command cannot be found, `packagesExist(...) {...} else {...}` always chooses the 'else' branch.
2020-06-02 17:11:04 -05:00
Chris 19ef8afe70 Updated controller to use HIDAPI instead of LIBUSB
& added code to pass back info from the USB device
2020-06-02 17:08:29 -05:00
Adam Honse 5fdea9d34f Delete zone matrix maps when destroying RGBController 2020-05-31 19:36:01 -05:00
Adam Honse 32938ec2af Add sleep to OpenRazer driver to fix hangs updating certain devices 2020-05-31 16:20:35 -05:00
Adam Honse 8d29a40954 Convert Corsair Lighting Node driver to use hidapi instead of libusb 2020-05-30 23:48:59 -05:00
Adam Honse a75a2bbf8b Update README udev rules section 2020-05-30 13:44:53 -05:00
Adam Honse f96a4c3557 Fix incorrect PID in Corsair Peripheral driver and add udev rules file for all OpenRGB devices 2020-05-30 13:26:54 -05:00
Adam Honse 1d426f109a Convert AMD Wraith Prism driver to use hidapi instead of libusb 2020-05-29 16:21:05 -05:00
Adam Honse 8827d0e0c2 Convert Hue 2 driver to use hidapi instead of libusb 2020-05-29 13:19:16 -05:00
Adam Honse edfb4f8d4e Update app screenshot in README 2020-05-29 11:02:31 -05:00
Adam Honse 13ce388e9a Convert Thermaltake Riing driver to use hidapi instead of libusb 2020-05-28 23:16:20 -05:00
Adam Honse 316902b2c3 Fix Steelseries path 2020-05-28 22:47:50 -05:00
B Horn 6667cdeed9 Rival 300 should now be properly intergrated with the RGBController. 2020-05-28 17:04:09 -05:00
B Horn de44c57081 Added all the PIDs for the various Rival 300 Mouses 2020-05-28 17:00:12 -05:00
B Horn 30a1bc9893 fixing bug that would stop the mouse from updating color 2020-05-28 16:57:20 -05:00
B Horn cf4b421abd Early work on enabling support for the Rival 300. 2020-05-28 16:56:01 -05:00
B Horn 1a9e1c2430 List all the devices types in the switch statement 2020-05-28 16:50:34 -05:00
B Horn bde9e7ea6b Adding list of devices this should support currently (all the 100-series rival mouses) 2020-05-28 16:49:57 -05:00
B Horn fc9c6585af Modified the SteelSeries RGB Controller to read the device name. 2020-05-28 16:47:07 -05:00
B Horn be9711a021 First working version to support the Rival 110 mouse 2020-05-28 16:44:46 -05:00
Adam Honse bfa7f63486 Add hidapi dependency to readme 2020-05-27 23:24:01 -05:00
Adam Honse 8f19267886 Use hidraw backend for hidapi if available 2020-05-27 23:19:03 -05:00
Adam Honse fab6e41810 Fix uninitialized loop counter in AuraUSB controller 2020-05-27 11:17:21 -05:00
Adam Honse c3ceac1ed9 Add more MacOS project definitions 2020-05-26 01:44:39 -05:00
Adam Honse bb01790d71 Add MacOS libraries and paths to project file 2020-05-26 01:25:46 -05:00
Adam Honse 9cf7bdea29 Use system hidapi on Linux 2020-05-26 00:21:10 -05:00
Adam Honse 6da6ff6cc0 Reorganize Qt project file and add section for MacOS configuration 2020-05-25 20:21:22 -05:00
Adam Honse baa04913c3 Add headset stand type string 2020-05-25 16:45:58 -05:00
Adam Honse 64c0861097 Move icon lookup to its own function for reusability 2020-05-25 16:41:56 -05:00
Adam Honse 522016137b Razer Base Station Chroma is a headset stand 2020-05-25 14:06:11 -05:00
Adam Honse 40d0f17ae2 Update icons 2020-05-25 13:57:04 -05:00
Adam Honse c88e71d52a Add device table to HyperX keyboard detection code 2020-05-24 16:16:52 -05:00
Adam Honse c3d284c97b Add speed control to Logitech G203 2020-05-24 15:10:20 -05:00
Adam Honse 19b572da30 Fix Polychrome controller detection 2020-05-24 14:18:07 -05:00
Martin Hartl e6c4017ad0 Add Logitech G403 driver 2020-05-24 14:04:07 -05:00
Martin Hartl b862912fb1 NZXT Kraken: Rewrite to use hidapi 2020-05-24 12:35:03 -05:00
Adam Honse 02f7f57130 Fix BlackWidow Elite string 2020-05-18 17:55:49 -05:00
Adam Honse c6b3d7c675 Add matrix mapping for Redragon keyboards 2020-05-18 17:35:33 -05:00
Adam Honse 1b2a5a4b14 Add Redragon K552 Kumara to Redragon device list 2020-05-18 16:24:37 -05:00
Adam Honse c0190d35d1 Logitech G203 requires a read after writing 2020-05-18 11:12:29 -05:00
Adam Honse 4d0219b184 Add Tecware Phantom Elite to Redragon driver as it uses the same controller 2020-05-18 10:24:10 -05:00
Adam Honse 85fc72232a Logitech G203 and Corsair ST100 support 2020-05-18 09:45:38 -05:00
Adam Honse cbb13b0d22 Add MacOS support to NetworkClient.cpp 2020-05-16 23:33:49 -07:00
Adam Honse bd6ec4c41e Get client stop function working 2020-05-14 10:06:22 -05:00
Martin Hartl d843b3d619 Aura USB: Do effect changes only once
* Improve the zone naming
2020-05-13 18:41:00 -05:00
Martin Hartl ca9c40f084 Aura USB: Addressable header and direct mode fixes
* Add addressable header and integrated LED count detection
* Correctly use the direct mode
2020-05-13 18:24:23 -05:00
Adam Honse 6a85729f10 Increment version number post-release 2020-05-12 16:35:34 -05:00
Adam Honse 13414ec9b8 OpenRGB version 0.2 2020-05-12 16:33:41 -05:00
Adam Honse 74faee0f73 Reorder Thermaltake Riing modes to put direct at top 2020-05-12 16:04:52 -05:00
Adam Honse 3f0027aa90 Use byte index 2 of config table for channel count on addressable Aura controllers 2020-05-12 15:58:00 -05:00
Adam Honse d22aa1ed6c Only allow ASRock firmwares 1.x, 2.x, and 3.x for now 2020-05-12 15:11:11 -05:00
Adam Honse 23d51f65d0 Only update mode for zones with nonzero size 2020-05-12 15:02:02 -05:00
Adam Honse cad356efca Remove hard coded list of Polychrome firmware versions as it seems all firmwares 1.x and 2.x use ASR LED protocol and 3.x+ use Polychrome 2020-05-12 14:46:11 -05:00
Adam Honse 70e83c13cc Attempt to auto detect unknown Polychrome firmware versions 2020-05-12 13:39:14 -05:00
Martin Hartl 7ca0a1b6ab Add Aura USB controller for X570 mainboards 2020-05-12 12:25:02 -05:00
Adam Honse 9bd5536d07 Add ASR LED firmware 1.5 2020-05-12 12:06:34 -05:00
Adam Honse eaa3b9a368 Add command line option to enable i2c tools 2020-05-12 11:01:46 -05:00
Adam Honse 599c468de8 Small changes for 0.2 - report 5 channels from Aura Addressable controller until config table is figured out, increase sleep in Corsair Peripheral write to 2ms to prevent device crashing in Linux 2020-05-12 08:59:19 -05:00
Adam Honse 9f21814395 Code style changes for RGB Fusion 2 SMBus 2020-05-11 12:24:25 -05:00
Adam Honse cb8a551683 Disable RGB Fusion 2 SMBus controller until better detection scheme is implemented 2020-05-11 11:43:42 -05:00
Matt Harper 7f1156d81c Rename UpdateLEDs to DeviceUpdateLEDs 2020-05-11 11:40:34 -05:00
Matt Harper 5beee08166 Write only the absolutely necessary LEDs 2020-05-11 11:40:34 -05:00
Matt Harper 1334129078 Additional protocol options 2020-05-11 11:40:34 -05:00
Matt Harper 216b492f24 Const cleanup, fix behavioral bugs by writing all LEDs every time 2020-05-11 11:40:34 -05:00
Matt Harper 1b65bb9cc3 Rudimentary RGB Fusion 2 SMBus support 2020-05-11 11:40:34 -05:00
Adam Honse 0f4ddd164f RGB Fusion 2 SMBus initial work 2020-05-11 11:40:33 -05:00
Adam Honse e6aadc414b Handle socket errors on Windows, which does not return 0 when a socket is disconnected like Linux does 2020-05-10 16:22:29 -05:00
Adam Honse 883a78ad9d Fix client on Windows 2020-05-10 16:16:59 -05:00
Adam Honse 15d23d3009 Add client status update callback to NetworkClient 2020-05-10 13:41:01 -05:00
Adam Honse e2c2b8c1df Client will now close listener thread when disconnected and attempt to reconnect. Initialization behavior (controller requests, client string update) are performed automatically upon reconnection 2020-05-10 01:19:38 -05:00
Adam Honse 5133c30242 Update BlackWidow V2 device string 2020-05-09 18:21:46 -05:00
Matt Harper 69e1e19bf9 Bugfix - properly free ServerClients 2020-05-09 17:30:54 -05:00
Adam Honse 46f08f7423 Disable SMBus tools again 2020-05-09 15:49:47 -05:00
Adam Honse 352b9928ca Add file headers to network files and some minor code cleanup 2020-05-09 15:48:16 -05:00
Adam Honse 87854d5781 Fix crash when stopping server 2020-05-09 15:48:16 -05:00
Adam Honse 1b3f8f9eb4 Clean up server page 2020-05-09 15:48:16 -05:00
Adam Honse 6438c15dd3 Fix build on Windows 2020-05-09 15:48:16 -05:00
Adam Honse dbe29991f0 Send client string after server is connected 2020-05-09 15:48:15 -05:00
Adam Honse a5e9a3de05 Add mutex on updating callbacks 2020-05-09 15:48:15 -05:00
Adam Honse edf1b251c0 Send and receive client string 2020-05-09 15:48:15 -05:00
Adam Honse 9ff4314840 Add callback to NetworkServer to handle UI updates when client information changes 2020-05-09 15:48:15 -05:00
Adam Honse 3ad0986ae7 Add IP field to client information and display client IP in the server tab's connected client list 2020-05-09 15:48:15 -05:00
Adam Honse 6bfc9dd9db Create a structure to hold client information in the network server and fix i2c hanging on destructor when bus is not available. 2020-05-09 15:48:15 -05:00
Adam Honse 9b8a0d465e Functions to set IP and port and start client 2020-05-09 15:48:15 -05:00
Adam Honse 119741b736 Fix build on Windows 2020-05-09 15:48:15 -05:00
Adam Honse 2fe958783c Use select on accept call as well so that server closes on Linux 2020-05-09 15:48:15 -05:00
Adam Honse 1c59ef6b80 Fix build on Linux 2020-05-09 15:48:15 -05:00
Adam Honse 9e44e4ba4f Add server information to user interface and provide buttons to start and stop server, change port 2020-05-09 15:48:15 -05:00
Adam Honse b8e14ea067 Server info WIP 2020-05-09 15:48:14 -05:00
Adam Honse 525071c205 Use condition variables and mutexes to eliminate sleeps from SMBus threading 2020-05-09 15:48:14 -05:00
Adam Honse bfe03b0564 Handle all SMBus controller activity on a separate thread to avoid corrupting the SMBus data 2020-05-09 15:48:14 -05:00
Adam Honse 04b87ce2eb Use std::thread for NetworkClient threads 2020-05-09 15:48:14 -05:00
Adam Honse 81acc47cd6 Use std::thread for NetworkServer threads 2020-05-09 15:48:14 -05:00
Adam Honse 6e426b1403 Fix thread conflicts for HyperX keyboard in Direct mode 2020-05-09 15:48:14 -05:00
Adam Honse 6509e53a9b Disable I2C devices until threading issues are resolved, don't start a NetworkClient in main 2020-05-09 15:48:14 -05:00
Adam Honse 5b42b3d11d Use TCP_NODELAY on client socket 2020-05-09 15:48:14 -05:00
Adam Honse 8bd515296d Add key matrix map for Corsair K70 keyboards 2020-05-09 15:48:14 -05:00
Adam Honse 2bbf66c0ee Fix memory leaks in client 2020-05-09 15:48:14 -05:00
Adam Honse d716973642 Get network client working on Windows 2020-05-09 15:48:14 -05:00
Adam Honse 25f7a87a79 Get network server working in Windows 2020-05-09 15:48:14 -05:00
Adam Honse 0619a16be2 Add matrix map for HyperX Alloy Elite 2020-05-09 15:48:13 -05:00
Adam Honse 4a3802f344 Add matrix map for Poseidon Z RGB keyboard 2020-05-09 15:48:13 -05:00
Adam Honse 105f5642ef Add matrix map support 2020-05-09 15:48:13 -05:00
Adam Honse 54ab57cea6 Add zone types to HyperX and Poseidon Z RGB keyboard controllers 2020-05-09 15:48:13 -05:00
Adam Honse e3e6c0347e Add a thread to RGBController to asynchronously perform device updates. Only implemented for UpdateLEDs for now 2020-05-09 15:48:13 -05:00
Adam Honse 4d6706ce61 Close server listener thread when read returns zero (client connection lost) 2020-05-09 15:48:13 -05:00
Adam Honse 39c5aff864 Send color data over the network when calling color update functions 2020-05-09 15:48:13 -05:00
Adam Honse 450f438538 Send mode data block when updating mode 2020-05-09 15:48:13 -05:00
Adam Honse 0270c745ce Implement RGBController_Network packet sending for current set of RGBController commands 2020-05-09 15:48:13 -05:00
Adam Honse e2dfcd5b0f Client now requests list of all controllers from server and adds them to the master list 2020-05-09 15:48:13 -05:00
Adam Honse 68fa3c2def Create functions for sending replies 2020-05-09 15:48:13 -05:00
Adam Honse cde7469191 Create functions for sending requests 2020-05-09 15:48:13 -05:00
Adam Honse 7c1a1396ca Client requests controller count and first controller data block from server, prints response 2020-05-09 15:48:13 -05:00
Adam Honse 7f052f21aa Run client from main 2020-05-09 15:48:12 -05:00
Adam Honse dff667751b Start work on network client 2020-05-09 15:48:12 -05:00
Adam Honse 2625807c1a Add RGBController function call packet functionality 2020-05-09 15:48:12 -05:00
Adam Honse 7af283fdbf Implement requests for number of controllers and controller information block 2020-05-09 15:48:12 -05:00
Adam Honse c7ffe3b926 Network server can now receive packets properly 2020-05-09 15:48:12 -05:00
Adam Honse 46339c5f86 More work on network support, need to implement spawning of one read thread for each client socket 2020-05-09 15:48:12 -05:00
Adam Honse cf69598fd1 Start working on server request processing code 2020-05-09 15:48:12 -05:00
Adam Honse 594f66ab23 Initial network files 2020-05-09 15:48:12 -05:00
Adam Honse 01e0808e41 Add 1ms sleep after every Corsair peripheral USB message because K70 RGB locks up on Linux otherwise 2020-05-04 17:02:39 -05:00
Adam Honse 2dc443ff1e Add 0x18A3 to Aura addressable PID list (Z390-F) 2020-05-01 15:28:49 -05:00
Adam Honse 0ab0586dfa Update OpenRazer-Win32 DLLs to openrazer commit 134d7bf 2020-05-01 13:41:42 -05:00
Adam Honse 88fa6bf25a Hide SMBus tools panel, will add a settings option to show it 2020-04-29 16:36:37 -05:00
Adam Honse 9346490e4a Fix memory leak in OpenRazer controller 2020-04-28 20:08:43 -05:00
Adam Honse 7d4e5d6122 Add Redragon M715 support 2020-04-28 17:07:59 -05:00
Adam Honse d4a03b23c8 Add Redragon K550 support 2020-04-28 16:55:39 -05:00
Adam Honse 47b5c94310 Add WinUSB/Zadig info to README 2020-04-23 19:32:57 -05:00
Adam Honse 079a984f8d Add some information to the README and update the formatting a bit 2020-04-23 19:24:27 -05:00
Adam Honse b6e35c4155 Add Mamba 2012 and fix Mamba (wireless Chroma version) device string 2020-04-21 20:02:32 -05:00
Adam Honse c9d1ac5d8f Update OpenRazerWindows to support DeathAdder Chroma command format 2020-04-21 19:40:09 -05:00
Adam Honse 427c635ed8 Update to OpenRazer-Win32 API, device attribute pointers are now filled in by the driver during device probe, so we don't need to fill them in manually by device type anymore 2020-04-21 16:22:39 -05:00
Chris 0703bcd0a8 Several improvements to the controller
Corrected syntax errors
Corrected logical errors
Readability improvements
Build no longer segfaults changing zone
2020-04-21 15:51:54 -05:00
Adam Honse 984c6bb7f5 Fix naming convention 2020-04-21 15:27:46 -05:00
Adam Honse d27095dacd Fix duplicate strings in OpenRazer device list 2020-04-21 15:26:22 -05:00
Chris 9228b5c4cd Added missing RGB devices found in upstream Openrazer
Sections sorted alphabetically

Added Razer Keyboards
    anansi_device
    cynosa_chroma_device
    blackwidow_2019_device
    blackwidow_chroma_v2_device
    blackwidow_chroma_overwatch_device
    blackwidow_elite_device
    blackwidow_x_chroma_device
    huntsman_device
    huntsman_te_device

Added Razer Mice
    abyssus_elite_dva_edition_device
    abyssus_essential_device
    basilisk_device
    lancehead_te_device
    mamba_chroma_wired_device
    mamba_chroma_wireless_device
    mamba_wireless_wired_device
    naga_hex_v2_device
    naga_trintiy_device
    viper_ultimate_device

Added Mousepad
    firefly_device_hyperflux
    goliathus_device
2020-04-21 00:38:55 -05:00
Chris 7fe87703e5 Initial addition for the CoolerMaster MP750 Controller 2020-04-19 03:12:31 -05:00
Adam Honse c65edbeebc Fix UpdateLEDs for non-matrix OpenRazer devices 2020-04-19 01:22:40 -05:00
Adam Honse b6bf34279c Add disclaimer and warning about SMBus access functionality 2020-04-19 01:08:00 -05:00
Adam Honse 68e444aa3b Fix Naga Epic Chroma definition in device list 2020-04-19 00:58:02 -05:00
Adam Honse 3d12930067 Add Razer Naga Epic Chroma support (requires support in OpenRazer) 2020-04-19 00:56:42 -05:00
Adam Honse 3de7f32a3a Get Naga Chroma working 2020-04-19 00:13:06 -05:00
Adam Honse 216fe063e0 Fix apply all for Razer devices that don't have custom mode 2020-04-18 23:34:32 -05:00
Adam Honse ef6195271e Add support for OpenRazer mice with _led_effect and _led_rgb control scheme (DeathAdder Chroma) 2020-04-18 23:30:10 -05:00
Adam Honse 86eb273e46 Pull in OpenRazer improvements to OpenRazerWindows and fix some minor issues with OpenRazer controller code for both platforms 2020-04-18 20:47:34 -05:00
chris 22813c06dc Added Blackwidow X TE and Deathadder Elite + associated modes 2020-04-18 20:28:19 -05:00
Adam Honse 9840f0a8b6 Initial driver for ROG Aura Core laptop keyboards. Untested. 2020-04-18 00:24:35 -05:00
Adam Honse 69539432b5 Treat direct control as a mode in Aura Addressable controller 2020-04-16 13:53:25 -05:00
Adam Honse 4433760cab Set mode to all Aura addressable channels 2020-04-16 09:36:26 -05:00
Adam Honse ba2ce98a3e Add support for multiple addressable channels in Aura addressable controller. Direct mode only for now 2020-04-15 20:39:58 -05:00
Adam Honse 1e171fcfb0 Store and print configuration table for Aura Addressable controller 2020-04-14 19:09:27 -05:00
Adam Honse dc88b1a752 Add Aura Terminal PID to addressable controller and implement firmware string retrieval 2020-04-14 18:46:54 -05:00
Adam Honse 3f2a118a39 Add referenced projects to README 2020-04-13 12:03:43 -05:00
Adam Honse b8c80e6ba5 Fix infinite for loop in Aura Addressable controller 2020-04-11 12:43:31 -05:00
Adam Honse 405bbc5464 Remove unused variable 2020-04-11 02:34:16 -05:00
Adam Honse 5371fe1cc2 Fix infinite loop in Aura Addressable controller direct mode 2020-04-11 02:29:51 -05:00
Juri Berlanda cdce79bd07 [README] Fix typo on apt install. 2020-04-10 15:15:37 -05:00
Adam Honse 87395d0b0d Update name string for Razer Blade 15 (Mid 2019) Mercury 2020-04-10 03:27:17 -05:00
Adam Honse 7050a0dac1 Use mode specific colors for RGB Fusion 2 USB effect modes 2020-04-10 02:04:16 -05:00
Adam Honse bc01b53de5 Add Razer Tiamat 7.1 V2 to OpenRazer device list 2020-04-09 13:33:50 -05:00
Adam Honse 680c143ad7 Add the rest of the OpenRazer supported laptops to the device list 2020-04-09 12:45:13 -05:00
Adam Honse 38c3f2d94c Add Blade 15 mid-2019 (Mercury) to OpenRazer supported device list 2020-04-09 10:22:33 -05:00
Adam Honse 5344806a85 Remove submodule update steps from instructions 2020-04-09 09:34:04 -05:00
Adam Honse 21f29a1a56 Remove libe131 submodule and add necessary files to main repo. Fixes Gitlab automatic packaging issue 2020-04-09 09:29:54 -05:00
Adam Honse c5149b2521 Add links to third party projects used in OpenRGB to the README 2020-04-09 08:55:47 -05:00
Nagy Tam?s (T-bond) f9a25c9612 + Added to get current mode of zone
+ Option to get/set cycle num
 + Option to read device settings
 + Option to set/get sync settings
 * Fix GUI max led count

Signed-off-by: Nagy Tam?s (T-bond) <[email protected]>
2020-04-09 00:19:35 -05:00
Nagy Tam?s (T-bond) 4b4d3bf790 + Added read all settings data
+ Added option to configure Corsair zone settings
+ Added option to set volumes (?)

Signed-off-by: Nagy Tam?s (T-bond) <[email protected]>
2020-04-09 00:12:22 -05:00
Nagy Tam?s (T-bond) 3a11ed4e43 + Read controller ID, ROM versions, and Manufacturer + Product name. 2020-04-09 00:02:57 -05:00
Nagy Tam?s (T-bond) 238dc0f0ae + Save settings on system power off. 2020-04-08 23:25:59 -05:00
Nagy Tam?s (T-bond) 0568fc5ed2 + Added all effect to the GUI list. 2020-04-08 23:13:34 -05:00
Nagy Tam?s (T-bond) 37241ee6f2 + Started implementation of MSI Mystic Light USB controllers. 2020-04-08 23:09:21 -05:00
Martin Hartl 1f91dd227f NZXT Kraken: Add a default logo mode 2020-04-08 16:42:42 -05:00
Martin Hartl facfa05062 Add NZXT Kraken driver
Driver should work for NZXT Kraken X42/X52/X62/X72. Most of the color
modes and settings are already working. However, there are currently
some limitations in settings different ring and logo modes.
2020-04-08 16:35:41 -05:00
Adam Honse 6fd6c7f176 Initial support for addressable headers on Asus Aura motherboards. 2020-04-08 14:21:07 -05:00
Adam Honse d947cc2499 Add description to devices that were missing a description 2020-04-06 20:44:52 -05:00
Adam Honse 5db52e5dc2 Add resizing to RGB Fusion 2 USB controller addressable headers 2020-04-06 16:31:09 -05:00
Adam Honse 1249814e93 Fix segfault in Linux USB serial port auto-detection 2020-04-06 14:42:15 -05:00
Adam Honse dda8e9470f Update README 2020-04-06 11:42:43 -05:00
Adam Honse 72482d4ff9 Remove 0x66 from the Aura motherboard list as it is also in the Aura RAM list and gets double-detected if it exists 2020-04-04 20:48:16 -05:00
Adam Honse a50049e63b Add NCT6798D to Super-IO list in Windows 2020-04-04 18:41:38 -05:00
Nagy Tam?s (T-bond) 2970e56324 * Fixed Exit action on system tray icon 2020-04-04 17:08:48 -05:00
Adam Honse aa1ad8db85 Add zone resizing to CLI 2020-04-04 02:53:55 -05:00
Adam Honse 7f865cfee9 Allow up to 200 LEDs per channel on Corsair Lighting Node devices 2020-04-02 16:24:21 -05:00
Adam Honse c7b9fe90a6 Detect serial devices behind USB hubs 2020-04-01 16:57:56 -05:00
Adam Honse 0c7009b973 Update color wheel when choosing an LED from the LED selection box 2020-03-31 16:34:55 -05:00
Adam Honse d791361f22 Fix filename case to get ColorWheel building in Linux 2020-03-30 19:23:50 -05:00
Adam Honse 5719956441 Add color wheel color picker to UI 2020-03-30 17:54:25 -05:00
Adam Honse eba9fc0213 Add check to ensure we have a valid SMBus index before detecting/dumping, prevents segfaults when clicking detect on an invalid bus 2020-03-29 17:31:29 -05:00
Adam Honse 556fb634bb Clean up Redragon K556 code and add speed and color control 2020-03-29 14:54:39 -05:00
Adam Honse e39617a665 Compute checksum for Redragon K556 packets 2020-03-29 02:14:59 -05:00
Adam Honse 9f6c3819bd Increment version number post-release 2020-03-28 15:29:49 -05:00
Adam Honse 91c8ec0cb0 OpenRGB version 0.1 2020-03-28 15:06:37 -05:00
cip91sk 314283a37c add missing aura ram address 2020-03-28 14:46:02 -05:00
Adam Honse c3e5d91b6b Allow manual resizing of Hue+ channels 2020-03-28 14:37:27 -05:00
Adam Honse c769c20af1 Move static mode to top of Redragon M711 mode list 2020-03-28 14:35:14 -05:00
Adam Honse 2a43cefbe6 Add Redragon K556 modes, though grouped modes and colors aren't implemented yet 2020-03-27 23:24:16 -05:00
Adam Honse 68960b7b14 Add RGBController for Redragon K556 keyboard, only supports custom mode for now 2020-03-27 23:24:16 -05:00
Adam Honse ad85efcb14 Update Redragon code, split mouse and keyboard into their own controllers, and get mouse control working 2020-03-27 23:24:16 -05:00
Adam Honse 7c221416cc Redragon M709 and K556 development 2020-03-27 23:24:16 -05:00
Adam Honse 9ba1b2fc57 Bring in nct6775 SMBus driver improvements from updated patch to Windows 2020-03-24 18:07:23 -05:00
Adam Honse caf1e5c7f0 Update OpenRazer-win32 DLLs to openrazer commit bd864c8 2020-03-24 17:58:03 -05:00
Adam Honse 2b660a47c7 Fix wrong index being used in profile lookup that would cause segfaults if there are more controllers detected than in profile 2020-03-23 23:40:18 -05:00
Adam Honse 0c45e26c98 Add timeouts to i2c-nct6775 driver and fix kernel segfault caused by byte access with no data 2020-03-23 23:22:25 -05:00
Adam Honse fdbaf9bf63 Fix segfault in CLI 2020-03-22 22:18:30 -05:00
Adam Honse 08a1197b7e Fix arguments not parsing in CLI, add mode specific color support to CLI 2020-03-22 16:22:59 -05:00
Adam Honse 87a9ea5b14 Add some comments to the CLI code and clean up some warnings 2020-03-22 03:49:08 -05:00
Adam Honse 2b8d25559a Move help and version functions to the same place as the other arguments 2020-03-22 01:48:57 -05:00
Adam Honse 3db9189cbb Fix current device ID in CLI 2020-03-22 01:01:01 -05:00
Adam Honse a0c379e8c7 Add profile saving to command line 2020-03-22 00:26:06 -05:00
Adam Honse 0ae4964545 Clean up some of the CLI code and add option to load a profile from the command line 2020-03-22 00:04:27 -05:00
Adam Honse 69651b3f91 Load sizes for variable-size controllers in CLI mode 2020-03-20 13:50:54 -05:00
Adam Honse ce9508aa88 Allow 0x03 or 0x04 for detecting Corsair Pro DRAM 2020-03-20 13:05:49 -05:00
Adam Honse aa182936ba Clean up warnings, except in hidapi and cli files 2020-03-20 12:10:18 -05:00
Adam Honse 745bbac93b Fix i2c bus names on Linux 2020-03-20 10:20:46 -05:00
Adam Honse 5c3c15f930 Remove Synchronized Effects tab as the effects engine has been postponed until after 1.0 2020-03-20 00:39:29 -05:00
Adam Honse 4919b03bd1 Remove controller-side LED count from Corsair Lighting Node and ThermalTake Riing controllers, initialize them to zero LED count 2020-03-19 20:55:57 -05:00
Adam Honse 18c18e3999 Automatically save a sizes.ors profile when resizing a zone, then automatically load zone sizes from sizes.ors on start 2020-03-19 14:24:39 -05:00
Adam Honse 01020b50d9 Set default number of LEDs per strip in RGB Fusion 2 controller 2020-03-18 22:49:35 -05:00
Adam Honse 00f422375b Initial Corsair mouse support, tested on M65 RGB Elite. Shows as mousemat with 15 zones for now as zone mapping isn't supported yet 2020-03-13 18:55:07 -05:00
Adam Honse 25807902c9 Set each LED independently for Crucial effect modes 2020-03-13 21:41:23 +00:00
Adam Honse 0bbef425a4 Enable effects on Crucial controller, but color modes unimplemented 2020-03-13 17:20:32 +00:00
Adam Honse ec65d8a2a9 Update OpenRazer-win32 DLLs to openrazer commit 692e36b 2020-03-12 17:37:26 -05:00
Adam Honse 47df8f3414 Fix leftover un-renamed types 2020-03-12 14:53:32 -05:00
Adam Honse c560ee4b7e Rename RGBFusion2Controller to RGBFusion2USBController 2020-03-12 18:58:28 +00:00
Adam Honse 74080150e0 Rename AuraController to AuraSMBusController 2020-03-12 17:27:52 +00:00
Adam Honse ab7ddc1629 Rename HyperXController to HyperXDRAMController 2020-03-11 19:37:10 -05:00
Adam Honse 000bef969c Add more Corsair keyboards to the detection list 2020-03-11 19:19:37 -05:00
Adam Honse c8e0aec596 Use 24-bit color protocol for Corsair keyboards 2020-03-11 17:31:30 -05:00
Adam Honse ecf4427c76 Rename CorsairController to CorsairVengeanceController, CorsairProController to CorsairVengeanceProController 2020-03-11 21:15:05 +00:00
Adam Honse d299e90954 Fix 24-bit keyboard color set function 2020-03-11 12:18:24 -05:00
Adam Honse 98bb92acdb Add 24-bit color set function for keyboards 2020-03-11 15:15:43 +00:00
Adam Honse 0e77149444 Rename CorsairKeyboardController to CorsairPeripheralController 2020-03-10 21:26:36 -05:00
Adam Honse e6c21f0a72 Add firmware version to Corsair Lighting Node driver 2020-03-10 15:57:46 -05:00
Adam Honse da9f6d7c72 Add description for ASUS Aura device driver 2020-03-10 14:09:43 -05:00
Adam Honse 97975b6d36 Update description on Corsair Lighting Node driver 2020-03-10 13:59:17 -05:00
Adam Honse ad98cc173b Update description on Corsair peripheral driver 2020-03-10 11:35:16 -05:00
Adam Honse 5a33c80d65 Fix build issue in Linux in Corsair Keyboard driver 2020-03-09 20:47:07 -05:00
Adam Honse f661bf66f1 Fix button sizes a bit, it's not perfect but it's better than it was 2020-03-09 20:41:41 -05:00
Adam Honse f1e1c41d68 Add support for Corsair Polaris MM800 mousemat using CorsairKeyboardController driver 2020-03-09 20:39:55 -05:00
Adam Honse a7ed250c4e Don't initialize pointers on zones with no LEDs 2020-03-09 16:39:38 -05:00
Adam Honse 62c06202e0 Re-enable and update RGBController data block get/set functions for new API parameters. This gets profile savig and loading working again 2020-03-09 12:28:50 -05:00
Adam Honse 23ad5ca244 Fix setting individual LEDs when a specific zone is selected 2020-03-08 20:51:30 -05:00
Adam Honse 5712717ef8 Update maximum number of LEDs for Thermaltake Riing zone to 20 LEDs 2020-03-08 20:25:07 -05:00
Adam Honse da54e89839 Fix Thermaltake Riing controller 2020-03-08 17:07:57 -05:00
Adam Honse 57b8377f5a Disable built in effects before setting strip colors in RGB Fusion 2 controller 2020-03-08 17:01:09 -05:00
Adam Honse fbb718c532 Update RGB Fusion 2 controller to new RGBController API. Reworked some of the RGB Fusion 2 controller code to be more consistent with the rest of the project. 2020-03-08 12:06:21 -05:00
Adam Honse 5a469ea615 Update Corsair Keyboard controller to new RGBController API 2020-03-07 18:06:55 -06:00
Adam Honse 2099abb126 Update Patriot Viper RGB controller to new RGBController API 2020-03-07 18:01:00 -06:00
Adam Honse 4b4e939d10 Update Crucial Ballistix RGB controller to new RGBController API 2020-03-07 17:55:41 -06:00
Adam Honse e0094915fe Update ThermalTake Poseidon Z RGB controller to new RGBController API 2020-03-07 17:46:38 -06:00
Adam Honse aa6e2e611b Update HyperX Keyboard controller to new RGBController API 2020-03-07 17:37:50 -06:00
Adam Honse ce8331b467 Update Faustus controller to new RGBController API 2020-03-07 17:18:44 -06:00
Adam Honse 54ff4d57b0 Fix Hue 2 controller build on Linux 2020-03-07 17:12:31 -06:00
Adam Honse 3abb0c05ba Update Corsair Vengeance RGB Pro controller to new RGBController API 2020-03-07 17:08:04 -06:00
Adam Honse acc84f6a09 Update ASUS Aura GPU controller to new RGBController API. Also update ASUS Aura controller to read colors from hardware during initialization. 2020-03-07 16:55:02 -06:00
Adam Honse 74b0d195d9 Update Corsair Vengeance RGB controller to new RGBController API 2020-03-07 16:41:59 -06:00
Adam Honse 920e001bab Update MSI 3-Zone Keyboard controller to new RGBController API 2020-03-07 16:35:54 -06:00
Adam Honse 4c2ceed5b6 Update ASRock Polychrome controller to new RGBController API 2020-03-07 16:30:00 -06:00
Adam Honse 515c17b8dd Update MSI-RGB controller to new RGBController API 2020-03-07 16:20:35 -06:00
Adam Honse 2ffb02abde Update E1.31 controller to new RGBController API 2020-03-07 16:13:15 -06:00
Adam Honse 3237c8842a Update NZXT Hue+ and Hue 2 controllers to new RGBController API. Fix direct mode not working on Hue 2. 2020-03-07 15:56:07 -06:00
Adam Honse fde468a162 Update LED Strip controller to new RGBController API 2020-03-07 01:38:32 -06:00
Adam Honse f854441cf7 Update HyperX RGB RAM controller to new RGBController API 2020-03-07 01:28:26 -06:00
Adam Honse 408020c244 Update Gigabyte RGB Fusion 1.0 controller to new RGBController API 2020-03-07 01:10:26 -06:00
Adam Honse f806f3ad66 Update AMD Wraith Prism controller to new RGBController API 2020-03-07 01:00:58 -06:00
Adam Honse 7c1c9a7979 Update OpenRazer (Windows and Linux) controllers for new RGBController API 2020-03-07 00:38:42 -06:00
Adam Honse 283cb5a8ac Update RGB Fusion GPU controller to new RGBController API 2020-03-06 16:54:53 -06:00
Adam Honse 5f21674b8f Update Aura controller for RGBController API changes 2020-03-06 14:20:17 -06:00
Adam Honse fe6a84d6c9 Rename NodePro to LightingNode 2020-03-06 12:11:53 -06:00
Adam Honse f7cb8ca969 Delete CorsairCmdrProController files now that Corsair Pro is merged into Lighting Node driver 2020-03-05 22:26:29 -06:00
Adam Honse 64dad049f9 Set endpoint based on Corsair Lighting Node device table 2020-03-05 22:04:30 -06:00
Adam Honse 1115213d5a Consolidate Corsair Lighting Node and compatible device drivers 2020-03-05 21:12:17 -06:00
Adam Honse bc01ec0e4b Update Thermaltake Riing controller for resizable channels 2020-03-05 12:29:17 -06:00
Adam Honse 62518b5163 Update RGBController API and GUI to handle resizable zones. All controllers except for CorsairNodePro have been disabled pending rework 2020-03-04 19:29:58 -06:00
Adam Honse 736e624366 Resize button. Resizes mode specific color lists. Partial implementation of resizing zones 2020-03-04 17:53:44 -06:00
Adam Honse d7298cafd0 Fix build on Linux 2020-03-03 22:06:46 -06:00
Adam Honse 70783fb28f Add button to delete profiles and confirmation dialog 2020-03-03 21:15:33 -06:00
Adam Honse 45a5f629e5 Do a complete refresh of profile list when saving profile 2020-03-03 21:02:50 -06:00
Adam Honse ec73337929 Update OpenRazer-Win32 DLLs to fix corrupt serial and version strings, enable reading these in OpenRGB. 2020-03-03 13:22:23 -06:00
Adam Honse 148b84b7d1 Add support for ASRock Polychrome FW 3.04 (X570 Taichi) 2020-03-03 12:15:55 -06:00
Adam Honse 3cf855bd10 Search through controller list for each controller when loading profile, allows controller order to change without breaking the profile 2020-03-03 12:11:21 -06:00
Adam Honse 9deb0f8fff Move profile code from Qt UI to new ProfileManager class 2020-03-02 16:05:07 -06:00
Adam Honse 8c86686d01 Delay 200ms after changing Poseidon Z RGB mode so that direct colors are set correctly 2020-03-01 22:12:51 -06:00
Adam Honse c451487401 Change direct effects mode back to Direct mode on HyperX keyboard 2020-03-01 22:04:52 -06:00
Adam Honse 5defbc1580 Fix color mode for Thermaltake Riing direct mode 2020-03-01 22:00:24 -06:00
Adam Honse b5af840dcc Fix possible out of bounds access when initializing Aura RAM addresses 2020-03-01 21:50:08 -06:00
Adam Honse 1b170ff664 Update libusb DLLs to include a small change to fix detection of some composite HID devices such as RGB keyboards. Source for this new DLL at my libusb fork - https://github.com/CalcProgrammer1/libusb 2020-03-01 21:42:43 -06:00
Adam Honse 31a6da1b21 Build hidapi from source using libusb backend. This requires installation of WinUSB driver on Windows but fixes issues with Windows-specific HID implementation 2020-03-01 21:16:22 -06:00
Adam Honse cb6dfd83d8 Add refreshing thread for HyperX keyboard Direct mode 2020-03-01 20:57:04 -06:00
Adam Honse 50ea274205 Add timeouts to fix HyperX and Poseidon Z RGB in Linux 2020-03-01 20:56:07 -06:00
Adam Honse c7960c090a Add software version information to CLI 2020-02-29 14:01:06 -06:00
Adam Honse 85b2545409 Fill in software information and set version to 0.0 for now 2020-02-29 13:45:43 -06:00
Adam Honse e10881db3e Add empty software information tab to information UI 2020-02-28 12:31:32 -06:00
Adam Honse 977feabe6e Add profile selection to system tray icon menu 2020-02-27 13:16:10 -06:00
Adam Honse a6c9d1232a Don't apply colors unless per LED mode 2020-02-26 21:16:02 -06:00
Adam Honse 4024e6de85 Fix build on Linux 2020-02-26 19:40:25 -06:00
Adam Honse f3df584d3a Don't update devices if the profile could not be loaded 2020-02-26 19:36:00 -06:00
Adam Honse 60a0ab5c93 Populate profile list with .orp files and load profile selected in list 2020-02-26 19:36:00 -06:00
Adam Honse c908847577 Add dialog to name profile. Save all controllers to a single file. Add a file header with version number and use extension .orp for OpenRgb Profile 2020-02-26 19:36:00 -06:00
Adam Honse bd027e596e Set colors when updating mode 2020-02-26 19:36:00 -06:00
Adam Honse 51c3568f7a Profile save and load test 2020-02-26 19:36:00 -06:00
Adam Honse 4f8db7d63f Add cstring include to fix build on Linux 2020-02-25 21:07:06 -06:00
Adam Honse f844c2fb07 Add functions to get/set RGBController parameters to/from a binary data buffer. Add a dummy RGBController object to load data into. 2020-02-25 18:09:14 -06:00
Adam Honse f7041988e4 Fix off-by-one errors in Aura RAM address assignment 2020-02-25 14:20:59 -06:00
Stefan Reiter 71c650cd45 Add cli.cpp and make it build at least
Not confirmed working as of yet, but at least it builds and
--list-devices works.

Code originally taken from Sam Lewis (@sam-masaki on gitlab.com), see:
https://gitlab.com/CalcProgrammer1/OpenRGB/-/merge_requests/9
2020-02-24 00:03:07 -06:00
Stefan Reiter 3c6ac31eab Introduce device_type_to_str 2020-02-23 23:40:26 -06:00
Stefan Reiter 20a99ef7ef Append LED number to Aura devices' LEDs
Makes identifying them easier then just 'Unknown' 8 times in a row.
2020-02-23 23:40:11 -06:00
Stefan Reiter c69a98096b Remove debug print
Annoying when in CLI mode
2020-02-23 23:39:13 -06:00
Adam Honse 92afebe2c7 Fix Windows build 2020-02-23 19:09:03 -06:00
jackun 5b82eb39a8 RGB Fusion 2 (IT8297BX) support based on Gigabyte X570 Elite. 2020-02-23 18:26:48 -06:00
Adam Honse 7b120515d8 Fix include path for NvAPI 2020-02-23 15:54:23 -06:00
Adam Honse b480bbd666 Clean up NvAPI I2C code and allow multiple GPUs 2020-02-23 15:54:14 -06:00
Adam Honse 5e5ac81f53 Get detection working (tested on nouveau in Linux) 2020-02-23 15:54:06 -06:00
Adam Honse adcd59848a Add RGB Fusion GPU controller and NVAPI I1C interface 2020-02-23 15:53:54 -06:00
Adam Honse 937cbc656e Add Windows application icon 2020-02-20 00:37:31 -06:00
Jan Rettig aead384282 Aura GPU Support 2020-02-19 21:24:36 -06:00
Adam Honse b717600c37 Add name, description, and type information to MSI-RGB controller 2020-02-19 21:05:04 -06:00
Adam Honse f38be5119e MSI-RGB driver based on https://github.com/nagisa/msi-rgb 2020-02-19 20:19:12 -06:00
Adam Honse f8de686296 Add LED numbers to Linux OpenRazer controller 2020-02-19 19:42:49 -06:00
Adam Honse 0703fb8c68 Support 64-bit Windows builds 2020-02-19 10:24:56 -06:00
Adam Honse 8d0915de6e Add support for mode specific colors in HyperX keyboard breathing mode 2020-02-18 11:01:43 -06:00
Adam Honse ef33d7e2c4 Firmware 2.x seems to use ASR LED protocol, confirmed on 2.08 2020-02-16 13:43:57 -06:00
Adam Honse bba88eb1f2 Update mode color description to add mode-specific colors. 2020-02-16 12:09:11 -06:00
Adam Honse 7b35cf72f7 Add zone numbers to Chroma HDK and add LED numbers for all OpenRazer zones. 2020-02-13 12:36:57 -06:00
Adam Honse 9603489f4a Get rid of razerchromahdk driver as it was never merged and use razeraccessory instead 2020-02-13 12:36:57 -06:00
Adam Honse d4cd2a6853 Add direction control to OpenRazer Wave mode 2020-02-13 12:36:57 -06:00
Adam Honse c4d2f72df1 Clean up Linux OpenRazer code to match Windows and break out device list into a shared header file 2020-02-13 12:36:57 -06:00
Adam Honse 1a07aee7a6 Add OpenRazer-Win32 driver to support Razer devices on Windows without official software 2020-02-13 12:36:57 -06:00
Adam Honse 415d79a3ef Remove Razer Chroma SDK backend 2020-02-13 12:33:31 -06:00
Adam Honse fd59f83556 Update Crucial controller to new RGBController format 2020-02-12 14:51:07 -06:00
Adam Honse 7adcfa77fa Add function for setting Crucial Ballistix RGB colors in direct mode 2020-02-12 14:39:44 -06:00
Adam Honse b338fbca3c Initial driver for Crucial Ballistix RGB 2020-02-12 14:39:44 -06:00
Adam Honse aba3a3fd23 Add 0x39, 0x3B, 0x3C, and 0x3D to Aura DRAM search addresses list 2020-02-12 13:23:35 -06:00
Adam Honse cb680508a5 Add Polychrome firmware 2.08 to supported firmware list 2020-02-12 13:02:28 -06:00
Adam Honse 2104c975be Update RGB Fusion 2 to build with latest RGBController format 2020-02-12 12:27:15 -06:00
Adam Honse 339e1e14c2 Swap red and blue channels in RGB Fusion 2.0 packet after it was found that they were reversed 2020-02-12 12:20:50 -06:00
Adam Honse dca3b0d733 Forgot to send the apply packet 2020-02-12 12:20:30 -06:00
Adam Honse c52eb528ea RGB Fusion 2.0 driver based on summerblind's code 2020-02-12 12:20:30 -06:00
Adam Honse 3948e74711 Use /dev/port to make Super IO functions work on Linux 2020-02-11 20:25:28 -06:00
Adam Honse 4672d4a686 Move Super IO functionality to its own file to make it easier to write an MSI-RGB driver 2020-02-11 19:58:13 -06:00
Adam Honse befa9baf20 Update the ThermaltakeRiing driver to just set the active_mode variable instead of actually sending mode updates on SetCustomMode 2020-02-11 18:07:57 -06:00
Adam Honse 077cda545e Clean up the Corsair keyboard driver with some private packet sending functions 2020-02-11 18:01:31 -06:00
Adam Honse e934ce2c23 Add addresses 0x5E and 0x5F to Corsair DRAM detection 2020-02-11 16:18:39 -06:00
Adam Honse b10ff42df2 Add addresses 0x5E and 0x5F to Corsair Pro DRAM detection 2020-02-11 16:18:38 -06:00
Adam Honse afb6ff6a74 Update the rest of the RGBController drivers to just set the active_mode variable instead of actually sending mode updates on SetCustomMode 2020-02-10 00:26:18 -06:00
Adam Honse 6828335dc5 Just set active_mode rather than call SetMode for SetCustomModefunction. Implement for a few tested devices only for now. Fix some user interface issues with custom mode selection. 2020-02-10 00:17:02 -06:00
Adam Honse 966297710b Fix custom mode setting in UI 2020-02-09 19:55:26 -06:00
Adam Honse 443d558ac2 Remove compiler warning that is treated as error on some systems 2020-02-09 19:06:50 -06:00
Adam Honse 2cd0b64251 Add mode control to Thermaltake Riing controller 2020-02-09 15:26:20 -06:00
Adam Honse 7ad3c18e3f Remove unused declarations 2020-02-09 14:43:24 -06:00
Adam Honse fc11427019 Remove serial port include for USB controllers that were copied from the Hue+ driver 2020-02-09 14:37:50 -06:00
Adam Honse 2f00fb9186 Add initial driver for Thermaltake Riing controller. Fixed configuration has 9 LEDs for channels 1, 2, and 3 but will make this configurable in the future. Only direct mode supported so far 2020-02-09 14:34:26 -06:00
Adam Honse ea1f21106c Fix Linux build of CorsairKeyboardController (missing include for memset) 2020-02-06 16:37:21 -06:00
Adam Honse 47ca068628 Number the LEDs in E131 and LEDStrip controllers 2020-02-06 12:26:14 -06:00
Adam Honse f07cc134bb Add zones and LEDs to Corsair keyboard controller, but keys don't line up with zones yet 2020-02-05 21:05:55 -06:00
Adam Honse 1d98ce063c Add zones and LEDs to Poseidon Z RGB controller 2020-02-05 17:34:08 -06:00
Adam Honse 9ddb9f04ce Add zones and LEDs to HyperX Keyboard controller 2020-02-05 13:09:39 -06:00
Adam Honse 8aee3c427b Fix segfault 2020-02-04 20:22:01 -06:00
Adam Honse 6a6ad0dda6 Keyboard fixes for Linux 2020-02-04 20:20:45 -06:00
Adam Honse 12116c70ee Big Keyboard Update! HyperX Alloy Elite support, Poseidon Z RGB modes, and Corsair K70 RGB 2020-02-04 20:17:09 -06:00
Adam Honse 7d6699cf9c Use ASR LED mode for Polychrome 2.10 firmware 2020-02-02 00:34:11 -06:00
Adam Honse 48b9be3f76 Add Polychrome firmware 2.10 to list 2020-02-01 20:38:52 -06:00
Adam Honse 760c57c29c Only show LEDs for selected Zone, add an All Zones option to Zone box 2020-02-01 12:54:51 -06:00
Adam Honse c6cc88ba7b The color boxes got moved around during the UI rework. Move them back to their proper rainbow order 2020-01-31 18:32:22 -06:00
Adam Honse 779471e3e4 Detect NZXT Smart Device V2 and use the Hue 2 driver for it 2020-01-31 11:08:33 -06:00
Adam Honse adb9a6e59f Add support for Aer 2 140mm fan on Hue 2 2020-01-30 10:42:43 -06:00
Adam Honse d48bcec5ba Block write Polychrome mode value instead of byte write 2020-01-29 13:02:00 -06:00
Adam Honse 80d2282313 Add modes and additional set functions to Polychrome controller 2020-01-29 12:32:32 -06:00
k1-801 a4474602d8 Add basic support for Asus TUF laptop keyboards through Faustus 2020-01-28 09:10:34 -06:00
Marco Zanin (B--B) d28be0640e Qt: fix layout issues on KDE
Use GridLayout and allow app resize when user resize/expand the window
Also fixes some buttons size

TEST: compiled on KDE 5.17.90, after this commit all pages
      resize correctly when window is resized

Signed-off-by: Marco Zanin (B--B) <[email protected]>
2020-01-27 19:41:31 -06:00
Adam Honse 5b17833c6e Remove some detection checks for Corsair Vengeance RGB Pro detection as it was no longer detecting my modules with them 2020-01-25 17:37:32 -06:00
Adam Honse e8e9a1e7e5 Set custom mode when applying color to all devices 2020-01-25 17:37:32 -06:00
Adam Honse d7740c2d28 Move Get/Set mode functions to generic RGBController.cpp functions and add device-specific UpdateMode function to use active_mode value 2020-01-25 17:37:32 -06:00
Adam Honse f110589f91 Fix some small issues with AMD Wraith Prism driver 2020-01-25 17:37:32 -06:00
Adam Honse b3c1cdf63d Fix issues with inverted speed and random flag 2020-01-25 17:37:32 -06:00
Adam Honse 6b789be1e1 Add speed control to HyperX driver 2020-01-25 17:37:32 -06:00
Adam Honse 12f307228b Clean up speed values for Patriot Viper RGB 2020-01-25 17:37:32 -06:00
Adam Honse 848ea8b064 Shifted the wrong way... 2020-01-25 17:37:32 -06:00
Adam Honse 438c3840a7 Add speed control to RGB Fusion 1.0 driver 2020-01-25 17:37:32 -06:00
Adam Honse fef6f4cba3 Add delay to improve Corsair Pro detection, default modes to down instead of left, clean up Wraith Prism initialization 2020-01-25 17:37:32 -06:00
Adam Honse d38543a820 Finish AMD Wraith Prism mode updates including working speed table, working random color flag, and appropriate fan/logo modes for ring-specific effects 2020-01-25 17:37:32 -06:00
Adam Honse 2a76201ca4 Implement a speed table for AMD Wraith Prism to use the values taken from the official software. Interpolation was causing strange issues. 2020-01-25 17:37:32 -06:00
Adam Honse 2e84e9808c Start adding modes to AMD Wraith Prism driver. Speed and random bit implemented, but it seems to have issues. Speeds way too fast 2020-01-25 17:37:32 -06:00
Adam Honse ee492632ac Prepare AMD Wraith Prism driver for mode control 2020-01-25 17:37:32 -06:00
Adam Honse fd16bc3053 Add direction support to Corsair Vengeance RGB Pro 2020-01-25 17:37:32 -06:00
Adam Honse 64f11b42f4 Add direction support for NZXT Hue 2 2020-01-25 17:37:32 -06:00
Adam Honse 7ba610df77 Add direction support to Corsair Commander/Lighting Node Pro 2020-01-25 17:37:32 -06:00
Adam Honse a76bd7b974 Add direction support for NZXT Hue+ 2020-01-25 17:37:32 -06:00
Adam Honse 7999620db2 Fix Corsair Commander Pro/Lighting Node Pro on Linux 2020-01-25 17:37:32 -06:00
Adam Honse 585eb8a5a3 Add direction support 2020-01-25 17:37:32 -06:00
Adam Honse f1523adcdf Add the rest of the Corsair Commander/Lighting Node Pro modes 2020-01-25 17:37:32 -06:00
Adam Honse 1113c7874f Add label to Speed slider 2020-01-25 17:37:32 -06:00
Adam Honse ab03311717 Copy Corsair Commander Pro updates to Lighting Node Pro driver. Need to consolidate these eventually 2020-01-25 17:37:32 -06:00
Adam Honse d13971b7ce Add inverted speed flag to device UI to handle devices where slowest speed is a larger value than fastest speed 2020-01-25 17:37:32 -06:00
Adam Honse 5bc94fd677 Speed values are reversed on Corsair Commander Pro. Removed all references to SendKeepalive function. 2020-01-25 17:37:32 -06:00
Adam Honse 90dfa5678b Clean up Corsair Commander Pro code and get effects mode working 2020-01-25 17:37:32 -06:00
Adam Honse 48ba8435b1 Initial Corsair Commander Pro support, it's the same protocol as the Lighting Node Pro but on a different endpoint 2020-01-25 17:37:32 -06:00
Adam Honse cf2c2d6b93 Add speed control to Hue 2 2020-01-25 17:37:32 -06:00
Adam Honse 4b8668e0ef Add speed control for Hue+ and add support for Wings mode 2020-01-25 17:37:32 -06:00
Adam Honse 0bc5982970 Add random color modes for HyperX Predator RGB 2020-01-25 17:37:32 -06:00
Adam Honse 2ae74c1e7f Add slider for speed control, add min/max speed parameters to mode information, update Corsair Pro and Patriot Viper drivers to include speed control 2020-01-25 17:37:32 -06:00
Adam Honse abd4c87b1e Fix Corsair Pro mode initialization 2020-01-25 17:37:32 -06:00
Adam Honse fb3103e458 Add mode parameters to Corsair Vengeance RGB Pro controller 2020-01-25 17:37:32 -06:00
Adam Honse c70943da18 Add Random Color checkbox and combine Aura fixed-color and cycling ("random") modes to use this new checkbox 2020-01-25 17:37:32 -06:00
Adam Honse 2efd0dc81d Add additional mode parameters to RGBController API and update most of the RGBController drivers' mode specifications to match 2020-01-25 17:37:32 -06:00
Adam Honse 8b8012a431 Update README.md 2020-01-15 22:43:22 +00:00
2181 changed files with 427573 additions and 15635 deletions

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
# We recommend you to keep these unchanged
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
indent_size = 4
+12
View File
@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: CalcProgrammer1
patreon: CalcProgrammer1
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+21
View File
@@ -0,0 +1,21 @@
name: Issue Opened
on:
issues:
types: [opened,reopened]
jobs:
issue_greeting:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Greeting
run: gh issue comment "$NUMBER" --body "$BODY"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.issue.number }}
BODY: >
This Github repo is a mirror of the main repository on Gitlab.
For any new issue please refer to https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues
+21
View File
@@ -0,0 +1,21 @@
name: PR Opened
on:
pull_request:
types: [opened,reopened]
jobs:
pr_greeting:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Greeting
run: gh pr comment "$NUMBER" --body "$BODY"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.pull_request.number }}
BODY: >
This Github repo is a mirror of the main repository on Gitlab.
Please fork https://gitlab.com/CalcProgrammer1/OpenRGB/ and raise the appropriate merge request on Gitlab.
+121
View File
@@ -0,0 +1,121 @@
# This file is used to ignore files that should not be pushed to the repo.
# ----------------------------------------------------------------------------
# OpenRGB Specific
OpenRGB
openrgb
OpenRGB-x86_64.AppImage
60-openrgb.rules
debian/changelog
fedora/OpenRGB.spec
# Directories
.build/
.cache/
.moc/
.obj/
.pch/
.rcc/
.uic/
.clangd/
*_debug/
*_release/
debug/
release/
build/
Build/
.qmake.cache
.qmake.stash
.vscode
.vs
.idea
# Generic Files
.DS_Store
Thumbs.db
# Binaries
*.exe
!dependencies/**/*.exe
*.bat
!dependencies/**/*.bat
# C++ objects and libs
*.a
*.dll
*.dylib
*.ii
*.la
*.lai
*.lo
*.o
*.s
*.slo
*.so
*.so.*
!dependencies/**/*.dll
# Qt-es
object_script.*.Release
object_script.*.Debug
*_plugin_import.cpp
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.qmlc
*.jsc
Makefile*
*build-*
*.qm
*.prl
# Qt unit tests
target_wrapper.*
# QtCreator
*.autosave
# QtCreator Qml
*.qmlproject.user
*.qmlproject.user.*
# QtCreator CMake
CMakeLists.txt.user*
# QtCreator 4.8< compilation database
compile_commands.json
# QtCreator local machine specific files for imported projects
*creator.user*
*.qrc
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.ncb
*.opensdf
*.pdb
*.sdf
*.sln
*.suo
*.vcproj
*.vcxproj
*vcproj.*.*.user
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Clang tooling files
compile_commands.json
# Generated i18n files
*.qm
+593
View File
@@ -0,0 +1,593 @@
# swy: some useful references; the MSVC part of the CI script is based on the one from bind9, by Michał Kępień:
# https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/master/cookbooks/preinstalled-software/README.md
# https://gitlab.isc.org/isc-projects/bind9/commit/facc6a051fcac70fbbc61cb92a37be8c3e4db5ec#587d266bb27a4dc3022bbed44dfa19849df3044c_718_731
# https://www.kittell.net/code/powershell-unix-sed-equivalent-change-text-file/
# https://powershell.org/forums/topic/how-to-use-ansi-vt100-formatting-in-powershell-ooh-pretty-colors/
#-----------------------------------------------------------------------#
# OpenRGB GitLab CI Configuration #
#-----------------------------------------------------------------------#
.fork_local_runner_rules:
rules:
- if: $CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB" || $CI_PIPELINE_SOURCE == "push"
when: on_success
.fork_gitlab_runner_rules:
rules:
- if: $CI_PROJECT_PATH != "CalcProgrammer1/OpenRGB" && $CI_PIPELINE_SOURCE == "push"
when: manual
allow_failure: true
.upstream_rules:
rules:
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
when: on_success
- !reference [.fork_gitlab_runner_rules, rules]
.shared_windows_runners:
tags:
- shared-windows
- windows
- windows-1809
stages:
- build
- test
- deploy
variables:
GIT_DEPTH: 0
before_script:
- echo "started by ${GITLAB_USER_NAME}"
#-----------------------------------------------------------------------#
# Supported Devices Build Target #
#-----------------------------------------------------------------------#
"Supported Devices":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-amd64
tags:
- linux
- amd64
stage: build
script:
- qmake
- make -j$(nproc)
- ./scripts/build-supported-devices-md.sh $CI_PROJECT_DIR $CI_COMMIT_SHORT_SHA
artifacts:
name: "${CI_PROJECT_NAME}_Supported_Devices_${CI_COMMIT_SHORT_SHA}"
paths:
- Supported Devices.csv
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# OpenRGB Common Appimage Build Steps #
#-----------------------------------------------------------------------#
.hidden_appimage_script: &appimage_script_steps
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-${TGT_ARCH}
tags:
- linux
- ${TGT_ARCH}
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh ${TGT_QT}
artifacts:
name: "${CI_PROJECT_NAME}_Linux_${TGT_NAME}_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-${TGT_PATH}.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) i386 Build Target #
#-----------------------------------------------------------------------#
"Linux i386 AppImage":
variables:
TGT_ARCH: "i386"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 i386 Build Target #
#-----------------------------------------------------------------------#
"Linux i386 AppImage Qt6":
variables:
TGT_ARCH: "i386"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}_${TGT_QT^}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# Linux (AppImage) amd64 Build Target #
#-----------------------------------------------------------------------#
"Linux amd64 AppImage":
variables:
TGT_ARCH: "amd64"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "x86_64"
<<: *appimage_script_steps
rules:
- !reference [.fork_local_runner_rules, rules]
"Linux amd64 AppImage (gitlab.com runner)":
extends: "Linux amd64 AppImage"
rules:
- !reference [.fork_gitlab_runner_rules, rules]
tags:
- "saas-linux-small-amd64"
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 amd64 Build Target #
#-----------------------------------------------------------------------#
"Linux amd64 AppImage Qt6":
variables:
TGT_ARCH: "amd64"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}_${TGT_QT^}"
TGT_PATH: "x86_64"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# Linux (AppImage) armhf Build Target #
#-----------------------------------------------------------------------#
"Linux armhf AppImage":
variables:
TGT_ARCH: "armhf"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 armhf Build Target #
#-----------------------------------------------------------------------#
"Linux armhf AppImage Qt6":
variables:
TGT_ARCH: "armhf"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}_${TGT_QT^}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# Linux (AppImage) arm64 Build Target #
#-----------------------------------------------------------------------#
"Linux arm64 AppImage":
variables:
TGT_ARCH: "arm64"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 arm64 Build Target #
#-----------------------------------------------------------------------#
"Linux arm64 AppImage Qt6":
variables:
TGT_ARCH: "arm64"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}_${TGT_QT^}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------------------#
# OpenRGB Common Debian Build Steps #
#-----------------------------------------------------------------------#
.hidden_deb_script: &debian_script_steps
stage: build
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:$TGT_DEB-$TGT_ARCH
tags:
- linux
- $TGT_ARCH
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
- mv -v ../openrgb*.deb ./
artifacts:
name: "${CI_PROJECT_NAME}_Linux_${TGT_ARCH}_deb_${CI_COMMIT_SHORT_SHA}"
paths:
- openrgb*.deb
exclude:
- openrgb-dbgsym*.deb
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm i386 Build Target #
#-----------------------------------------------------------------------#
"Linux i386 .deb (Debian Bookworm)":
variables:
TGT_ARCH: "i386"
TGT_DEB: "bookworm"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Trixie i386 Build Target #
#-----------------------------------------------------------------------#
"Linux i386 .deb (Debian Trixie)":
variables:
TGT_ARCH: "i386"
TGT_DEB: "trixie"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm amd64 Build Target #
#-----------------------------------------------------------------------#
"Linux amd64 .deb (Debian Bookworm)":
variables:
TGT_ARCH: "amd64"
TGT_DEB: "bookworm"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Trixie amd64 Build Target #
#-----------------------------------------------------------------------#
"Linux amd64 .deb (Debian Trixie)":
variables:
TGT_ARCH: "amd64"
TGT_DEB: "trixie"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm armhf Build Target #
#-----------------------------------------------------------------------#
"Linux armhf .deb (Debian Bookworm)":
variables:
TGT_ARCH: "armhf"
TGT_DEB: "bookworm"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Trixie armhf Build Target #
#-----------------------------------------------------------------------#
"Linux armhf .deb (Debian Trixie)":
variables:
TGT_ARCH: "armhf"
TGT_DEB: "trixie"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm arm64 Build Target #
#-----------------------------------------------------------------------#
"Linux arm64 .deb (Debian Bookworm)":
variables:
TGT_ARCH: "arm64"
TGT_DEB: "bookworm"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Trixie arm64 Build Target #
#-----------------------------------------------------------------------#
"Linux arm64 .deb (Debian Trixie)":
variables:
TGT_ARCH: "arm64"
TGT_DEB: "trixie"
<<: *debian_script_steps
#-----------------------------------------------------------------------#
# Linux (.rpm, F40) 64-bit Build Target #
#-----------------------------------------------------------------------#
"Linux 64 F40 rpm":
image: fedora:40
stage: build
script:
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel git -y
- rpmdev-setuptree
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
- cp -rp . /root/rpmbuild/SOURCES/OpenRGB
- cd /root/rpmbuild
- dnf builddep SPECS/OpenRGB.spec -y
- rpmbuild -ba SPECS/OpenRGB.spec
- cd RPMS/x86_64/
- mv openrgb*.rpm ${CI_PROJECT_DIR}/
- cd ${CI_PROJECT_DIR}
artifacts:
name: "${CI_PROJECT_NAME}_Linux_64_rpm_${CI_COMMIT_SHORT_SHA}"
paths:
- openrgb*.rpm
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Debian i386 Bookworm test #
#-----------------------------------------------------------------------#
"Debian i386 Bookworm":
image: i386/debian:bookworm
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*i386.deb
- openrgb --version
- apt remove -y openrgb
dependencies:
- "Linux i386 .deb (Debian Bookworm)"
needs:
- "Linux i386 .deb (Debian Bookworm)"
#-----------------------------------------------------------------------#
# Debian amd64 Bookworm test #
#-----------------------------------------------------------------------#
"Debian amd64 Bookworm":
image: amd64/debian:bookworm
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
- openrgb --version
- apt remove -y openrgb
dependencies:
- "Linux amd64 .deb (Debian Bookworm)"
needs:
- "Linux amd64 .deb (Debian Bookworm)"
#-----------------------------------------------------------------------#
# Ubuntu amd64 22.04 test #
#-----------------------------------------------------------------------#
"Ubuntu amd64 22.04LTS":
image: ubuntu:jammy
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
- openrgb --version
- apt remove -y openrgb
dependencies:
- "Linux amd64 .deb (Debian Bookworm)"
needs:
- "Linux amd64 .deb (Debian Bookworm)"
#-----------------------------------------------------------------------#
# Ubuntu amd64 24.04 test #
#-----------------------------------------------------------------------#
"Ubuntu amd64 24.04LTS":
image: ubuntu:noble
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
- openrgb --version
- apt remove -y openrgb
dependencies:
- "Linux amd64 .deb (Debian Bookworm)"
needs:
- "Linux amd64 .deb (Debian Bookworm)"
#-----------------------------------------------------------------------#
# Fedora 64 v40 test #
#-----------------------------------------------------------------------#
"Fedora 64 v40":
image: fedora:40
stage: test
script:
- yum -y localinstall ./openrgb*64.rpm
- openrgb --version
- yum -y remove openrgb
dependencies:
- "Linux 64 F40 rpm"
needs:
- "Linux 64 F40 rpm"
#-----------------------------------------------------------------------#
# Windows (32-bit) Build Target #
#-----------------------------------------------------------------------#
"Windows 32":
extends:
- .shared_windows_runners
stage: build
script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- scripts\build-windows.bat 5.15.0 2019 32
artifacts:
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:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Windows (32-bit) Qt6 Build Target #
#-----------------------------------------------------------------------#
"Windows 32 Qt6":
extends:
- .shared_windows_runners
stage: build
script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- scripts\build-windows.bat 6.8.3 2022 32
artifacts:
name: "${CI_PROJECT_NAME}_Windows_32_Qt6_${CI_COMMIT_SHORT_SHA}"
paths:
- 'OpenRGB Windows 32-bit'
exclude:
- 'OpenRGB Windows 32-bit\*.qm'
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Windows (64-bit) Build Target #
#-----------------------------------------------------------------------#
"Windows 64 Base":
extends:
- .shared_windows_runners
stage: build
script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- scripts\build-windows.bat 5.15.0 2019 64
artifacts:
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
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "push"
when: never
"Windows 64":
extends: "Windows 64 Base"
rules:
- !reference [.fork_local_runner_rules, rules]
"Windows 64 (gitlab.com runner)":
extends: "Windows 64 Base"
before_script:
- git clone https://gitlab.com/OpenRGBDevelopers/OpenRGB-Qt-Packages
- cd OpenRGB-Qt-Packages
- .\install-chocolatey.bat
- cd ..
rules:
- !reference [.fork_gitlab_runner_rules, rules]
tags:
- "saas-windows-medium-amd64"
#-----------------------------------------------------------------------#
# Windows (64-bit) Qt6 Build Target #
#-----------------------------------------------------------------------#
"Windows 64 Qt6 Base":
extends:
- .shared_windows_runners
stage: build
script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- scripts\build-windows.bat 6.8.3 2022 64
artifacts:
name: "${CI_PROJECT_NAME}_Windows_64_Qt6_${CI_COMMIT_SHORT_SHA}"
paths:
- 'OpenRGB Windows 64-bit'
exclude:
- 'OpenRGB Windows 64-bit\*.qm'
expire_in: 30 days
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "push"
when: never
"Windows 64 Qt6":
extends: "Windows 64 Qt6 Base"
rules:
- !reference [.fork_local_runner_rules, rules]
"Windows 64 Qt6 (gitlab.com runner)":
extends: "Windows 64 Qt6 Base"
before_script:
- git clone https://gitlab.com/OpenRGBDevelopers/OpenRGB-Qt-Packages
- cd OpenRGB-Qt-Packages
- .\install-chocolatey.bat
- cd ..
rules:
- !reference [.fork_gitlab_runner_rules, rules]
tags:
- "saas-windows-medium-amd64"
#-----------------------------------------------------------------------#
# MacOS Build Target #
#-----------------------------------------------------------------------#
"MacOS ARM64":
tags:
- macos
stage: build
script:
- eval $(/opt/homebrew/bin/brew shellenv)
- qmake OpenRGB.pro
- make -j16
- macdeployqt OpenRGB.app -codesign=OpenRGB
artifacts:
name: "${CI_PROJECT_NAME}_MacOS_ARM64_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB.app
expire_in: 30 days
rules:
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
when: on_success
- if: '$BUILD_MACOS =~ /.+/'
when: on_success
- if: $CI_PIPELINE_SOURCE == "push"
when: manual
allow_failure: true
"MacOS Intel":
tags:
- macos
stage: build
script:
- eval $(/usr/local/bin/brew shellenv)
- arch -x86_64 /usr/local/bin/qmake OpenRGB.pro
- arch -x86_64 make -j16
- arch -x86_64 macdeployqt OpenRGB.app -codesign=OpenRGB
artifacts:
name: "${CI_PROJECT_NAME}_MacOS_Intel_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB.app
expire_in: 30 days
rules:
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
when: on_success
- if: '$BUILD_MACOS =~ /.+/'
when: on_success
- if: $CI_PIPELINE_SOURCE == "push"
when: manual
allow_failure: true
#-----------------------------------------------------------------------#
# Windows (64-bit) MSI Target #
#-----------------------------------------------------------------------#
"Windows 64 MSI":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-i386
stage: deploy
tags:
- linux
- i386
script:
- ls -la
- ls -la "OpenRGB Windows 64-bit/"
- ./scripts/build-msi.sh
dependencies:
- "Windows 64"
needs:
- "Windows 64"
artifacts:
name: "${CI_PROJECT_NAME}_Windows_64_msi_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB_Windows_64.msi
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
+108
View File
@@ -0,0 +1,108 @@
# OpenRGB CODEOWNERS
# Default Code Owner
* @Calcprogrammer1
CODEOWNERS @Calcprogrammer1
#-----------------------------------------------------------------------------#
# Controllers - Directories #
#-----------------------------------------------------------------------------#
[Controllers]
/Controllers/AMDWraithPrismController/
/Controllers/ASRockPolychromeUSBController/
/Controllers/ASRockSMBusController/
/Controllers/AlienwareController/
/Controllers/AlienwareKeyboardController/
/Controllers/AnnePro2Controller/
/Controllers/AsusAuraCoreController/
/Controllers/AsusAuraGPUController/
/Controllers/AsusAuraUSBController/
/Controllers/AsusTUFLaptopController/
/Controllers/BlinkyTapeController/
/Controllers/CoolerMasterController/ @Dr_No
/Controllers/CorsairCommanderCoreController/
/Controllers/CorsairDominatorPlatinumController/
/Controllers/CorsairHydroController/
/Controllers/CorsairHydroPlatinumController/
/Controllers/CorsairLightingNodeController/
/Controllers/CorsairPeripheralController/
/Controllers/CorsairVengeanceController/
/Controllers/CorsairVengeanceProController/
/Controllers/CorsairWirelessController/
/Controllers/CreativeController/
/Controllers/CrucialController/
/Controllers/DasKeyboardController/
/Controllers/DebugController/
/Controllers/DuckyKeyboardController/
/Controllers/DygmaRaiseController/
/Controllers/E131Controller/
/Controllers/EKController/ @Dr_No
/Controllers/ENESMBusController/
/Controllers/EVGAAmpereGPUController/ @TheRogueZeta
/Controllers/EVGAGP102GPUController/
/Controllers/EVGAPascalGPUController/
/Controllers/EVGATuringGPUController/ @TheRogueZeta
/Controllers/EVGASMBusController/ @balika011
/Controllers/EVGAUSBController/ @Dr_No
/Controllers/EVisionKeyboardController/
/Controllers/EspurnaController/
/Controllers/FanBusController/
/Controllers/FaustusController/
/Controllers/GainwardGPUController/
/Controllers/GalaxGPUController/
/Controllers/GigabyteAorusCPUCoolerController/
/Controllers/GigabyteRGBFusion2DRAMController/
/Controllers/GigabyteRGBFusion2GPUController/
/Controllers/GigabyteRGBFusion2SMBusController/ @Dr_No
/Controllers/GigabyteRGBFusion2USBController/ @Dr_No
/Controllers/GigabyteRGBFusionController/
/Controllers/GigabyteRGBFusionGPUController/
/Controllers/HPOmen30LController/
/Controllers/HoltekController/
/Controllers/HyperXDRAMController/
/Controllers/HyperXKeyboardController/
/Controllers/HyperXMouseController/
/Controllers/HyperXMousematController/
/Controllers/LEDStripController/
/Controllers/LianLiController/
/Controllers/LinuxLEDController/
/Controllers/LogitechController/ @Dr_No
/Controllers/MSI3ZoneController/
/Controllers/MSIGPUController/
/Controllers/MSIMysticLightController/
/Controllers/MSIRGBController/
/Controllers/NZXTHue2Controller/
/Controllers/NZXTHuePlusController/
/Controllers/NZXTKrakenController/
/Controllers/PNYGPUController/
/Controllers/PatriotViperController/
/Controllers/PhilipsHueController/
/Controllers/PhilipsWizController/
/Controllers/QMKOpenRGBController/
/Controllers/RazerController/
/Controllers/RedragonController/
/Controllers/RoccatController/
/Controllers/SapphireGPUController/
/Controllers/SinowealthController/
/Controllers/SonyDS4Controller/
/Controllers/SteelSeriesController/
/Controllers/TecknetController/
/Controllers/ThermaltakePoseidonZRGBController/
/Controllers/ThermaltakeRiingController/
/Controllers/ThingMController/
/Controllers/WootingKeyboardController/ @Dr_No
/Controllers/YeelightController/
/Controllers/ZalmanZSyncController/
#-----------------------------------------------------------------------------#
# Controllers - File exceptions #
# #
# As sections get combined and the last rule applies any specific file #
# that is an exception to the above should be explicitly named here #
#-----------------------------------------------------------------------------#
[Controllers]
/Controllers/ASRockSMBusController/ASRockPolychromeV1SMBusController.cpp @TheRogueZeta
/Controllers/ASRockSMBusController/ASRockPolychromeV1SMBusController.h @TheRogueZeta
/Controllers/ASRockSMBusController/RGBController_ASRockPolychromeV1SMBus.cpp @TheRogueZeta
/Controllers/ASRockSMBusController/RGBController_ASRockPolychromeV1SMBus.h @TheRogueZeta
+33
View File
@@ -0,0 +1,33 @@
<!--
Found a bug? Something isn't working as expected?
To help us keep track of the requests please start the title with [Bug Report]
But before that, first you should check it out with the latest pipeline.
-->
### Description of Bug
<!--
Please describe the bug.
Explain any steps taken to reproduce the bug
and what you expect the correct behavior to be.
-->
### Attached Log
<!--
Please attach a verbose log, you can do it by running the exe from cmd with '--loglevel 6' flag.
You can locate them using the Settings tab and click the 'Open Settings Folder' button.
Important!! Please upload the logs made with the latest pipeline build of OpenRGB.
-->
### Operating System
<!--
Please write down which OS and which version did you encounter the issue with.
-->
~"OS - Linux"
~"OS - MacOS"
~"OS - Windows"
### Hardware Configuration
<!--
Please list the RGB hardware that you are using with OpenRGB.
If your bug does not relate to any one particular device or device type,
or if the bug is in a part of the code not directly interacting with hardware, this is optional.
-->
@@ -0,0 +1,11 @@
<!--
Have something you would like to see added to OpenRGB? Let us know here
To help us keep track of the requests please start the title with [Feature Request]
-->
### Feature Request
<!--
Please explain the new feature you would like to see added in detail.
Explain how you think it should work and provide any mock-ups,
code snippets, etc. that you think will help explain the feature.
-->
+86
View File
@@ -0,0 +1,86 @@
<!--
When naming the support request please title the request as
`[New Device] <Name of new device>`
Please open one issue per device you would like to add
-->
### Name of device:
<!--
Please put the name of the product, including manufacturer, beneath this line
-->
### Link to manufacturer's product page:
<!--
Please add a link to the manufacturer's product page beneath this line
-->
### Please select what type of device/interface the device uses:
<!-- Please select from one of the following
This determines how the device connects to the PC -->
~"DeviceType::IDK" <!-- I Don't know -->
~"DeviceType::USB" <!-- The device connects to an internal header or external usb port -->
~"DeviceType::GPU::AMD" <!-- The device is an AMD GPU -->
~"DeviceType::GPU::NVidia" <!-- The device is a Nvidia GPU -->
~"DeviceType::SMBus" <!-- The device is connected to the SMBus eg. RAM -->
~"DeviceType::WMI" <!-- The device is controlled through Windows Management Instrumentation -->
<!-- Please delete any lines that are not relevant -->
### ID information:
<!--
For PCI (GPU) devices we will need the Vendor ID, Device ID, Sub-Vendor ID and Sub-Device IDs
To get the Device ID formation for a GPU on Windows run the following command in Powershell:
wmic path Win32_VideoController get name,PNPDeviceID
Linux this can be found using the terminal:
lspci -d 1002: -nnvm | head -6 | tail -n 4 && lspci -d 10DE: -nnvm | head -6 | tail -n 4
-->
<!--
For USB devices we will need the USB VID and PID
Windows Powershell:
gwmi Win32_USBControllerDevice |%{[wmi]($_.Dependent)} | Sort Manufacturer,Description,DeviceID | Ft -GroupBy Manufacturer Description,Service,DeviceID
Linux Terminal:
lsusb
-->
### Please attach screenshots of the device's official control application here:
<!--
Screenshots of the official control software should show lists of supported modes, color selection, and zone/LED selection capabilities of the device's official software.
-->
### Please attach device captures here:
<!-- If you have code examples from other projects please link them here or alternatively
for information on how to capture device packets please refer to the wiki article
https://gitlab.com/Dr_No/OpenRGB/-/wikis/OpenRGB-doesn%27t-have-my-device
-->
<!-- For admin purposes: Please leave this section as is -->
/label ~"Issue Type - New Device"
/label ~"NewDevice::Step0 - Unconfirmed"
# Checklist for Step2
- [ ] Name of device
- [ ] A link to the vendors product page has been included
- [ ] The transport bus has been identified and the appropriate label added to the issue.
- [ ] The device ID's have been included for [USB](https://gitlab.com/Dr_No/OpenRGB/-/wikis/USB-Vendor-Identification-and-Product-Identification) or PCI
- [ ] Screenshots of the OEM Application are included
- [ ] There is either, appropriate code examples linked or suitable device captures attached
<!-- For admin purposes: Please leave this section as is -->
@@ -0,0 +1,25 @@
<!--
Please put "Initial commit for" name of the product, including manufacturer above this line
and a description of the additions / removals / changes done below the line.
-->
<!-- 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).
<!--
The metadata for this controller is required to produce both the udev permissions and
the supported device page for this device. A stub can be found in the RGBController_Dummy.cpp
-->
- [ ] Meta data for the device is included in `RGBController_*` file
- [ ] This device is detected and is working on Windows 10 and / or 11
- [ ] This device is detected and is working on Linux (Please specify distribution and releases tested)
- [ ] Logging for Info, Warnings and Errors has been added for troubleshooting purposes
<!-- For admin purposes: Please leave this section as is -->
-3
View File
@@ -1,3 +0,0 @@
[submodule "dependencies/libe131"]
path = dependencies/libe131
url = https://github.com/CalcProgrammer1/libe131
+10
View File
@@ -0,0 +1,10 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"EditorConfig.EditorConfig"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}
+177
View File
@@ -0,0 +1,177 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart-FreeBSD.h"
#include "LogManager.h"
#include "filesystem.h"
AutoStart::AutoStart(std::string name)
{
InitAutoStart(name);
}
bool AutoStart::DisableAutoStart()
{
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
if(!success)
{
LOG_ERROR("[AutoStart] An error occurred removing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
std::ofstream autostart_file_stream(autostart_file, std::ios::out | std::ios::trunc);
/*-------------------------------------------------*\
| Error out if the file could not be opened |
\*-------------------------------------------------*/
if(!autostart_file_stream)
{
LOG_ERROR("[AutoStart] Could not open %s for writing.", autostart_file.c_str());
success = false;
}
/*-------------------------------------------------*\
| Otherwise, write the file |
\*-------------------------------------------------*/
else
{
autostart_file_stream.close();
success = !autostart_file_stream.fail();
if (!success)
{
LOG_ERROR("[AutoStart] An error occurred writing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::IsAutoStartEnabled()
{
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
}
else
{
return(false);
}
}
std::string AutoStart::GetExePath()
{
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[ PATH_MAX ];
ssize_t count = readlink("/proc/self/exe", exepath, PATH_MAX);
return(std::string(exepath, (count > 0) ? count : 0));
}
void AutoStart::InitAutoStart(std::string name)
{
std::string autostart_dir;
autostart_name = name;
/*-----------------------------------------------------*\
| Get home and config paths |
\*-----------------------------------------------------*/
const char *xdg_config_home = getenv("XDG_CONFIG_HOME");
const char *home = getenv("HOME");
/*-----------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-----------------------------------------------------*/
if(xdg_config_home != NULL)
{
autostart_dir = xdg_config_home;
autostart_dir = autostart_dir + "/autostart/";
}
else if(home != NULL)
{
autostart_dir = home;
autostart_dir = autostart_dir + "/.config/autostart/";
}
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_dir != "")
{
std::error_code ec;
bool success = true;
if(!filesystem::exists(autostart_dir))
{
success = filesystem::create_directories(autostart_dir, ec);
}
if(success)
{
autostart_file = autostart_dir + autostart_name + ".desktop";
}
}
}
+28
View File
@@ -0,0 +1,28 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart.h"
class AutoStart: public AutoStartInterface
{
public:
AutoStart(std::string name);
bool DisableAutoStart();
bool EnableAutoStart(AutoStartInfo autostart_info);
bool IsAutoStartEnabled();
std::string GetExePath();
private:
void InitAutoStart(std::string name);
std::string GenerateLaunchAgentFile(AutoStartInfo autostart_info);
};
+216
View File
@@ -0,0 +1,216 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart-Linux.h"
#include "LogManager.h"
#include "filesystem.h"
AutoStart::AutoStart(std::string name)
{
InitAutoStart(name);
}
bool AutoStart::DisableAutoStart()
{
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
if(!success)
{
LOG_ERROR("[AutoStart] An error occurred removing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
std::string desktop_file = GenerateDesktopFile(autostart_info);
std::ofstream autostart_file_stream(autostart_file, std::ios::out | std::ios::trunc);
/*-------------------------------------------------*\
| Error out if the file could not be opened |
\*-------------------------------------------------*/
if(!autostart_file_stream)
{
LOG_ERROR("[AutoStart] Could not open %s for writing.", autostart_file.c_str());
success = false;
}
/*-------------------------------------------------*\
| Otherwise, write the file |
\*-------------------------------------------------*/
else
{
autostart_file_stream << desktop_file;
autostart_file_stream.close();
success = !autostart_file_stream.fail();
if (!success)
{
LOG_ERROR("[AutoStart] An error occurred writing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::IsAutoStartEnabled()
{
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
}
else
{
return(false);
}
}
std::string AutoStart::GetExePath()
{
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[ PATH_MAX ];
ssize_t count = readlink("/proc/self/exe", exepath, PATH_MAX);
return(std::string(exepath, (count > 0) ? count : 0));
}
/*---------------------------------------------------------*\
| Linux AutoStart Implementation |
| Private Methods |
\*---------------------------------------------------------*/
std::string AutoStart::GenerateDesktopFile(AutoStartInfo autostart_info)
{
/*-----------------------------------------------------*\
| Generate a .desktop file from the AutoStart |
| parameters |
\*-----------------------------------------------------*/
std::stringstream fileContents;
fileContents << "[Desktop Entry]" << std::endl;
fileContents << "Categories=" << autostart_info.category << std::endl;
fileContents << "Comment=" << autostart_info.desc << std::endl;
fileContents << "Icon=" << autostart_info.icon << std::endl;
fileContents << "Name=" << GetAutoStartName() << std::endl;
fileContents << "StartupNotify=true" << std::endl;
fileContents << "Terminal=false" << std::endl;
fileContents << "Type=Application" << std::endl;
/*-----------------------------------------------------*\
| Add the executable path and arguments |
\*-----------------------------------------------------*/
fileContents << "Exec=" << autostart_info.path;
if (autostart_info.args != "")
{
fileContents << " " << autostart_info.args;
}
fileContents << std::endl;
return(fileContents.str());
}
void AutoStart::InitAutoStart(std::string name)
{
std::string autostart_dir;
autostart_name = name;
/*-----------------------------------------------------*\
| Get home and config paths |
\*-----------------------------------------------------*/
const char *xdg_config_home = getenv("XDG_CONFIG_HOME");
const char *home = getenv("HOME");
/*-----------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-----------------------------------------------------*/
if(xdg_config_home != NULL)
{
autostart_dir = xdg_config_home;
autostart_dir = autostart_dir + "/autostart/";
}
else if(home != NULL)
{
autostart_dir = home;
autostart_dir = autostart_dir + "/.config/autostart/";
}
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_dir != "")
{
std::error_code ec;
bool success = true;
if(!filesystem::exists(autostart_dir))
{
success = filesystem::create_directories(autostart_dir, ec);
}
if(success)
{
autostart_file = autostart_dir + autostart_name + ".desktop";
}
}
}
+28
View File
@@ -0,0 +1,28 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart.h"
class AutoStart: public AutoStartInterface
{
public:
AutoStart(std::string name);
bool DisableAutoStart();
bool EnableAutoStart(AutoStartInfo autostart_info);
bool IsAutoStartEnabled();
std::string GetExePath();
private:
void InitAutoStart(std::string name);
std::string GenerateDesktopFile(AutoStartInfo autostart_info);
};
+210
View File
@@ -0,0 +1,210 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart-MacOS.h"
#include "LogManager.h"
#include "filesystem.h"
AutoStart::AutoStart(std::string name)
{
InitAutoStart(name);
}
bool AutoStart::DisableAutoStart()
{
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
if(!success)
{
LOG_ERROR("[AutoStart] An error occurred removing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
std::string desktop_file = GenerateLaunchAgentFile(autostart_info);
std::ofstream autostart_file_stream(autostart_file, std::ios::out | std::ios::trunc);
/*-------------------------------------------------*\
| Error out if the file could not be opened |
\*-------------------------------------------------*/
if(!autostart_file_stream)
{
LOG_ERROR("[AutoStart] Could not open %s for writing.", autostart_file.c_str());
success = false;
}
/*-------------------------------------------------*\
| Otherwise, write the file |
\*-------------------------------------------------*/
else
{
autostart_file_stream << desktop_file;
autostart_file_stream.close();
success = !autostart_file_stream.fail();
if (!success)
{
LOG_ERROR("[AutoStart] An error occurred writing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::IsAutoStartEnabled()
{
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
}
else
{
return(false);
}
}
std::string AutoStart::GetExePath()
{
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[ PATH_MAX ];
uint32_t exesize = PATH_MAX;
int ret_val = _NSGetExecutablePath(exepath, &exesize);
return(std::string(exepath, (ret_val == 0) ? strlen(exepath) : 0));
return("");
}
/*---------------------------------------------------------*\
| MacOS AutoStart Implementation |
| Private Methods |
\*---------------------------------------------------------*/
std::string AutoStart::GenerateLaunchAgentFile(AutoStartInfo autostart_info)
{
/*-----------------------------------------------------*\
| Generate a .plist file from the AutoStart |
| parameters |
\*-----------------------------------------------------*/
std::stringstream fileContents;
fileContents << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl;
fileContents << "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">" << std::endl;
fileContents << "<plist version=\"1.0\">" << std::endl;
fileContents << "<dict>" << std::endl;
fileContents << " <key>Label</key>" << std::endl;
fileContents << " <string>org.openrgb</string>" << std::endl;
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);
std::string arg;
while(arg_parser >> arg)
{
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());
}
void AutoStart::InitAutoStart(std::string name)
{
std::string autostart_dir;
autostart_name = name;
/*-----------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-----------------------------------------------------*/
autostart_dir = getenv("HOME");
autostart_dir = autostart_dir + "/Library/LaunchAgents/";
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_dir != "")
{
std::error_code ec;
bool success = true;
if(!filesystem::exists(autostart_dir))
{
success = filesystem::create_directories(autostart_dir, ec);
}
if(success)
{
autostart_file = autostart_dir + autostart_name + ".plist";
}
}
}
+28
View File
@@ -0,0 +1,28 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart.h"
class AutoStart: public AutoStartInterface
{
public:
AutoStart(std::string name);
bool DisableAutoStart();
bool EnableAutoStart(AutoStartInfo autostart_info);
bool IsAutoStartEnabled();
std::string GetExePath();
private:
void InitAutoStart(std::string name);
std::string GenerateLaunchAgentFile(AutoStartInfo autostart_info);
};
+206
View File
@@ -0,0 +1,206 @@
/*---------------------------------------------------------*\
| 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 <shlobj.h>
#include "AutoStart-Windows.h"
#include "LogManager.h"
#include "filesystem.h"
#include "windows.h"
AutoStart::AutoStart(std::string name)
{
InitAutoStart(name);
}
bool AutoStart::DisableAutoStart()
{
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
if(!success)
{
LOG_ERROR("[AutoStart] An error occurred removing the auto start file.");
}
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return(success);
}
bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
bool weInitialised = false;
HRESULT result;
IShellLinkW* shellLink = NULL;
std::wstring exepathw = utf8_decode(autostart_info.path);
std::wstring argumentsw = utf8_decode(autostart_info.args);
std::wstring startupfilepathw = utf8_decode(autostart_file);
std::wstring descriptionw = utf8_decode(autostart_info.desc);
std::wstring iconw = utf8_decode(autostart_info.path);
result = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLinkW, (void**)&shellLink);
/*-------------------------------------------------*\
| If not initialized, initialize |
\*-------------------------------------------------*/
if(result == CO_E_NOTINITIALIZED)
{
weInitialised = true;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
result = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLinkW, (void**)&shellLink);
}
/*-------------------------------------------------*\
| If successfully initialized, save a shortcut |
| from the AutoStart parameters |
\*-------------------------------------------------*/
if(SUCCEEDED(result))
{
shellLink->SetPath(exepathw.c_str());
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);
success = SUCCEEDED(result);
persistFile->Release();
}
shellLink->Release();
}
/*-------------------------------------------------*\
| Uninitialize when done |
\*-------------------------------------------------*/
if(weInitialised)
{
CoUninitialize();
}
}
else
{
LOG_ERROR("[AutoStart] Could not establish correct autostart file path.");
}
return success;
}
bool AutoStart::IsAutoStartEnabled()
{
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
}
else
{
return(false);
}
}
std::string AutoStart::GetExePath()
{
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[MAX_PATH] = "";
DWORD count = GetModuleFileNameA(NULL, exepath, MAX_PATH);
return(std::string(exepath, (count > 0) ? count : 0));
}
/*---------------------------------------------------------*\
| Windows AutoStart Implementation |
| Private Methods |
\*---------------------------------------------------------*/
void AutoStart::InitAutoStart(std::string name)
{
char startMenuPath[MAX_PATH];
autostart_name = name;
/*-----------------------------------------------------*\
| Get startup applications path |
\*-----------------------------------------------------*/
HRESULT result = SHGetFolderPathA(NULL, CSIDL_PROGRAMS, NULL, 0, startMenuPath);
if(SUCCEEDED(result))
{
autostart_file = std::string(startMenuPath);
autostart_file += "\\Startup\\" + autostart_name + ".lnk";
}
else
{
autostart_file.clear();
}
}
/*---------------------------------------------------------*\
| Convert an UTF8 string to a wide Unicode String |
| (from wmi.cpp) |
\*---------------------------------------------------------*/
std::wstring AutoStart::utf8_decode(const std::string& str)
{
if(str.empty())
{
return std::wstring();
}
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);
}
+28
View File
@@ -0,0 +1,28 @@
/*---------------------------------------------------------*\
| 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>
#include "AutoStart.h"
class AutoStart: public AutoStartInterface
{
public:
AutoStart(std::string name);
bool DisableAutoStart();
bool EnableAutoStart(AutoStartInfo autostart_info);
bool IsAutoStartEnabled();
std::string GetExePath();
private:
void InitAutoStart(std::string name);
std::wstring utf8_decode(const std::string& str);
};
+20
View File
@@ -0,0 +1,20 @@
/*---------------------------------------------------------*\
| AutoStart.cpp |
| |
| Autostart common implementation |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AutoStart.h"
std::string AutoStartInterface::GetAutoStartFile()
{
return(autostart_file);
}
std::string AutoStartInterface::GetAutoStartName()
{
return(autostart_name);
}
+53
View File
@@ -0,0 +1,53 @@
/*---------------------------------------------------------*\
| AutoStart.h |
| |
| Autostart common implementation |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
struct AutoStartInfo
{
std::string path;
std::string args;
std::string desc;
std::string icon;
std::string category;
};
class AutoStartInterface
{
public:
virtual bool DisableAutoStart() = 0;
virtual bool EnableAutoStart(AutoStartInfo autostart_info) = 0;
virtual bool IsAutoStartEnabled() = 0;
virtual std::string GetExePath() = 0;
std::string GetAutoStartFile();
std::string GetAutoStartName();
protected:
std::string autostart_file;
std::string autostart_name;
};
#ifdef _WIN32
#include "AutoStart-Windows.h"
#endif
#ifdef __linux__
#include "AutoStart-Linux.h"
#endif
#ifdef __APPLE__
#include "AutoStart-MacOS.h"
#endif
#ifdef __FreeBSD__
#include "AutoStart-FreeBSD.h"
#endif
+74
View File
@@ -0,0 +1,74 @@
# Contributing to OpenRGB
The OpenRGB project welcomes contributions from the community. The project would not support the number of devices it does today without the amazing contributions from community developers. If you want to add a new device, fix a bug, or add a feature, feel free to open a merge request on the OpenRGB GitLab (https://gitlab.com/CalcProgrammer1/OpenRGB).
## Creating a Merge Request
To create a merge request, log into GitLab and fork the OpenRGB project. Push your changes to your fork and then use the Create Merge Request option. Before opening a merge request, please review the following best practices to help your merge request get merged without excessive delay.
* Please keep the scope of each merge request limited to one functional area. If you wish to add a new device controller, for instance, don't also do code cleanup in another controller as part of the same merge request.
* Explain what your merge request is changing, why you feel the change is necessary, and add any additional information you feel is needed to best understand your change in the merge request description.
* 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
Since mid 2022 Gitlab has limited the usage of shared runners to all projects and whilst quite geneorous quotas are allowed
for open source projects it is possible to exhaust them. With that in mind not all jobs within the pipeline build are
triggered to automatically run with every push to your branch with the exception of the Windows 64bit and Linux Appimage 64bit
jobs. If you need to test or share another build you can still start it manually from your pipeline queue.
Once a merge request is created all architectures and platforms will be compiled to ensure that they are ready to merge.
Please refer to the following link for [further information relating to minutes and quotas](https://docs.gitlab.com/ee/ci/pipelines/cicd_minutes.html).
## Style Guidelines
OpenRGB is written in C++, uses the Qt framework for UI, and uses the QMake build system. While OpenRGB does use C++, I am primarily a C programmer and prefer doing things "C Style" vs. C++ style. C++'s object oriented programming features fit the needs of a program such as OpenRGB where there are many implementations of a single interface so I chose to write it in C++ over C. Still, however, I prefer using C-style code where possible. When making changes to existing code files, try to follow the existing style. Merge requests that go out of their way to restyle code will not be accepted and will be sent back for rework.
### Functional Style
* Limit use of C++ std library data types
* For fixed-length containers, use C arrays
* For list constants, use const C arrays
* For fixed-length strings, use C char buffers ("C strings"), though using std::string is acceptable if the value will be placed in a std::string
* For basic types, prefer using the non-typedef'd basic types (char, short, int, etc) over typedef'd (uint8_t, uint16_t, uint32_t, etc)
* Unless defined in an OpenRGB API or the file is implementing an existing API using these types (such as i2c_smbus)
* For hard-coded values, use `#define`s over const variables unless you need a pointer to the value
* For variable-length containers, use std::vector
* For variable-length strings, use std::string
* `struct` should not include any functions, only variables
* `class` should only be used for objects containing functions
* Other std types may be used sparingly if necessary
* Only use Qt libraries, types, and functionality in user interface files
* Anything under the qt/ folder basically
* Do not use QDebug, use our LogManager instead. If you use QDebug during development, please remove it before submitting your merge request
* Use C-style indexed for loops when iterating through an array or vector
* Use C-style casts unless necessary
* Avoid the `auto` type. It makes code more difficult to read
* Do not use `printf` or `cout` for debug messages, use LogManager instead
* Don't define namespaces unless necessary
### Non-functional Style
* Set your editor's tab settings to insert spaces, using 4 spaces per tab stop
* Always put opening and closing braces `{`, `}` on their own lines
* Indent code inside the braces, do not indent the braces themselves
* Capitalize hexadecimal literals (`0xFF` not `0xff`) except in the udev rules file (which must be lowercase to work)
* No space between keyword and open parenthesis (`if(TRUE)` not `if (TRUE)`). There are some instances of this that haven't been cleaned up in the code.
* Generally, `snake_case` is used for variable names and `CamelCase` is used for function and class names
* Add a header comment to new files with the filename, description, original author, and date (this is missing on most Detect files)
* Line up `=` when doing a lot of assignments together
* Use this comment box style when adding comments:
```
/*--------------------------------*\
| This is a comment |
\*_-------------------------------*/
```
## Translating
Translation files are located in [`OpenRGB/qt/i18n/`](https://gitlab.com/CalcProgrammer1/OpenRGB/-/tree/master/qt/i18n), where languages are formatted using ISO 639-1 format: `OpenRGB_xx_XX.ts` — `xx_XX` representing the language code.
In order to translate a file, you need to [fork](https://gitlab.com/CalcProgrammer1/OpenRGB/-/forks/new) the project, create a new file for your language with `lupdate` (or edit an exisiting one), edit the file with `qtlinguist`, commit, push, and create a merge request.
+162
View File
@@ -0,0 +1,162 @@
/*---------------------------------------------------------*\
| 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
#define COLOR_BLACK 0x000000
#define COLOR_NAVY 0x000080
#define COLOR_DARKBLUE 0x00008b
#define COLOR_MEDIUMBLUE 0x0000cd
#define COLOR_BLUE 0x0000ff
#define COLOR_DARKGREEN 0x006400
#define COLOR_GREEN 0x008000
#define COLOR_TEAL 0x008080
#define COLOR_DARKCYAN 0x008b8b
#define COLOR_DEEPSKYBLUE 0x00bfff
#define COLOR_DARKTURQUOISE 0x00ced1
#define COLOR_MEDIUMSPRINGGREEN 0x00fa9a
#define COLOR_LIME 0x00ff00
#define COLOR_SPRINGGREEN 0x00ff7f
#define COLOR_AQUA 0x00ffff
#define COLOR_CYAN 0x00ffff
#define COLOR_MIDNIGHTBLUE 0x191970
#define COLOR_DODGERBLUE 0x1e90ff
#define COLOR_LIGHTSEAGREEN 0x20b2aa
#define COLOR_FORESTGREEN 0x228b22
#define COLOR_SEAGREEN 0x2e8b57
#define COLOR_DARKSLATEGRAY 0x2f4f4f
#define COLOR_DARKSLATEGREY 0x2f4f4f
#define COLOR_LIMEGREEN 0x32cd32
#define COLOR_MEDIUMSEAGREEN 0x3cb371
#define COLOR_TURQUOISE 0x40e0d0
#define COLOR_ROYALBLUE 0x4169e1
#define COLOR_STEELBLUE 0x4682b4
#define COLOR_DARKSLATEBLUE 0x483d8b
#define COLOR_MEDIUMTURQUOISE 0x48d1cc
#define COLOR_INDIGO 0x4b0082
#define COLOR_DARKOLIVEGREEN 0x556b2f
#define COLOR_CADETBLUE 0x5f9ea0
#define COLOR_CORNFLOWERBLUE 0x6495ed
#define COLOR_MEDIUMAQUAMARINE 0x66cdaa
#define COLOR_DIMGRAY 0x696969
#define COLOR_DIMGREY 0x696969
#define COLOR_SLATEBLUE 0x6a5acd
#define COLOR_OLIVEDRAB 0x6b8e23
#define COLOR_SLATEGRAY 0x708090
#define COLOR_SLATEGREY 0x708090
#define COLOR_LIGHTSLATEGRAY 0x778899
#define COLOR_LIGHTSLATEGREY 0x778899
#define COLOR_MEDIUMSLATEBLUE 0x7b68ee
#define COLOR_LAWNGREEN 0x7cfc00
#define COLOR_CHARTREUSE 0x7fff00
#define COLOR_AQUAMARINE 0x7fffd4
#define COLOR_MAROON 0x800000
#define COLOR_PURPLE 0x800080
#define COLOR_ELECTRIC_ULTRAMARINE 0x4000FF
#define COLOR_OLIVE 0x808000
#define COLOR_GRAY 0x808080
#define COLOR_GREY 0x808080
#define COLOR_SKYBLUE 0x87ceeb
#define COLOR_LIGHTSKYBLUE 0x87cefa
#define COLOR_BLUEVIOLET 0x8a2be2
#define COLOR_DARKRED 0x8b0000
#define COLOR_DARKMAGENTA 0x8b008b
#define COLOR_SADDLEBROWN 0x8b4513
#define COLOR_DARKSEAGREEN 0x8fbc8f
#define COLOR_LIGHTGREEN 0x90ee90
#define COLOR_MEDIUMPURPLE 0x9370db
#define COLOR_DARKVIOLET 0x9400d3
#define COLOR_PALEGREEN 0x98fb98
#define COLOR_DARKORCHID 0x9932cc
#define COLOR_YELLOWGREEN 0x9acd32
#define COLOR_SIENNA 0xa0522d
#define COLOR_BROWN 0xa52a2a
#define COLOR_DARKGRAY 0xa9a9a9
#define COLOR_DARKGREY 0xa9a9a9
#define COLOR_LIGHTBLUE 0xadd8e6
#define COLOR_GREENYELLOW 0xadff2f
#define COLOR_PALETURQUOISE 0xafeeee
#define COLOR_LIGHTSTEELBLUE 0xb0c4de
#define COLOR_POWDERBLUE 0xb0e0e6
#define COLOR_FIREBRICK 0xb22222
#define COLOR_DARKGOLDENROD 0xb8860b
#define COLOR_MEDIUMORCHID 0xba55d3
#define COLOR_ROSYBROWN 0xbc8f8f
#define COLOR_DARKKHAKI 0xbdb76b
#define COLOR_SILVER 0xc0c0c0
#define COLOR_MEDIUMVIOLETRED 0xc71585
#define COLOR_INDIANRED 0xcd5c5c
#define COLOR_PERU 0xcd853f
#define COLOR_CHOCOLATE 0xd2691e
#define COLOR_TAN 0xd2b48c
#define COLOR_LIGHTGRAY 0xd3d3d3
#define COLOR_LIGHTGREY 0xd3d3d3
#define COLOR_THISTLE 0xd8bfd8
#define COLOR_ORCHID 0xda70d6
#define COLOR_GOLDENROD 0xdaa520
#define COLOR_PALEVIOLETRED 0xdb7093
#define COLOR_CRIMSON 0xdc143c
#define COLOR_GAINSBORO 0xdcdcdc
#define COLOR_PLUM 0xdda0dd
#define COLOR_BURLYWOOD 0xdeb887
#define COLOR_LIGHTCYAN 0xe0ffff
#define COLOR_LAVENDER 0xe6e6fa
#define COLOR_DARKSALMON 0xe9967a
#define COLOR_VIOLET 0xee82ee
#define COLOR_PALEGOLDENROD 0xeee8aa
#define COLOR_LIGHTCORAL 0xf08080
#define COLOR_KHAKI 0xf0e68c
#define COLOR_ALICEBLUE 0xf0f8ff
#define COLOR_HONEYDEW 0xf0fff0
#define COLOR_AZURE 0xf0ffff
#define COLOR_SANDYBROWN 0xf4a460
#define COLOR_WHEAT 0xf5deb3
#define COLOR_BEIGE 0xf5f5dc
#define COLOR_WHITESMOKE 0xf5f5f5
#define COLOR_MINTCREAM 0xf5fffa
#define COLOR_GHOSTWHITE 0xf8f8ff
#define COLOR_SALMON 0xfa8072
#define COLOR_ANTIQUEWHITE 0xfaebd7
#define COLOR_LINEN 0xfaf0e6
#define COLOR_LIGHTGOLDENRODYELLOW 0xfafad2
#define COLOR_OLDLACE 0xfdf5e6
#define COLOR_RED 0xff0000
#define COLOR_FUCHSIA 0xff00ff
#define COLOR_MAGENTA 0xff00ff
#define COLOR_DEEPPINK 0xff1493
#define COLOR_ORANGERED 0xff4500
#define COLOR_TOMATO 0xff6347
#define COLOR_HOTPINK 0xff69b4
#define COLOR_CORAL 0xff7f50
#define COLOR_DARKORANGE 0xff8c00
#define COLOR_LIGHTSALMON 0xffa07a
#define COLOR_ORANGE 0xffa500
#define COLOR_LIGHTPINK 0xffb6c1
#define COLOR_PINK 0xffc0cb
#define COLOR_GOLD 0xffd700
#define COLOR_PEACHPUFF 0xffdab9
#define COLOR_NAVAJOWHITE 0xffdead
#define COLOR_MOCCASIN 0xffe4b5
#define COLOR_BISQUE 0xffe4c4
#define COLOR_MISTYROSE 0xffe4e1
#define COLOR_BLANCHEDALMOND 0xffebcd
#define COLOR_PAPAYAWHIP 0xffefd5
#define COLOR_LAVENDERBLUSH 0xfff0f5
#define COLOR_SEASHELL 0xfff5ee
#define COLOR_CORNSILK 0xfff8dc
#define COLOR_LEMONCHIFFON 0xfffacd
#define COLOR_FLORALWHITE 0xfffaf0
#define COLOR_SNOW 0xfffafa
#define COLOR_YELLOW 0xffff00
#define COLOR_LIGHTYELLOW 0xffffe0
#define COLOR_IVORY 0xfffff0
#define COLOR_WHITE 0xffffff
#endif // COLORS_H
@@ -0,0 +1,61 @@
/*---------------------------------------------------------*\
| 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.h>
#include "Detector.h"
/*-----------------------------------------------------*\
| A4 Tech specific includes |
\*-----------------------------------------------------*/
#include "RGBController_BloodyMouse.h"
#include "RGBController_BloodyB820R.h"
/*-----------------------------------------------------*\
| A4 Tech USB vendor ID |
\*-----------------------------------------------------*/
#define A4_TECH_VID 0x09DA
void DetectA4TechMouseControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
BloodyMouseController* controller = new BloodyMouseController(dev, info->path, info->product_id, name);
RGBController_BloodyMouse* rgb_controller = new RGBController_BloodyMouse(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
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, name);
RGBController_BloodyB820R* rgb_controller = new RGBController_BloodyB820R(controller);
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 W70 Max", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W70_MAX_PID, 2, 0xFF33, 0x0518);
REGISTER_HID_DETECTOR_IPU("Bloody W90 Max", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W90_MAX_PID, 2, 0xFF33, 0x053D);
REGISTER_HID_DETECTOR_IPU("Bloody W90 Pro", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W90_PRO_PID, 2, 0xFF33, 0x054D);
REGISTER_HID_DETECTOR_IPU("Bloody MP 50RS", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_MP_50RS_PID, 2, 0xFFF2, 0x6009);
REGISTER_HID_DETECTOR_IPU("Bloody B820R", DetectBloodyB820R, A4_TECH_VID, BLOODY_B820R_PID, 2, 0xFF52, 0x0210);
@@ -0,0 +1,110 @@
/*---------------------------------------------------------*\
| 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"
#include "StringUtils.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, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
SendControlPacket(BLOODY_B820R_GAIN_CONTROL);
}
BloodyB820RController::~BloodyB820RController()
{
SendControlPacket(BLOODY_B820R_RELEASE_CONTROL);
hid_close(dev);
}
std::string BloodyB820RController::GetSerial()
{
wchar_t serial_string[HID_MAX_STR];
int ret = hid_get_serial_number_string(dev, serial_string, HID_MAX_STR);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_string));
}
std::string BloodyB820RController::GetLocation()
{
return("HID: " + location);
}
std::string BloodyB820RController::GetName()
{
return(name);
}
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,55 @@
/*---------------------------------------------------------*\
| 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.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, std::string dev_name);
~BloodyB820RController();
std::string GetSerial();
std::string GetLocation();
std::string GetName();
void SetLEDDirect(std::vector<RGBColor> colors);
void SendControlPacket(uint8_t data);
private:
std::string location;
std::string name;
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 DetectBloodyB820R
@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 = controller->GetName();
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;
};
@@ -0,0 +1,84 @@
/*---------------------------------------------------------*\
| 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 "StringUtils.h"
BloodyMouseController::BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id, std::string dev_name)
{
dev = dev_handle;
location = path;
pid = product_id;
name = dev_name;
InitDevice();
}
BloodyMouseController::~BloodyMouseController()
{
hid_close(dev);
}
uint16_t BloodyMouseController::GetPid()
{
return(pid);
}
std::string BloodyMouseController::GetSerial()
{
wchar_t serial_string[HID_MAX_STR];
int ret = hid_get_serial_number_string(dev, serial_string, HID_MAX_STR);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_string));
}
std::string BloodyMouseController::GetLocation()
{
return("HID: " + location);
}
std::string BloodyMouseController::GetName()
{
return(name);
}
void BloodyMouseController::InitDevice()
{
uint8_t buffer[BLOODYMOUSE_WRITE_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 };
hid_send_feature_report(dev, buffer, BLOODYMOUSE_WRITE_PACKET_SIZE);
buffer[BLOODYMOUSE_MODE_BYTE] = 0;
buffer[BLOODYMOUSE_DATA_BYTE] = 1;
hid_send_feature_report(dev, buffer, BLOODYMOUSE_WRITE_PACKET_SIZE);
}
void BloodyMouseController::SetLedsDirect(std::vector<RGBColor> colors)
{
uint8_t buffer[BLOODYMOUSE_WRITE_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 };
for(uint8_t i = 0; i < colors.size(); i++)
{
uint8_t offset = 3 * (colors[i] >> 24) + BLOODYMOUSE_DATA_BYTE;
buffer[offset] = RGBGetRValue(colors[i]);
buffer[offset + 1] = RGBGetGValue(colors[i]);
buffer[offset + 2] = RGBGetBValue(colors[i]);
}
hid_send_feature_report(dev, buffer, BLOODYMOUSE_WRITE_PACKET_SIZE);
}
@@ -0,0 +1,70 @@
/*---------------------------------------------------------*\
| 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.h>
#include "RGBController.h"
/*-----------------------------------------------------*\
| Mouse product IDs |
\*-----------------------------------------------------*/
#define BLOODY_W60_PRO_PID 0x37EA
#define BLOODY_W70_MAX_PID 0x79EF
#define BLOODY_W90_MAX_PID 0x3666
#define BLOODY_W90_PRO_PID 0x39B6
/*-----------------------------------------------------*\
| Mousemat product IDs |
\*-----------------------------------------------------*/
#define BLOODY_MP_50RS_PID 0xFA60
#define HID_MAX_STR 255
#define BLOODYMOUSE_WRITE_PACKET_SIZE 64
#define BLOODYMOUSE_BRIGHTNESS_MIN 0
#define BLOODYMOUSE_BRIGHTNESS_MAX 255
enum
{
BLOODYMOUSE_MODE_DIRECT = 0x01, //Direct Led Control - Independently set LEDs in zone
};
enum
{
BLOODYMOUSE_REPORT_BYTE = 1,
BLOODYMOUSE_COMMAND_BYTE = 2,
BLOODYMOUSE_MODE_BYTE = 3,
BLOODYMOUSE_DATA_BYTE = 8,
};
class BloodyMouseController
{
public:
BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id, std::string dev_name);
~BloodyMouseController();
uint16_t GetPid();
std::string GetSerial();
std::string GetLocation();
std::string GetName();
void SetLedsDirect(std::vector<RGBColor> colors);
private:
uint16_t pid;
std::string location;
std::string name;
hid_device* dev;
void InitDevice();
};
@@ -0,0 +1,197 @@
/*---------------------------------------------------------*\
| 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"
static const mouse_layout w60_pro
{
{
"Scroll Wheel", { 14 }
},
{
"Mid Line", { 0, 1, 2, 9, 3, 4, 5, 6 }
},
{
"Logo", { 10 }
},
{
"Rear", { 8, 7, 13, 12, 11 }
}
};
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
{
{
"Mouse Pad", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
}
};
/**------------------------------------------------------------------*\
@name BloodyMouse
@category Mouse
@type USB
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors DetectA4TechMouseControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_BloodyMouse::RGBController_BloodyMouse(BloodyMouseController *controller_ptr)
{
controller = controller_ptr;
switch(controller->GetPid())
{
case BLOODY_MP_50RS_PID:
type = DEVICE_TYPE_MOUSEMAT;
break;
default:
type = DEVICE_TYPE_MOUSE;
}
name = controller->GetName();
vendor = "Bloody";
description = "Controller compatible with the Bloody W60 Pro and MP 50RS";
serial = controller->GetSerial();
location = controller->GetLocation();
mode Direct;
Direct.name = "Direct";
Direct.value = BLOODYMOUSE_MODE_DIRECT;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
SetupZones();
}
RGBController_BloodyMouse::~RGBController_BloodyMouse()
{
delete controller;
}
void RGBController_BloodyMouse::SetupZones()
{
/*-------------------------------------------------*\
| Clear any existing color/LED configuration |
\*-------------------------------------------------*/
leds.clear();
colors.clear();
/*-------------------------------------------------*\
| Select layout from PID |
\*-------------------------------------------------*/
mouse_layout layout;
switch(controller->GetPid())
{
case BLOODY_W60_PRO_PID:
layout = w60_pro;
break;
case BLOODY_W70_MAX_PID:
case BLOODY_W90_MAX_PID:
case BLOODY_W90_PRO_PID:
layout = w90_max;
break;
case BLOODY_MP_50RS_PID:
layout = mp_50rs;
break;
}
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
for(uint8_t zone_idx = 0; zone_idx < layout.size(); zone_idx++)
{
mouse_zone mz = layout[zone_idx];
bool bool_single = mz.zone_leds.size() == 1;
zone new_zone;
new_zone.name = mz.name;
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;
new_zone.matrix_map = NULL;
zones.push_back(new_zone);
for(unsigned int lp_idx = 0; lp_idx < zones[zone_idx].leds_count; lp_idx++)
{
led new_led;
new_led.value = mz.zone_leds[lp_idx];
if(bool_single)
{
new_led.name = mz.name + " LED";
}
else
{
new_led.name = mz.name;
new_led.name.append(" LED " + std::to_string(lp_idx));
}
leds.push_back(new_led);
}
}
SetupColors();
}
void RGBController_BloodyMouse::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_BloodyMouse::DeviceUpdateLEDs()
{
std::vector<RGBColor> colour;
for(size_t i = 0; i < colors.size(); i++)
{
RGBColor c = colors[i] | (leds[i].value << 24);
colour.push_back(c);
}
controller->SetLedsDirect(colour);
}
void RGBController_BloodyMouse::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_BloodyMouse::UpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
void RGBController_BloodyMouse::DeviceUpdateMode()
{
/*---------------------------------------------------------*\
| This device only supports Direct mode |
\*---------------------------------------------------------*/
}
@@ -0,0 +1,43 @@
/*---------------------------------------------------------*\
| 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 "RGBController.h"
#include "BloodyMouseController.h"
struct mouse_zone
{
std::string name;
std::vector<uint8_t> zone_leds;
};
typedef std::vector<mouse_zone> mouse_layout;
class RGBController_BloodyMouse : public RGBController
{
public:
RGBController_BloodyMouse(BloodyMouseController* controller_ptr);
~RGBController_BloodyMouse();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
BloodyMouseController* controller;
};
@@ -0,0 +1,195 @@
/*---------------------------------------------------------*\
| AMBXController.cpp |
| |
| Driver for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AMBXController.h"
#include "LogManager.h"
#include "StringUtils.h"
#include <cstring>
#include <thread>
#include <chrono>
AMBXController::AMBXController(const char* path)
{
initialized = false;
usb_context = nullptr;
dev_handle = nullptr;
location = "USB: ";
location += path;
// Initialize libusb in this instance
if(libusb_init(&usb_context) < 0)
{
return;
}
// Get the device list
libusb_device** device_list;
ssize_t device_count = libusb_get_device_list(usb_context, &device_list);
if(device_count < 0)
{
return;
}
for(ssize_t i = 0; i < device_count; i++)
{
libusb_device* device = device_list[i];
struct libusb_device_descriptor desc;
if(libusb_get_device_descriptor(device, &desc) != LIBUSB_SUCCESS)
{
continue;
}
if(desc.idVendor == AMBX_VID && desc.idProduct == AMBX_PID)
{
uint8_t bus = libusb_get_bus_number(device);
uint8_t address = libusb_get_device_address(device);
char current_path[32];
snprintf(current_path, sizeof(current_path), "%d-%d", bus, address);
if(strcmp(path, current_path) == 0)
{
// Try to open this device
if(libusb_open(device, &dev_handle) != LIBUSB_SUCCESS)
{
continue;
}
// Try to detach the kernel driver if attached
if(libusb_kernel_driver_active(dev_handle, 0))
{
libusb_detach_kernel_driver(dev_handle, 0);
}
// Set auto-detach for Windows compatibility
libusb_set_auto_detach_kernel_driver(dev_handle, 1);
// Claim the interface
if(libusb_claim_interface(dev_handle, 0) != LIBUSB_SUCCESS)
{
libusb_close(dev_handle);
dev_handle = nullptr;
continue;
}
// Get string descriptor for serial number if available
if(desc.iSerialNumber != 0)
{
unsigned char serial_str[256];
int serial_result = libusb_get_string_descriptor_ascii(dev_handle, desc.iSerialNumber,
serial_str, sizeof(serial_str));
if(serial_result > 0)
{
serial = std::string(reinterpret_cast<char*>(serial_str), serial_result);
}
}
// Successfully opened and claimed the device
initialized = true;
break;
}
}
}
libusb_free_device_list(device_list, 1);
}
AMBXController::~AMBXController()
{
if(initialized)
{
// Turn off all lights before closing
unsigned int led_ids[5] =
{
AMBX_LIGHT_LEFT,
AMBX_LIGHT_RIGHT,
AMBX_LIGHT_WALL_LEFT,
AMBX_LIGHT_WALL_CENTER,
AMBX_LIGHT_WALL_RIGHT
};
RGBColor colors[5] = { 0, 0, 0, 0, 0 };
SetLEDColors(led_ids, colors, 5);
}
if(dev_handle != nullptr)
{
// Release the interface
libusb_release_interface(dev_handle, 0);
// Close the device
libusb_close(dev_handle);
dev_handle = nullptr;
}
if(usb_context != nullptr)
{
libusb_exit(usb_context);
usb_context = nullptr;
}
}
std::string AMBXController::GetDeviceLocation()
{
return location;
}
std::string AMBXController::GetSerialString()
{
return serial;
}
bool AMBXController::IsInitialized()
{
return initialized;
}
void AMBXController::SendPacket(unsigned char* packet, unsigned int size)
{
if(!initialized || dev_handle == nullptr)
{
return;
}
int actual_length = 0;
libusb_interrupt_transfer(dev_handle, AMBX_ENDPOINT_OUT, packet, size, &actual_length, 100);
}
void AMBXController::SetLEDColor(unsigned int led, RGBColor color)
{
if(!initialized)
{
return;
}
unsigned char color_buf[6] =
{
AMBX_PACKET_HEADER,
static_cast<unsigned char>(led),
AMBX_SET_COLOR,
(unsigned char)RGBGetRValue(color),
(unsigned char)RGBGetGValue(color),
(unsigned char)RGBGetBValue(color)
};
SendPacket(color_buf, 6);
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
void AMBXController::SetLEDColors(unsigned int* leds, RGBColor* colors, unsigned int count)
{
for(unsigned int i = 0; i < count; i++)
{
SetLEDColor(leds[i], colors[i]);
}
}
@@ -0,0 +1,57 @@
/*---------------------------------------------------------*\
| AMBXController.h |
| |
| Driver for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include <string>
#ifdef _WIN32
#include "dependencies/libusb-1.0.27/include/libusb.h"
#else
#include <libusb.h>
#endif
#define AMBX_VID 0x0471
#define AMBX_PID 0x083F
#define AMBX_ENDPOINT_OUT 0x02
#define AMBX_PACKET_HEADER 0xA1
#define AMBX_SET_COLOR 0x03
enum
{
AMBX_LIGHT_LEFT = 0x0B,
AMBX_LIGHT_RIGHT = 0x1B,
AMBX_LIGHT_WALL_LEFT = 0x2B,
AMBX_LIGHT_WALL_CENTER = 0x3B,
AMBX_LIGHT_WALL_RIGHT = 0x4B
};
class AMBXController
{
public:
AMBXController(const char* path);
~AMBXController();
std::string GetDeviceLocation();
std::string GetSerialString();
bool IsInitialized();
void SetLEDColor(unsigned int led, RGBColor color);
void SetLEDColors(unsigned int* leds, RGBColor* colors, unsigned int count);
private:
libusb_context* usb_context;
libusb_device_handle* dev_handle;
std::string location;
std::string serial;
bool initialized;
void SendPacket(unsigned char* packet, unsigned int size);
};
@@ -0,0 +1,83 @@
/*---------------------------------------------------------*\
| AMBXControllerDetect.cpp |
| |
| Detector for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AMBXController.h"
#include "RGBController.h"
#include "RGBController_AMBX.h"
#ifdef _WIN32
#include "dependencies/libusb-1.0.27/include/libusb.h"
#else
#include <libusb.h>
#endif
/******************************************************************************************\
* *
* DetectAMBXControllers *
* *
* Detect Philips amBX Gaming devices *
* *
\******************************************************************************************/
void DetectAMBXControllers()
{
libusb_context* ctx = NULL;
if(libusb_init(&ctx) < 0)
{
return;
}
libusb_device** devs;
ssize_t num_devs = libusb_get_device_list(ctx, &devs);
if(num_devs <= 0)
{
libusb_exit(ctx);
return;
}
for(ssize_t i = 0; i < num_devs; i++)
{
libusb_device* dev = devs[i];
libusb_device_descriptor desc;
if(libusb_get_device_descriptor(dev, &desc) != 0)
{
continue;
}
if(desc.idVendor == AMBX_VID && desc.idProduct == AMBX_PID)
{
uint8_t bus = libusb_get_bus_number(dev);
uint8_t address = libusb_get_device_address(dev);
char device_path[32];
snprintf(device_path, sizeof(device_path), "%d-%d", bus, address);
// Use the AMBXController to handle opening and initializing
AMBXController* controller = new AMBXController(device_path);
if(controller->IsInitialized())
{
RGBController_AMBX* rgb_controller = new RGBController_AMBX(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
else
{
delete controller;
}
}
}
libusb_free_device_list(devs, 1);
libusb_exit(ctx);
}
REGISTER_DETECTOR("Philips amBX", DetectAMBXControllers);
@@ -0,0 +1,179 @@
/*---------------------------------------------------------*\
| RGBController_AMBX.cpp |
| |
| RGB Controller for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AMBX.h"
/**------------------------------------------------------------------*\
@name Philips amBX
@category Accessory
@type USB
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors DetectAMBXControllers
@comment The Philips amBX Gaming lights system includes left and right
lights and a wall-washer bar with three zones.
\*-------------------------------------------------------------------*/
RGBController_AMBX::RGBController_AMBX(AMBXController* controller_ptr)
{
controller = controller_ptr;
name = "Philips amBX";
vendor = "Philips";
type = DEVICE_TYPE_ACCESSORY;
description = "Philips amBX Gaming Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.value = 0;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
SetupZones();
}
RGBController_AMBX::~RGBController_AMBX()
{
delete controller;
}
void RGBController_AMBX::SetupZones()
{
// Set up zones
zone side_lights_zone;
side_lights_zone.name = "Side Lights";
side_lights_zone.type = ZONE_TYPE_LINEAR;
side_lights_zone.leds_min = 2;
side_lights_zone.leds_max = 2;
side_lights_zone.leds_count = 2;
side_lights_zone.matrix_map = NULL;
zones.push_back(side_lights_zone);
zone wallwasher_zone;
wallwasher_zone.name = "Wallwasher";
wallwasher_zone.type = ZONE_TYPE_LINEAR;
wallwasher_zone.leds_min = 3;
wallwasher_zone.leds_max = 3;
wallwasher_zone.leds_count = 3;
wallwasher_zone.matrix_map = NULL;
zones.push_back(wallwasher_zone);
// Set up LEDs
led left_light;
left_light.name = "Left";
left_light.value = AMBX_LIGHT_LEFT;
leds.push_back(left_light);
led right_light;
right_light.name = "Right";
right_light.value = AMBX_LIGHT_RIGHT;
leds.push_back(right_light);
led wall_left;
wall_left.name = "Wall Left";
wall_left.value = AMBX_LIGHT_WALL_LEFT;
leds.push_back(wall_left);
led wall_center;
wall_center.name = "Wall Center";
wall_center.value = AMBX_LIGHT_WALL_CENTER;
leds.push_back(wall_center);
led wall_right;
wall_right.name = "Wall Right";
wall_right.value = AMBX_LIGHT_WALL_RIGHT;
leds.push_back(wall_right);
SetupColors();
}
void RGBController_AMBX::ResizeZone(int /*zone*/, int /*new_size*/)
{
// This device does not support resizing zones
}
void RGBController_AMBX::DeviceUpdateLEDs()
{
if(!controller->IsInitialized())
{
return;
}
unsigned int led_values[5];
RGBColor led_colors[5];
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
led_values[led_idx] = leds[led_idx].value;
led_colors[led_idx] = colors[led_idx];
}
controller->SetLEDColors(led_values, led_colors, static_cast<unsigned int>(leds.size()));
}
void RGBController_AMBX::UpdateZoneLEDs(int zone)
{
if(!controller->IsInitialized())
{
return;
}
unsigned int start_idx = 0;
unsigned int zone_size = 0;
// Calculate start index and size
for(unsigned int z_idx = 0; z_idx < zones.size(); z_idx++)
{
if(z_idx == (unsigned int)zone)
{
zone_size = zones[z_idx].leds_count;
break;
}
start_idx += zones[z_idx].leds_count;
}
unsigned int led_values[5];
RGBColor led_colors[5];
for(unsigned int led_idx = 0; led_idx < zone_size; led_idx++)
{
unsigned int current_idx = start_idx + led_idx;
led_values[led_idx] = leds[current_idx].value;
led_colors[led_idx] = colors[current_idx];
}
controller->SetLEDColors(led_values, led_colors, zone_size);
}
void RGBController_AMBX::UpdateSingleLED(int led)
{
if(!controller->IsInitialized())
{
return;
}
unsigned int led_value = leds[led].value;
RGBColor color = colors[led];
controller->SetLEDColor(led_value, color);
}
void RGBController_AMBX::DeviceUpdateMode()
{
if(!controller->IsInitialized())
{
return;
}
DeviceUpdateLEDs();
}
@@ -0,0 +1,32 @@
/*---------------------------------------------------------*\
| RGBController_AMBX.h |
| |
| RGB Controller for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AMBXController.h"
class RGBController_AMBX : public RGBController
{
public:
RGBController_AMBX(AMBXController* controller_ptr);
~RGBController_AMBX();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AMBXController* controller;
};
@@ -1,72 +1,62 @@
/*-----------------------------------------*\
| 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"
#include "StringUtils.h"
AMDWraithPrismController::AMDWraithPrismController(libusb_device_handle* dev_handle)
AMDWraithPrismController::AMDWraithPrismController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
dev = dev_handle;
location = path;
strcpy(device_name, "AMD Wraith Prism");
current_fan_mode = AMD_WRAITH_PRISM_FAN_LOGO_MODE_STATIC;
current_fan_speed = 0xFF;
current_fan_random_color = false;
current_fan_brightness = 0xFF;
SendEnableCommand();
SetRingEffectChannel(0x00);
SendApplyCommand();
current_logo_mode = AMD_WRAITH_PRISM_FAN_LOGO_MODE_STATIC;
current_logo_speed = 0xFF;
current_logo_random_color = false;
current_logo_brightness = 0xFF;
current_ring_mode = AMD_WRAITH_PRISM_EFFECT_CHANNEL_STATIC;
current_ring_speed = 0xFF;
current_ring_direction = false;
current_ring_brightness = 0xFF;
}
AMDWraithPrismController::~AMDWraithPrismController()
{
hid_close(dev);
}
char* AMDWraithPrismController::GetDeviceName()
std::string AMDWraithPrismController::GetLocationString()
{
return device_name;
return("HID: " + location);
}
std::string AMDWraithPrismController::GetEffectChannelString(unsigned char channel)
std::string AMDWraithPrismController::GetSerialString()
{
std::string ret_string = "";
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
unsigned char usb_buf[] =
if(ret != 0)
{
0x40, 0x21, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
return("");
}
int actual;
usb_buf[0x02] = channel;
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
ret_string.append((char *)&usb_buf[0x08]);
return(ret_string);
return(StringUtils::wstring_to_string(serial_string));
}
std::string AMDWraithPrismController::GetFirmwareVersionString()
@@ -75,6 +65,7 @@ std::string AMDWraithPrismController::GetFirmwareVersionString()
unsigned char usb_buf[] =
{
0x00,
0x12, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
@@ -93,11 +84,10 @@ std::string AMDWraithPrismController::GetFirmwareVersionString()
0x00, 0x00, 0x00, 0x00,
};
int actual;
unsigned char fw_buf[16] = {0x00};
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
for(int char_idx = 0; char_idx < 16; char_idx+=2)
{
@@ -116,139 +106,93 @@ std::string AMDWraithPrismController::GetFirmwareVersionString()
return(ret_string);
}
void AMDWraithPrismController::SetFanMode(unsigned char mode, unsigned char speed, unsigned char brightness, bool random_color)
{
current_fan_mode = mode;
current_fan_speed = speed_values_fan_logo[mode][speed];
current_fan_brightness = brightness;
current_fan_random_color = random_color;
}
void AMDWraithPrismController::SetFanColor(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned char usb_buf[] =
{
0x51, 0x2C, 0x01, 0x00,
0x06, 0xFF, 0x00, 0x01,
0xFF, 0xFF, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF
};
SendEffectChannelUpdate
(
AMD_WRAITH_PRISM_EFFECT_CHANNEL_FAN_LED,
current_fan_speed,
false,
current_fan_random_color,
current_fan_mode,
current_fan_brightness,
red,
green,
blue
);
}
int actual;
usb_buf[0x0A] = red;
usb_buf[0x0B] = green;
usb_buf[0x0C] = blue;
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
void AMDWraithPrismController::SetLogoMode(unsigned char mode, unsigned char speed, unsigned char brightness, bool random_color)
{
current_logo_mode = mode;
current_logo_speed = speed_values_fan_logo[mode][speed];
current_logo_brightness = brightness;
current_logo_random_color = random_color;
}
void AMDWraithPrismController::SetLogoColor(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned char usb_buf[] =
{
0x51, 0x2C, 0x01, 0x00,
0x05, 0xFF, 0x00, 0x01,
0xFF, 0xFF, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF
};
SendEffectChannelUpdate
(
AMD_WRAITH_PRISM_EFFECT_CHANNEL_LOGO_LED,
current_logo_speed,
false,
current_logo_random_color,
current_logo_mode,
current_logo_brightness,
red,
green,
blue
);
}
int actual;
usb_buf[0x0A] = red;
usb_buf[0x0B] = green;
usb_buf[0x0C] = blue;
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
void AMDWraithPrismController::SetRingMode(unsigned char mode, unsigned char speed, unsigned char brightness, bool direction, bool random_color)
{
current_ring_mode = mode;
current_ring_speed = speed_values_ring[mode][speed];
current_ring_direction = direction;
current_ring_brightness = brightness;
current_ring_random_color = random_color;
}
void AMDWraithPrismController::SetRingColor(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned char usb_buf[] =
{
0x51, 0x2C, 0x01, 0x00,
0x00, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF
};
SetRingEffectChannel(current_ring_mode);
int actual;
SendEffectChannelUpdate
(
current_ring_mode,
current_ring_speed,
current_ring_direction,
current_ring_random_color,
mode_value_ring[current_ring_mode],
current_ring_brightness,
red,
green,
blue
);
usb_buf[0x0A] = red;
usb_buf[0x0B] = green;
usb_buf[0x0C] = blue;
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
SendApplyCommand();
}
void AMDWraithPrismController::SetRingEffectChannel(unsigned char channel)
{
unsigned char usb_buf[] =
{
0x51, 0xA0, 0x01, 0x00,
0x00, 0x03, 0x00, 0x00,
0x05, 0x06, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07,
0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
int actual;
for(int led = 0x0A; led <= 0x18; led++)
{
usb_buf[led] = channel;
}
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
SendChannelRemap(channel, AMD_WRAITH_PRISM_EFFECT_CHANNEL_LOGO_LED, AMD_WRAITH_PRISM_EFFECT_CHANNEL_FAN_LED);
}
void AMDWraithPrismController::SendEnableCommand()
void AMDWraithPrismController::SendEnableCommand(bool direct)
{
unsigned char usb_buf[] =
{
0x00,
0x41, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
@@ -267,16 +211,20 @@ void AMDWraithPrismController::SendEnableCommand()
0x00, 0x00, 0x00, 0x00,
};
int actual;
if(direct)
{
usb_buf[0x02] = 0x03;
}
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
}
void AMDWraithPrismController::SendApplyCommand()
{
unsigned char usb_buf[] =
{
0x00,
0x51, 0x28, 0x00, 0x00,
0xE0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
@@ -295,16 +243,68 @@ void AMDWraithPrismController::SendApplyCommand()
0x00, 0x00, 0x00, 0x00,
};
int actual;
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
}
void AMDWraithPrismController::SendEffectCommand()
void AMDWraithPrismController::SendDirectPacket
(
unsigned char size,
unsigned char * led_ids,
RGBColor * colors
)
{
unsigned char usb_buf[] =
{
0x00,
0xC0, 0x01, size, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
for(unsigned int led_idx = 0; led_idx < size; led_idx++)
{
unsigned int index = led_idx * 4;
usb_buf[index + 5] = led_ids[led_idx];
usb_buf[index + 6] = RGBGetRValue(colors[led_idx]);
usb_buf[index + 7] = RGBGetGValue(colors[led_idx]);
usb_buf[index + 8] = RGBGetBValue(colors[led_idx]);
}
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
}
void AMDWraithPrismController::SendEffectChannelUpdate
(
unsigned char effect_channel,
unsigned char speed,
bool direction,
bool random_color,
unsigned char mode,
unsigned char brightness,
unsigned char red,
unsigned char green,
unsigned char blue
)
{
unsigned char usb_buf[] =
{
0x00,
0x51, 0x2C, 0x01, 0x00,
0x05, 0xFF, 0x00, 0x01,
0xFF, 0xFF, 0x00, 0xFF,
@@ -323,8 +323,52 @@ void AMDWraithPrismController::SendEffectCommand()
0xFF, 0xFF, 0xFF, 0xFF
};
int actual;
usb_buf[0x05] = effect_channel;
usb_buf[0x06] = speed;
usb_buf[0x07] = (direction ? 0x01 : 0x00) | (random_color ? 0x80 : 0x00);
usb_buf[0x08] = mode;
libusb_interrupt_transfer(dev, 0x04, usb_buf, 64, &actual, 0);
libusb_interrupt_transfer(dev, 0x83, usb_buf, 64, &actual, 0);
usb_buf[0x0A] = brightness;
usb_buf[0x0B] = red;
usb_buf[0x0C] = green;
usb_buf[0x0D] = blue;
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
}
void AMDWraithPrismController::SendChannelRemap(unsigned char ring_channel, unsigned char logo_channel, unsigned char fan_channel)
{
unsigned char usb_buf[] =
{
0x00,
0x51, 0xA0, 0x01, 0x00,
0x00, 0x03, 0x00, 0x00,
0x05, 0x06, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07,
0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
usb_buf[0x09] = logo_channel;
usb_buf[0x0A] = fan_channel;
for(int led = 0x0B; led <= 0x19; led++)
{
usb_buf[led] = ring_channel;
}
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
}
@@ -1,39 +1,157 @@
/*-----------------------------------------*\
| AMDWraithPrismController.h |
| |
| Definitions and types for AMD Wraith |
| Prism lighting controller |
| |
| Adam Honse (CalcProgrammer1) 12/6/2019 |
\*-----------------------------------------*/
#include <string>
#include <libusb-1.0/libusb.h>
/*---------------------------------------------------------*\
| 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.h>
#include "RGBController.h"
#define AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX 0xFF
#define AMD_WRAITH_PRISM_FAN_BRIGHTNESS_CYCLE_MAX 0x7F
static const unsigned char speed_values_fan_logo[][5] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* */
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, /* Static */
{ 0x96, 0x8C, 0x80, 0x6E, 0x68 }, /* Color Cycle */
{ 0x3C, 0x37, 0x31, 0x2C, 0x26 }, /* Breathing */
};
static const unsigned char mode_value_ring[] =
{
0xFF,
0x03,
0xFF,
0x00,
0x00,
0x00,
0x00,
0x05,
0xFF,
0xC3,
0x4A,
0x05
};
static const unsigned char speed_values_ring[][5] =
{
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, /* Static */
{ 0x3C, 0x37, 0x31, 0x2C, 0x26 }, /* Breathing */
{ 0x96, 0x8C, 0x80, 0x6E, 0x68 }, /* Color Cycle */
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* */
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* */
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* */
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* */
{ 0x72, 0x68, 0x64, 0x62, 0x61 }, /* Rainbow */
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* Bounce */
{ 0x77, 0x74, 0x6E, 0x6B, 0x67 }, /* Chase */
{ 0x77, 0x74, 0x6E, 0x6B, 0x67 }, /* Swirl */
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* Morse Code */
};
enum
{
AMD_WRAITH_PRISM_FAN_LOGO_MODE_STATIC = 0x01, /* Fan/Logo Static Mode */
AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE = 0x02, /* Fan/Logo Color Cycle Mode */
AMD_WRAITH_PRISM_FAN_LOGO_MODE_BREATHING = 0x03, /* Fan/Logo Breathing Mode */
};
enum
{
AMD_WRAITH_PRISM_EFFECT_CHANNEL_STATIC = 0x00, /* Static effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_BREATHING = 0x01, /* Breathing effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_COLOR_CYCLE = 0x02, /* Color cycle effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_LOGO_LED = 0x05, /* Logo LED effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_FAN_LED = 0x06, /* Fan LED effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_RAINBOW = 0x07, /* Rainbow effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_BOUNCE = 0x08, /* Bounce effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_CHASE = 0x09, /* Chase effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_SWIRL = 0x0A, /* Swirl effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_MORSE = 0x0B, /* Morse code effect channel */
AMD_WRAITH_PRISM_EFFECT_CHANNEL_DIRECT = 0xFF, /* Value for direct mode */
};
enum
{
AMD_WRAITH_PRISM_SPEED_SLOWEST = 0x00, /* Slowest speed */
AMD_WRAITH_PRISM_SPEED_SLOW = 0x01, /* Slow speed */
AMD_WRAITH_PRISM_SPEED_NORMAL = 0x02, /* Normal speed */
AMD_WRAITH_PRISM_SPEED_FAST = 0x03, /* Fast speed */
AMD_WRAITH_PRISM_SPEED_FASTEST = 0x04, /* Fastest speed */
};
class AMDWraithPrismController
{
public:
AMDWraithPrismController(libusb_device_handle* dev_handle);
AMDWraithPrismController(hid_device* dev_handle, const char* path);
~AMDWraithPrismController();
char* GetDeviceName();
std::string GetEffectChannelString(unsigned char channel);
std::string GetFirmwareVersionString();
std::string GetLocationString();
std::string GetSerialString();
unsigned char current_fan_mode;
unsigned char current_fan_speed;
unsigned char current_fan_brightness;
bool current_fan_random_color;
unsigned char current_logo_mode;
unsigned char current_logo_speed;
unsigned char current_logo_brightness;
bool current_logo_random_color;
unsigned char current_ring_mode;
unsigned char current_ring_speed;
unsigned char current_ring_brightness;
bool current_ring_direction;
bool current_ring_random_color;
void SetFanMode(unsigned char mode, unsigned char speed, unsigned char brightness, bool random_color);
void SetFanColor(unsigned char red, unsigned char green, unsigned char blue);
void SetLogoMode(unsigned char mode, unsigned char speed, unsigned char brightness, bool random_color);
void SetLogoColor(unsigned char red, unsigned char green, unsigned char blue);
void SetRingMode(unsigned char mode, unsigned char speed, unsigned char brightness, bool direction, bool random_color);
void SetRingColor(unsigned char red, unsigned char green, unsigned char blue);
void SendDirectPacket
(
unsigned char size,
unsigned char * led_ids,
RGBColor * colors
);
void SendEnableCommand(bool direct);
void SendApplyCommand();
private:
hid_device* dev;
std::string location;
void SetRingEffectChannel(unsigned char channel);
void SetFanColor(unsigned char red, unsigned char green, unsigned char blue);
void SetLogoColor(unsigned char red, unsigned char green, unsigned char blue);
void SetRingColor(unsigned char red, unsigned char green, unsigned char blue);
void SendEffectChannelUpdate
(
unsigned char effect_channel,
unsigned char speed,
bool direction,
bool random_color,
unsigned char mode,
unsigned char brightness,
unsigned char red,
unsigned char green,
unsigned char blue
);
void SendEnableCommand();
void SendApplyCommand();
void SendEffectCommand();
private:
char device_name[32];
libusb_device_handle* dev;
void SendChannelRemap(unsigned char ring_channel, unsigned char logo_channel, unsigned char fan_channel);
};
@@ -1,11 +1,28 @@
#include "AMDWraithPrismController.h"
#include "RGBController.h"
#include "RGBController_AMDWraithPrism.h"
#include <vector>
#include <libusb-1.0/libusb.h>
/*---------------------------------------------------------*\
| 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 |
\*---------------------------------------------------------*/
#define AMD_WRAITH_PRISM_VID 0x2516
#define AMD_WRAITH_PRISM_PID 0x0051
#include <hidapi.h>
#include "Detector.h"
#include "AMDWraithPrismController.h"
#include "RGBController_AMDWraithPrism.h"
/*---------------------------------------------------------*\
| AMD Wraith Prism vendor ID |
\*---------------------------------------------------------*/
#define AMD_WRAITH_PRISM_VID 0x2516
/*---------------------------------------------------------*\
| AMD Wraith Prism product ID |
\*---------------------------------------------------------*/
#define AMD_WRAITH_PRISM_PID 0x0051
/******************************************************************************************\
* *
@@ -15,23 +32,17 @@
* *
\******************************************************************************************/
void DetectAMDWraithPrismControllers(std::vector<RGBController*>& rgb_controllers)
void DetectAMDWraithPrismControllers(hid_device_info* info, const std::string&)
{
libusb_context * ctx;
libusb_init(&ctx);
hid_device* dev = hid_open_path(info->path);
//Look for AMD Wraith Prism
libusb_device_handle * dev = libusb_open_device_with_vid_pid(ctx, AMD_WRAITH_PRISM_VID, AMD_WRAITH_PRISM_PID);
if( dev )
if(dev)
{
libusb_detach_kernel_driver(dev, 1);
libusb_claim_interface(dev, 1);
AMDWraithPrismController* controller = new AMDWraithPrismController(dev);
AMDWraithPrismController* controller = new AMDWraithPrismController(dev, info->path);
RGBController_AMDWraithPrism* rgb_controller = new RGBController_AMDWraithPrism(controller);
rgb_controllers.push_back(rgb_controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR_IP("AMD Wraith Prism", DetectAMDWraithPrismControllers, AMD_WRAITH_PRISM_VID, AMD_WRAITH_PRISM_PID, 1, 0xFF00);
@@ -0,0 +1,329 @@
/*---------------------------------------------------------*\
| 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"
/**------------------------------------------------------------------*\
@name AMD Wraith Prism
@category Cooler
@type USB
@save :o:
@direct :white_check_mark:
@effects :tools:
@detectors DetectAMDWraithPrismControllers
@comment The Wraith Prism comes with 2 cables but is only detectable
and controlable when using the USB cable. `Morse Code` and `Mirage`
modes have not been implemented. Saving to flash is supported by
the device but not yet implemented.
\*-------------------------------------------------------------------*/
RGBController_AMDWraithPrism::RGBController_AMDWraithPrism(AMDWraithPrismController* 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();
mode Direct;
Direct.name = "Direct";
Direct.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_DIRECT;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Direct.brightness_min = 0;
Direct.brightness_max = 0;
Direct.brightness = 0;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Breathing.speed_min = AMD_WRAITH_PRISM_SPEED_SLOWEST;
Breathing.speed_max = AMD_WRAITH_PRISM_SPEED_FASTEST;
Breathing.brightness_min = 0;
Breathing.brightness_max = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Breathing.brightness = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.speed = AMD_WRAITH_PRISM_SPEED_NORMAL;
Breathing.colors.resize(3);
modes.push_back(Breathing);
mode ColorCycle;
ColorCycle.name = "Spectrum Cycle";
ColorCycle.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_COLOR_CYCLE;
ColorCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
ColorCycle.speed_min = AMD_WRAITH_PRISM_SPEED_SLOWEST;
ColorCycle.speed_max = AMD_WRAITH_PRISM_SPEED_FASTEST;
ColorCycle.brightness_min = 0;
ColorCycle.brightness_max = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_CYCLE_MAX;
ColorCycle.brightness = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_CYCLE_MAX;
ColorCycle.color_mode = MODE_COLORS_NONE;
ColorCycle.speed = AMD_WRAITH_PRISM_SPEED_NORMAL;
modes.push_back(ColorCycle);
mode Rainbow;
Rainbow.name = "Rainbow Wave";
Rainbow.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
Rainbow.speed_min = AMD_WRAITH_PRISM_SPEED_SLOWEST;
Rainbow.speed_max = AMD_WRAITH_PRISM_SPEED_FASTEST;
Rainbow.brightness_min = 0;
Rainbow.brightness_max = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Rainbow.brightness = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX; //The Ring zone can not get brighter but Logo / Fan can
Rainbow.color_mode = MODE_COLORS_NONE;
Rainbow.speed = AMD_WRAITH_PRISM_SPEED_NORMAL;
modes.push_back(Rainbow);
mode Bounce;
Bounce.name = "Bounce";
Bounce.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_BOUNCE;
Bounce.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS;
Bounce.speed_min = AMD_WRAITH_PRISM_SPEED_SLOWEST;
Bounce.speed_max = AMD_WRAITH_PRISM_SPEED_FASTEST;
Bounce.brightness_min = 0;
Bounce.brightness_max = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Bounce.brightness = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX; //The Ring zone can not get brighter but Logo / Fan can
Bounce.color_mode = MODE_COLORS_NONE;
Bounce.speed = AMD_WRAITH_PRISM_SPEED_NORMAL;
modes.push_back(Bounce);
mode Chase;
Chase.name = "Chase";
Chase.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_CHASE;
Chase.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Chase.speed_min = AMD_WRAITH_PRISM_SPEED_SLOWEST;
Chase.speed_max = AMD_WRAITH_PRISM_SPEED_FASTEST;
Chase.brightness_min = 0;
Chase.brightness_max = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Chase.brightness = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Chase.color_mode = MODE_COLORS_MODE_SPECIFIC;
Chase.speed = AMD_WRAITH_PRISM_SPEED_NORMAL;
Chase.colors.resize(3);
modes.push_back(Chase);
mode Swirl;
Swirl.name = "Swirl";
Swirl.value = AMD_WRAITH_PRISM_EFFECT_CHANNEL_SWIRL;
Swirl.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Swirl.speed_min = AMD_WRAITH_PRISM_SPEED_SLOWEST;
Swirl.speed_max = AMD_WRAITH_PRISM_SPEED_FASTEST;
Swirl.brightness_min = 0;
Swirl.brightness_max = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Swirl.brightness = AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX;
Swirl.color_mode = MODE_COLORS_MODE_SPECIFIC;
Swirl.speed = AMD_WRAITH_PRISM_SPEED_NORMAL;
Swirl.colors.resize(3);
modes.push_back(Swirl);
SetupZones();
}
RGBController_AMDWraithPrism::~RGBController_AMDWraithPrism()
{
delete controller;
}
void RGBController_AMDWraithPrism::SetupZones()
{
/*---------------------------------------------------------*\
| LED maps |
\*---------------------------------------------------------*/
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 };
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
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);
zone fan_zone;
fan_zone.name = "Fan";
fan_zone.type = ZONE_TYPE_SINGLE;
fan_zone.leds_min = 1;
fan_zone.leds_max = 1;
fan_zone.leds_count = 1;
fan_zone.matrix_map = NULL;
zones.push_back(fan_zone);
zone ring_zone;
ring_zone.name = "Ring";
ring_zone.type = ZONE_TYPE_LINEAR;
ring_zone.leds_min = 14;
ring_zone.leds_max = 14;
ring_zone.leds_count = 14;
ring_zone.matrix_map = NULL;
zones.push_back(ring_zone);
/*---------------------------------------------------------*\
| Set up LEDs |
\*---------------------------------------------------------*/
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];
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];
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];
leds.push_back(ring_led);
}
SetupColors();
}
void RGBController_AMDWraithPrism::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AMDWraithPrism::DeviceUpdateLEDs()
{
if(modes[active_mode].color_mode == MODE_COLORS_PER_LED)
{
unsigned char led_ids[15];
RGBColor color_buf[15];
unsigned int leds_count = 0;
for(unsigned int led_idx = 0; led_idx < colors.size(); led_idx++)
{
led_ids[leds_count] = (unsigned char)leds[led_idx].value;
color_buf[leds_count] = colors[led_idx];
leds_count++;
if(leds_count >= 15)
{
controller->SendDirectPacket(15, led_ids, color_buf);
leds_count = 0;
}
}
if(leds_count > 0)
{
controller->SendDirectPacket(leds_count, led_ids, color_buf);
}
}
else if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC)
{
unsigned char red = RGBGetRValue(modes[active_mode].colors[0]);
unsigned char grn = RGBGetGValue(modes[active_mode].colors[0]);
unsigned char blu = RGBGetBValue(modes[active_mode].colors[0]);
controller->SetLogoColor(red, grn, blu);
red = RGBGetRValue(modes[active_mode].colors[1]);
grn = RGBGetGValue(modes[active_mode].colors[1]);
blu = RGBGetBValue(modes[active_mode].colors[1]);
controller->SetFanColor(red, grn, blu);
red = RGBGetRValue(modes[active_mode].colors[2]);
grn = RGBGetGValue(modes[active_mode].colors[2]);
blu = RGBGetBValue(modes[active_mode].colors[2]);
controller->SetRingColor(red, grn, blu);
}
else
{
controller->SetLogoColor(0, 0, 0);
controller->SetFanColor(0, 0, 0);
controller->SetRingColor(0, 0, 0);
}
}
void RGBController_AMDWraithPrism::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AMDWraithPrism::UpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
void RGBController_AMDWraithPrism::DeviceUpdateMode()
{
bool random = (modes[active_mode].color_mode == MODE_COLORS_RANDOM);
switch(modes[active_mode].value)
{
case AMD_WRAITH_PRISM_EFFECT_CHANNEL_DIRECT:
controller->SendEnableCommand(true);
controller->SendApplyCommand();
break;
case AMD_WRAITH_PRISM_EFFECT_CHANNEL_COLOR_CYCLE:
controller->SendEnableCommand(false);
controller->SetRingMode(modes[active_mode].value, modes[active_mode].speed, modes[active_mode].brightness, modes[active_mode].direction, random);
controller->SetFanMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE, modes[active_mode].speed, modes[active_mode].brightness, random);
controller->SetLogoMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE, modes[active_mode].speed, modes[active_mode].brightness, random);
break;
case AMD_WRAITH_PRISM_EFFECT_CHANNEL_RAINBOW:
case AMD_WRAITH_PRISM_EFFECT_CHANNEL_BOUNCE:
controller->SendEnableCommand(false);
controller->SetRingMode(modes[active_mode].value, modes[active_mode].speed, modes[active_mode].brightness, modes[active_mode].direction, random);
controller->SetFanMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE, modes[active_mode].speed, (modes[active_mode].brightness >> 1), random);
controller->SetLogoMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE, modes[active_mode].speed, (modes[active_mode].brightness >> 1), random);
break;
case AMD_WRAITH_PRISM_EFFECT_CHANNEL_BREATHING:
controller->SendEnableCommand(false);
controller->SetRingMode(modes[active_mode].value, modes[active_mode].speed, modes[active_mode].brightness, modes[active_mode].direction, random);
controller->SetFanMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_BREATHING, modes[active_mode].speed, modes[active_mode].brightness, random);
controller->SetLogoMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_BREATHING, modes[active_mode].speed, modes[active_mode].brightness, random);
break;
default:
if(random)
{
controller->SendEnableCommand(false);
controller->SetRingMode(modes[active_mode].value, modes[active_mode].speed, modes[active_mode].brightness, modes[active_mode].direction, random);
controller->SetFanMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE, modes[active_mode].speed, modes[active_mode].brightness, random);
controller->SetLogoMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_COLOR_CYCLE, modes[active_mode].speed, modes[active_mode].brightness, random);
}
else
{
controller->SendEnableCommand(false);
controller->SetRingMode(modes[active_mode].value, modes[active_mode].speed, modes[active_mode].brightness, modes[active_mode].direction, random);
controller->SetFanMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_STATIC, modes[active_mode].speed, modes[active_mode].brightness, random);
controller->SetLogoMode(AMD_WRAITH_PRISM_FAN_LOGO_MODE_STATIC, modes[active_mode].speed, modes[active_mode].brightness, random);
}
break;
}
DeviceUpdateLEDs();
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| 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"
class RGBController_AMDWraithPrism : public RGBController
{
public:
RGBController_AMDWraithPrism(AMDWraithPrismController* controller_ptr);
~RGBController_AMDWraithPrism();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AMDWraithPrismController* controller;
};
@@ -0,0 +1,216 @@
/*---------------------------------------------------------*\
| 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"
#include "StringUtils.h"
using namespace std::chrono_literals;
AOCKeyboardController::AOCKeyboardController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
AOCKeyboardController::~AOCKeyboardController()
{
hid_close(dev);
}
std::string AOCKeyboardController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCKeyboardController::GetDeviceName()
{
return(name);
}
std::string AOCKeyboardController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_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,111 @@
/*---------------------------------------------------------*\
| 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.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, std::string dev_name);
~AOCKeyboardController();
std::string GetDeviceLocation();
std::string GetDeviceName();
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;
std::string name;
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,45 @@
/*---------------------------------------------------------*\
| 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_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, name);
RGBController_AOCKeyboard* rgb_controller = new RGBController_AOCKeyboard(controller);
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, 0, 10, 57, 72, 87,
/* LSFT \ Z X C V B N M , . / RSFT ARWU NP1 NP2 NP3 NPEN */
30, 0, 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 = controller->GetDeviceName();
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,136 @@
/*---------------------------------------------------------*\
| 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"
#include "StringUtils.h"
AOCMouseController::AOCMouseController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
AOCMouseController::~AOCMouseController()
{
hid_close(dev);
}
std::string AOCMouseController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCMouseController::GetDeviceName()
{
return(name);
}
std::string AOCMouseController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_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,84 @@
/*---------------------------------------------------------*\
| 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.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, std::string dev_name);
~AOCMouseController();
std::string GetDeviceLocation();
std::string GetDeviceName();
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;
std::string name;
};
@@ -0,0 +1,43 @@
/*---------------------------------------------------------*\
| 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_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, name);
RGBController_AOCMouse* rgb_controller = new RGBController_AOCMouse(controller);
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 = controller->GetDeviceName();
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,117 @@
/*---------------------------------------------------------*\
| 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"
#include "StringUtils.h"
AOCMousematController::AOCMousematController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
AOCMousematController::~AOCMousematController()
{
hid_close(dev);
}
std::string AOCMousematController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCMousematController::GetDeviceName()
{
return(name);
}
std::string AOCMousematController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_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,83 @@
/*---------------------------------------------------------*\
| 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.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, std::string dev_name);
~AOCMousematController();
std::string GetDeviceLocation();
std::string GetDeviceName();
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;
std::string name;
};
@@ -0,0 +1,43 @@
/*---------------------------------------------------------*\
| 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_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, name);
RGBController_AOCMousemat* rgb_controller = new RGBController_AOCMousemat(controller);
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 = controller->GetDeviceName();
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;
};
@@ -0,0 +1,587 @@
/*---------------------------------------------------------*\
| 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 "RGBController.h"
#include "ResourceManager.h"
#include "SettingsManager.h"
#include "StringUtils.h"
#include "ASRockPolychromeUSBController.h"
#include "dmiinfo.h"
#define POLYCHROME_USB_READ_ZONE_CONFIG 0x11
#define POLYCHROME_USB_READ_HEADER 0x14
#define POLYCHROME_USB_WRITE_HEADER 0x15
#define POLYCHROME_USB_SET_ZONE 0x10
#define POLYCHROME_USB_INITIAL_CHUNK 0xE3
#define POLYCHROME_USB_SEND_CHUNK 0xE4
#define POLYCHROME_USB_INIT 0xA4
#define POLYCHROME_USB_COMMIT 0x12
const char* polychrome_USB_zone_names[] =
{
"RGB LED 1 Header",
"RGB LED 2 Header",
"Addressable Header 1",
"Addressable Header 2",
"PCH",
"IO Cover",
"PCB",
"Addressable Header 3/Audio",
};
PolychromeUSBController::PolychromeUSBController(hid_device* dev_handle, const char* path)
{
DMIInfo dmi;
dev = dev_handle;
device_name = "ASRock " + dmi.getMainboard();
location = path;
SetDeviceInfo();
}
PolychromeUSBController::~PolychromeUSBController()
{
}
unsigned int PolychromeUSBController::GetChannelCount()
{
return((unsigned int)device_info.size());
}
std::string PolychromeUSBController::GetDeviceLocation()
{
return("HID: " + location);
}
std::string PolychromeUSBController::GetDeviceName()
{
return(device_name);
}
std::string PolychromeUSBController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_string));
}
void PolychromeUSBController::SetDeviceInfo()
{
PolychromeDeviceInfo newdev_info;
ReadConfigTables();
/*--------------------------------------------------*\
| Read settings to check for configured RGSwap |
\*--------------------------------------------------*/
const std::string detector_name = "ASRock Polychrome USB";
const std::string json_rgswap = "RGSwap";
SettingsManager* settings_manager = ResourceManager::get()->GetSettingsManager();
json device_settings = settings_manager->GetSettings(detector_name);
/*---------------------------------------------------------*\
| Get RGSwap settings from the settings manager |
| If RGSwap settings are not found then write them out |
| Onboard leds are set to their existing values, |
| Addressable RGB and RGB headers are set to false |
\*---------------------------------------------------------*/
if(!device_settings.contains(json_rgswap))
{
device_settings[json_rgswap][polychrome_USB_zone_names[0]] = false;
device_settings[json_rgswap][polychrome_USB_zone_names[1]] = false;
device_settings[json_rgswap][polychrome_USB_zone_names[2]] = false;
device_settings[json_rgswap][polychrome_USB_zone_names[3]] = false;
device_settings[json_rgswap][polychrome_USB_zone_names[4]] = ((configtable[8] >> 4) & 1) ? true : false;
device_settings[json_rgswap][polychrome_USB_zone_names[5]] = ((configtable[8] >> 5) & 1) ? true : false;
device_settings[json_rgswap][polychrome_USB_zone_names[6]] = ((configtable[8] >> 6) & 1) ? true : false;
device_settings[json_rgswap][polychrome_USB_zone_names[7]] = false;
settings_manager->SetSettings(detector_name, device_settings);
settings_manager->SaveSettings();
}
else
{
for(std::size_t idx = 0; idx < 8; idx++)
{
if(device_settings[json_rgswap].contains(polychrome_USB_zone_names[idx]))
{
rgswapconfig[idx] = device_settings[json_rgswap][polychrome_USB_zone_names[idx]];
}
}
}
bool rgswap_final[8] = {0};
for (unsigned int zonecnt = 0; zonecnt < POLYCHROME_USB_ZONE_MAX_NUM; zonecnt++)
{
if(configtable[zonecnt] == 0x1E || !((configtable[9] >> zonecnt) & 1))
{
/*-----------------------------------------------------------------------*\
| If we don't have this device type (0x1E) we will skip it and continue. |
| Or if the device is not available we skip it and continue |
\*-----------------------------------------------------------------------*/
continue;
}
newdev_info.num_leds = configtable[zonecnt];
newdev_info.rgswap = ((configtable[8] >> zonecnt) & 1) || rgswapconfig[zonecnt];
rgswap_final[zonecnt] = newdev_info.rgswap;
/*--------------------------------------------------------------------------------------------------*\
| We will need to know what zone type this is, so that we can look up the name and make calls later. |
\*--------------------------------------------------------------------------------------------------*/
newdev_info.zone_type = zonecnt;
switch (zonecnt)
{
/*-----------------------------------------*\
| Type: Addressable, configurable |
\*-----------------------------------------*/
case POLYCHROME_USB_ZONE_ARGB1:
case POLYCHROME_USB_ZONE_ARGB2:
/*---------------------------------------------*\
| The last led channel is allocated to a |
| third ARGB header on some newer motherboards |
\*---------------------------------------------*/
case POLYCHROME_USB_ZONE_AUDIO:
newdev_info.device_type = PolychromeDeviceType::ADDRESSABLE;
break;
/*-----------------------------------------*\
| Type: Addressable, not configurable |
\*-----------------------------------------*/
case POLYCHROME_USB_ZONE_PCH:
case POLYCHROME_USB_ZONE_IOCOVER:
case POLYCHROME_USB_ZONE_PCB:
newdev_info.device_type = PolychromeDeviceType::FIXED;
break;
/*-----------------------------------------*\
| Type: Fixed |
\*-----------------------------------------*/
case POLYCHROME_USB_ZONE_RGB1:
case POLYCHROME_USB_ZONE_RGB2:
default:
newdev_info.device_type = PolychromeDeviceType::FIXED;
break;
}
device_info.push_back(newdev_info);
}
// set rgswap to match our settings
WriteRGSwap(rgswap_final[0], rgswap_final[1], rgswap_final[2], rgswap_final[3], rgswap_final[4], rgswap_final[5], rgswap_final[6], rgswap_final[7]);
}
void PolychromeUSBController::ResizeZone(int zone, int new_size)
{
unsigned char zonecfg[POLYCHROME_USB_ZONE_MAX_NUM];
memset(zonecfg, POLYCHROME_USB_ZONE_UNAVAILABLE, POLYCHROME_USB_ZONE_MAX_NUM);
configtable[zone] = new_size;
for(unsigned int i = 0; i < POLYCHROME_USB_ZONE_MAX_NUM; i++)
{
zonecfg[i] = configtable[i];
}
unsigned char zonecmd = POLYCHROME_USB_LEDCOUNT_CFG;
WriteHeader(zonecmd, zonecfg, sizeof(zonecfg));
}
void PolychromeUSBController::WriteZone
(
unsigned char zone,
unsigned char mode,
unsigned char speed,
RGBColor rgb,
bool allzone = false
)
{
/*----------------------------------------------------*\
| Get the device info so we can look up the zone type. |
\*----------------------------------------------------*/
PolychromeDeviceInfo device_info = GetPolychromeDevices()[zone];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00 |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_SET_ZONE;
usb_buf[0x03] = device_info.zone_type;
usb_buf[0x04] = mode;
if(device_info.rgswap)
{
usb_buf[0x05] = RGBGetRValue(rgb);
usb_buf[0x06] = RGBGetGValue(rgb);
}
else
{
usb_buf[0x05] = RGBGetGValue(rgb);
usb_buf[0x06] = RGBGetRValue(rgb);
}
usb_buf[0x07] = RGBGetBValue(rgb);
usb_buf[0x08] = speed;
usb_buf[0x09] = 0xFF;
usb_buf[0x10] = allzone;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
};
void PolychromeUSBController::WriteAllZones
(
const std::vector<PolychromeZoneInfo>& /*zones_info*/,
const std::vector<zone>& zones
)
{
std::vector<unsigned char> combined_leds_rgb;
std::size_t max_led_count = 0;
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++){
PolychromeDeviceInfo device_info = GetPolychromeDevices()[zone_idx];
for(std::size_t led_idx = 0; led_idx < zones[zone_idx].leds_count; led_idx++)
{
if(device_info.rgswap)
{
combined_leds_rgb.push_back(RGBGetRValue(zones[zone_idx].colors[led_idx]));
combined_leds_rgb.push_back(RGBGetGValue(zones[zone_idx].colors[led_idx]));
}
else
{
combined_leds_rgb.push_back(RGBGetGValue(zones[zone_idx].colors[led_idx]));
combined_leds_rgb.push_back(RGBGetRValue(zones[zone_idx].colors[led_idx]));
}
combined_leds_rgb.push_back(RGBGetBValue(zones[zone_idx].colors[led_idx]));
}
max_led_count += zones[zone_idx].leds_max;
}
combined_leds_rgb.resize((max_led_count + 8) * 3, 0);
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up initial message packet with leading 00 |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_SET_ZONE;
usb_buf[0x03] = 0xFF;
usb_buf[0x04] = POLYCHROME_USB_INITIAL_CHUNK;
usb_buf[0x07] = 0xFF;
usb_buf[0x40] = 0x65;
std::size_t initial_led_offset = 9;
std::size_t message_byte_capacity = 54; // 18 leds * 3 bytes
std::size_t led_byte_idx = 0;
while(led_byte_idx < combined_leds_rgb.size())
{
for(std::size_t byte_idx = 0; byte_idx < message_byte_capacity; byte_idx++)
{
usb_buf[initial_led_offset + byte_idx] = combined_leds_rgb[led_byte_idx++];
if(led_byte_idx >= combined_leds_rgb.size())
{
break;
}
}
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00 |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_SET_ZONE;
usb_buf[0x03] = 0xFF;
usb_buf[0x04] = POLYCHROME_USB_SEND_CHUNK;
usb_buf[0x40] = 0x65;
initial_led_offset = 5;
message_byte_capacity = 57; // 19 leds * 3 bytes
}
}
/*-----------------------------------------------------*\
| If reset is true, rgswap is set to the values |
| specified in the settings file, otherwise set to off |
\*-----------------------------------------------------*/
void PolychromeUSBController::SetRGSwap(bool reset)
{
if(reset)
{
bool rg[8] = {0};
std::vector<PolychromeDeviceInfo> devices_info = GetPolychromeDevices();
for (PolychromeDeviceInfo device : devices_info)
{
rg[device.zone_type] = device.rgswap;
}
WriteRGSwap(rg[0], rg[1], rg[2], rg[3], rg[4], rg[5], rg[6], rg[7]);
}
else
{
/*-----------------------------------------------------------------*\
| Disable RGSwap as it causes flashing on each update in direct mode|
\*-----------------------------------------------------------------*/
WriteRGSwap(0, 0, 0, 0, 0, 0, 0, 0);
}
}
void PolychromeUSBController::WriteRGSwap
(
bool hdr0,
bool hdr1,
bool ahdr0,
bool ahdr1,
bool pch,
bool io,
bool pcb,
bool chnl8
)
{
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);
}
void PolychromeUSBController::WriteHeader
(
unsigned char cfg,
unsigned char* configstring,
unsigned int configsize
)
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00 |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_WRITE_HEADER;
usb_buf[0x03] = cfg;
memcpy(&usb_buf[4], configstring, configsize);
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
}
PolychromeZoneInfo PolychromeUSBController::GetZoneConfig(unsigned char zone)
{
/*-----------------------------------------------------*\
| Get the device info so we can look up the zone type |
\*-----------------------------------------------------*/
PolychromeDeviceInfo device_info = GetPolychromeDevices()[zone];
unsigned char usb_buf[65];
PolychromeZoneInfo zoneinfo;
unsigned char r;
unsigned char g;
unsigned char b;
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up config table request packet |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_READ_ZONE_CONFIG;
usb_buf[0x03] = device_info.zone_type;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Read response |
\*-----------------------------------------------------*/
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];
/*------------------------------------------------------*\
| Set Chroma mode (0xE2) & Per-Led mode (0xE3) as Direct |
\*------------------------------------------------------*/
zoneinfo.mode = usb_buf[0x04] != 0xE2 && usb_buf[0x04] != 0xE3 && usb_buf[0x04] < 0x0F ? usb_buf[0x04] : 0x0F;
/*------------------------------------------------------*\
| G & R are swapped since RGSwap is disabled on init, |
| Unless overwritten in settings |
\*------------------------------------------------------*/
if(device_info.rgswap)
{
zoneinfo.color = ToRGBColor(r,g,b);
}
else
{
zoneinfo.color = ToRGBColor(g,r,b);
}
zoneinfo.speed = usb_buf[0x08];
zoneinfo.zone = usb_buf[0x03];
return(zoneinfo);
}
void PolychromeUSBController::ReadConfigTables()
{
unsigned char usb_buf[65];
unsigned char maxzoneleds[8];
unsigned char rgswap;
unsigned char header1;
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up max led config table request packet |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_READ_HEADER;
usb_buf[0x03] = POLYCHROME_USB_LEDCOUNT_CFG;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Read response |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
hid_read(dev, usb_buf, 64);
/*-----------------------------------------------------*\
| Reads in format: RGB1, RGB2, ARGB1, ARGB2, PCH, IO, |
| PCB, AUDIO/ARGB3 |
\*-----------------------------------------------------*/
memcpy(&maxzoneleds,&usb_buf[0x04],8);
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up RGB Swap table request packet |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_READ_HEADER;
usb_buf[0x03] = POLYCHROME_USB_RGSWAP_CFG;
hid_write(dev, usb_buf, 65);
memset(usb_buf, 0x00, sizeof(usb_buf));
hid_read(dev, usb_buf, 64);
/*-----------------------------------------------------*\
| Reads bitwise in format: AUDIO/ARGB3, PCB, IO, PCH, |
| ARGB2,ARGB1, RGB2, RGB1 if available |
\*-----------------------------------------------------*/
rgswap=usb_buf[4];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Header1 config table request packet |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_READ_HEADER;
usb_buf[0x03] = 0x01;
hid_write(dev, usb_buf, 64);
memset(usb_buf, 0x00, sizeof(usb_buf));
hid_read(dev, usb_buf, 64);
/*-----------------------------------------------------*\
| Reads bitwise in format: AUDIO/ARGB3, PCB, IO, PCH, |
| ARGB2,ARGB1, RGB2, RGB1 if available |
\*-----------------------------------------------------*/
header1=usb_buf[4];
memcpy(configtable,&maxzoneleds,8);
configtable[8]=rgswap;
configtable[9]=header1;
return;
}
void PolychromeUSBController::Commit()
{
/*-----------------------------------------------------*\
| Saves all Writes in Device - Will keep after powerup |
\*-----------------------------------------------------*/
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00 |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_COMMIT;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
};
const std::vector<PolychromeDeviceInfo>& PolychromeUSBController::GetPolychromeDevices() const
{
return(device_info);
};
@@ -0,0 +1,166 @@
/*---------------------------------------------------------*\
| 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.h>
#include "RGBController.h"
/*----------------------------------------------------------------------------------------------*\
| Definitions for Polychrome USB |
\*----------------------------------------------------------------------------------------------*/
#define POLYCHROME_USB_NUM_MODES 16 /* Number of Polychrome USB modes */
enum
{
POLYCHROME_USB_MODE_OFF = 0x00, /* OFF mode */
POLYCHROME_USB_MODE_STATIC = 0x01, /* Static color mode */
POLYCHROME_USB_MODE_BREATHING = 0x02, /* Breathing effect mode */
POLYCHROME_USB_MODE_STROBE = 0x03, /* Strobe effect mode */
POLYCHROME_USB_MODE_SPECTRUM_CYCLE = 0x04, /* Spectrum Cycle effect mode */
POLYCHROME_USB_MODE_RANDOM = 0x05, /* Random effect mode */
POLYCHROME_USB_MODE_MUSIC = 0x06, /* Random effect mode */
POLYCHROME_USB_MODE_WAVE = 0x07, /* Wave effect mode */
POLYCHROME_USB_MODE_SPRING = 0x08, /* Spring effect mode */
POLYCHROME_USB_MODE_STACK = 0x09, /* Stack effect mode */
POLYCHROME_USB_MODE_CRAM = 0x0A, /* Cram effect mode */
POLYCHROME_USB_MODE_SCAN = 0x0B, /* Scan effect mode */
POLYCHROME_USB_MODE_NEON = 0x0C, /* Neon effect mode */
POLYCHROME_USB_MODE_WATER = 0x0D, /* Water effect mode */
POLYCHROME_USB_MODE_RAINBOW = 0x0E, /* Rainbow effect mode */
POLYCHROME_USB_MODE_DIRECT = 0x0F, /* CHROMA CONNECT effect mode */
};
enum
{
POLYCHROME_USB_SPEED_MIN = 0xFF, /* Slowest speed */
POLYCHROME_USB_SPEED_DEFAULT = 0xE0, /* Default speed */
POLYCHROME_USB_SPEED_MAX = 0x00, /* Fastest speed */
};
enum
{
POLYCHROME_USB_ZONE_MAX_NUM = 0x08, /* Total Max number of zones */
POLYCHROME_USB_ZONE_ADDRESSABLE_MAX = 0x64, /* Maxinum number of ARGB LEDs */
};
enum
{
POLYCHROME_USB_LEDCOUNT_CFG = 0x02, // Config for LED Count
POLYCHROME_USB_RGSWAP_CFG = 0x03, // Config for RGSWAP
POLYCHROME_USB_ZONE_UNAVAILABLE = 0x1E, // Value from LEDCOUNT CFG if zone not present
};
extern const char* polychrome_USB_zone_names[];
enum
{
POLYCHROME_USB_ZONE_RGB1 = 0x00, // RGB Header 1
POLYCHROME_USB_ZONE_RGB2 = 0X01, // RGB Header 2
POLYCHROME_USB_ZONE_ARGB1 = 0X02, // ARGB Header 1
POLYCHROME_USB_ZONE_ARGB2 = 0X03, // ARGB Header 2
POLYCHROME_USB_ZONE_PCH = 0X04, // PCH
POLYCHROME_USB_ZONE_IOCOVER = 0X05, // IOCOVER
POLYCHROME_USB_ZONE_PCB = 0X06, // PCB - Could be mixed swapped with 0x07
POLYCHROME_USB_ZONE_AUDIO = 0X07 // AUDIO/ARGB Header 3
};
enum class PolychromeDeviceType
{
FIXED,
ADDRESSABLE,
};
struct PolychromeZoneInfo
{
unsigned char mode;
unsigned char zone;
unsigned char speed;
RGBColor color;
};
struct PolychromeDeviceInfo
{
unsigned char effect_channel;
unsigned char num_leds;
unsigned char zone_type;
bool rgswap;
PolychromeDeviceType device_type;
};
class PolychromeUSBController
{
public:
unsigned char zone_led_count[8];
PolychromeUSBController(hid_device* dev_handle, const char* path);
~PolychromeUSBController();
unsigned int GetChannelCount();
std::string GetDeviceLocation();
std::string GetDeviceName();
const std::vector<PolychromeDeviceInfo>& GetPolychromeDevices() const;
std::string GetSerialString();
PolychromeZoneInfo GetZoneConfig (unsigned char zone);
void WriteZone
(
unsigned char zone,
unsigned char mode,
unsigned char speed,
RGBColor rgb,
bool allzone
);
void WriteAllZones
(
const std::vector<PolychromeZoneInfo> &zones_info,
const std::vector<zone> &zones
);
void WriteHeader
(
unsigned char cfg,
unsigned char* configstring,
unsigned int configsize
);
void ResizeZone(int zone, int new_size);
void SetRGSwap(bool reset);
protected:
hid_device* dev;
std::vector<PolychromeDeviceInfo> device_info;
std::string location;
void WriteRGSwap
(
bool hdr0,
bool hdr1,
bool ahdr0,
bool ahdr1,
bool pch,
bool io,
bool pcb,
bool chnl8
);
private:
std::string device_name;
unsigned char configtable[12];
bool rgswapconfig[8] = { 0 };
void SetDeviceInfo();
void ReadConfigTables();
void Commit();
};
@@ -0,0 +1,42 @@
/*---------------------------------------------------------*\
| 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 <hidapi.h>
#include "Detector.h"
#include "ASRockPolychromeUSBController.h"
#include "RGBController_ASRockPolychromeUSB.h"
/*---------------------------------------------------------*\
| ASRock vendor ID |
\*---------------------------------------------------------*/
#define ASROCK_VID 0x26CE
/*---------------------------------------------------------*\
| ASRock product ID |
\*---------------------------------------------------------*/
#define ASROCK_MOTHERBOARD_1_PID 0x01A2
#define ASROCK_DESKMINI_ADDRESSABLE_LED_STRIP_PID 0x01A6
void DetectPolychromeUSBControllers(hid_device_info* info, const std::string& /*name*/)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
PolychromeUSBController* controller = new PolychromeUSBController(dev, info->path);
RGBController_PolychromeUSB* rgb_controller = new RGBController_PolychromeUSB(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
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);
@@ -0,0 +1,361 @@
/*---------------------------------------------------------*\
| 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 <string.h>
#include "RGBController_ASRockPolychromeUSB.h"
#define ASROCK_USB_MAX_ZONES 8
#define ASROCK_ADDRESSABLE_MAX_LEDS 100
/**------------------------------------------------------------------*\
@name ASrock Polychrome USB
@category Motherboard
@type USB
@save :robot:
@direct :x:
@effects :white_check_mark:
@detectors DetectPolychromeUSBControllers
@comment ASRock Polychrome controllers will save with each update.
\*-------------------------------------------------------------------*/
RGBController_PolychromeUSB::RGBController_PolychromeUSB(PolychromeUSBController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetDeviceName();
description = "ASRock Polychrome USB Device";
vendor = "ASRock";
type = DEVICE_TYPE_MOTHERBOARD;
location = controller->GetDeviceLocation();
mode Off;
Off.name = "Off";
Off.value = POLYCHROME_USB_MODE_OFF;
Off.flags = 0;
Off.color_mode = MODE_COLORS_NONE;
modes.push_back(Off);
mode Static;
Static.name = "Static";
Static.value = POLYCHROME_USB_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Static.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Static);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = POLYCHROME_USB_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR;
Breathing.speed_min = POLYCHROME_USB_SPEED_MIN;
Breathing.speed_max = POLYCHROME_USB_SPEED_MAX;
Breathing.speed = POLYCHROME_USB_SPEED_DEFAULT;
Breathing.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Breathing);
mode Strobe;
Strobe.name = "Strobe";
Strobe.value = POLYCHROME_USB_MODE_STROBE;
Strobe.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR;
Strobe.speed_min = POLYCHROME_USB_SPEED_MIN;
Strobe.speed_max = POLYCHROME_USB_SPEED_MAX;
Strobe.speed = POLYCHROME_USB_SPEED_DEFAULT;
Strobe.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Strobe);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = POLYCHROME_USB_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED;
SpectrumCycle.speed_min = POLYCHROME_USB_SPEED_MIN;
SpectrumCycle.speed_max = POLYCHROME_USB_SPEED_MAX;
SpectrumCycle.speed = POLYCHROME_USB_SPEED_DEFAULT;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
modes.push_back(SpectrumCycle);
mode Random;
Random.name = "Random";
Random.value = POLYCHROME_USB_MODE_RANDOM;
Random.flags = MODE_FLAG_HAS_SPEED;
Random.speed_min = POLYCHROME_USB_SPEED_MIN;
Random.speed_max = POLYCHROME_USB_SPEED_MAX;
Random.speed = POLYCHROME_USB_SPEED_DEFAULT;
Random.color_mode = MODE_COLORS_NONE;
modes.push_back(Random);
mode Music;
Random.name = "Music";
Random.value = POLYCHROME_USB_MODE_RANDOM;
Random.flags = MODE_FLAG_HAS_BRIGHTNESS;
Random.color_mode = MODE_COLORS_NONE;
modes.push_back(Random);
mode Wave;
Wave.name = "Wave";
Wave.value = POLYCHROME_USB_MODE_WAVE;
Wave.flags = MODE_FLAG_HAS_SPEED;
Wave.speed_min = POLYCHROME_USB_SPEED_MIN;
Wave.speed_max = POLYCHROME_USB_SPEED_MAX;
Wave.speed = POLYCHROME_USB_SPEED_DEFAULT;
Wave.color_mode = MODE_COLORS_NONE;
modes.push_back(Wave);
mode Spring;
Spring.name = "Spring";
Spring.value = POLYCHROME_USB_MODE_SPRING;
Spring.flags = MODE_FLAG_HAS_SPEED;
Spring.speed_min = POLYCHROME_USB_SPEED_MIN;
Spring.speed_max = POLYCHROME_USB_SPEED_MAX;
Spring.speed = POLYCHROME_USB_SPEED_DEFAULT;
Spring.color_mode = MODE_COLORS_NONE;
modes.push_back(Spring);
mode Stack;
Stack.name = "Stack";
Stack.value = POLYCHROME_USB_MODE_STACK;
Stack.flags = MODE_FLAG_HAS_SPEED;
Stack.speed_min = POLYCHROME_USB_SPEED_MIN;
Stack.speed_max = POLYCHROME_USB_SPEED_MAX;
Stack.speed = POLYCHROME_USB_SPEED_DEFAULT;
Stack.color_mode = MODE_COLORS_NONE;
modes.push_back(Stack);
mode Cram;
Cram.name = "Cram";
Cram.value = POLYCHROME_USB_MODE_CRAM;
Cram.flags = MODE_FLAG_HAS_SPEED;
Cram.speed_min = POLYCHROME_USB_SPEED_MIN;
Cram.speed_max = POLYCHROME_USB_SPEED_MAX;
Cram.speed = POLYCHROME_USB_SPEED_DEFAULT;
Cram.color_mode = MODE_COLORS_NONE;
modes.push_back(Cram);
mode Scan;
Scan.name = "Scan";
Scan.value = POLYCHROME_USB_MODE_SCAN;
Scan.flags = MODE_FLAG_HAS_SPEED;
Scan.speed_min = POLYCHROME_USB_SPEED_MIN;
Scan.speed_max = POLYCHROME_USB_SPEED_MAX;
Scan.speed = POLYCHROME_USB_SPEED_DEFAULT;
Scan.color_mode = MODE_COLORS_NONE;
modes.push_back(Scan);
mode Neon;
Neon.name = "Neon";
Neon.value = POLYCHROME_USB_MODE_NEON;
Neon.flags = 0;
Neon.color_mode = MODE_COLORS_NONE;
modes.push_back(Neon);
mode Water;
Water.name = "Water";
Water.value = POLYCHROME_USB_MODE_WATER;
Water.flags = MODE_FLAG_HAS_SPEED;
Water.speed_min = POLYCHROME_USB_SPEED_MIN;
Water.speed_max = POLYCHROME_USB_SPEED_MAX;
Water.speed = POLYCHROME_USB_SPEED_DEFAULT;
Water.color_mode = MODE_COLORS_NONE;
modes.push_back(Water);
mode Rainbow;
Rainbow.name = "Rainbow";
Rainbow.value = POLYCHROME_USB_MODE_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_SPEED;
Rainbow.speed_min = POLYCHROME_USB_SPEED_MIN;
Rainbow.speed_max = POLYCHROME_USB_SPEED_MAX;
Rainbow.speed = POLYCHROME_USB_SPEED_DEFAULT;
Rainbow.color_mode = MODE_COLORS_NONE;
modes.push_back(Rainbow);
mode Direct;
Direct.name = "Direct";
Direct.value = POLYCHROME_USB_MODE_DIRECT;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
SetupZones();
}
void RGBController_PolychromeUSB::SetupZones()
{
/*-------------------------------------------------*\
| Clear any existing color/LED configuration |
\*-------------------------------------------------*/
leds.clear();
colors.clear();
zones.resize(controller->GetChannelCount());
/*-------------------------------------------------*\
| Set zones and leds |
\*-------------------------------------------------*/
for(unsigned int channel_idx = 0; channel_idx < zones.size(); channel_idx++)
{
PolychromeDeviceInfo device_info = controller->GetPolychromeDevices()[channel_idx];
zones[channel_idx].type = ZONE_TYPE_LINEAR;
if(device_info.device_type== PolychromeDeviceType::ADDRESSABLE)
{
zones[channel_idx].name = polychrome_USB_zone_names[device_info.zone_type];
zones[channel_idx].leds_min = 0;
zones[channel_idx].leds_max = ASROCK_ADDRESSABLE_MAX_LEDS;
zones[channel_idx].leds_count = device_info.num_leds;
}
else if(device_info.device_type==PolychromeDeviceType::FIXED)
{
zones[channel_idx].name = polychrome_USB_zone_names[device_info.zone_type];
zones[channel_idx].leds_min = device_info.num_leds;
zones[channel_idx].leds_max = device_info.num_leds;
zones[channel_idx].leds_count = device_info.num_leds;
}
for(unsigned int led_ch_idx = 0; led_ch_idx < zones[channel_idx].leds_count; led_ch_idx++)
{
led new_led;
new_led.name = zones[channel_idx].name;
new_led.name.append(", LED ");
new_led.name.append(std::to_string(led_ch_idx + 1));
new_led.value = channel_idx;
leds.push_back(new_led);
}
zones[channel_idx].matrix_map = NULL;
}
SetupColors();
/*---------------------------------------------------------*\
| Initialize zone info to track zone, speed, mode |
| B550 Boards have modes, speed for each zone |
\*---------------------------------------------------------*/
for (unsigned int channel_idx = 0; channel_idx < zones.size(); channel_idx++)
{
PolychromeZoneInfo zoneinfo;
zoneinfo = controller->GetZoneConfig(channel_idx);
zones_info.push_back(zoneinfo);
}
/*---------------------------------------------------------*\
| Initialize colors for each LED |
| We cannot currently get the individual led color so |
| we use the zone color in each zone to set all leds |
| !!TODO: in Per-Led mode, zone color is always black |
\*---------------------------------------------------------*/
for(std::size_t led_idx = 0; led_idx < leds.size(); led_idx++)
{
unsigned char led = (unsigned char)leds[led_idx].value;
colors[led_idx] = zones_info[led].color;
}
/*-------------------------------------------------*\
| Initialize active mode |
\*-------------------------------------------------*/
active_mode = zones_info.size() > 1 ? zones_info[0].mode : 0x0;
/*-----------------------------------------------------*\
| If in Direct mode, reset all Leds to match interface |
\*-----------------------------------------------------*/
if(active_mode == 0x0F)
{
controller->WriteAllZones(zones_info, zones);
}
}
void RGBController_PolychromeUSB::ResizeZone(int zone, int new_size)
{
zones[zone].leds_count = (unsigned char) new_size;
controller->ResizeZone(zones_info[zone].zone, new_size);
}
void RGBController_PolychromeUSB::DeviceUpdateLEDs()
{
if(POLYCHROME_USB_MODE_DIRECT == zones_info[0].mode )
{
controller->WriteAllZones(zones_info,zones);
return;
}
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
unsigned char set_mode = zones_info[zone_idx].mode;
if (set_mode>modes.size())
{
set_mode = active_mode;
}
controller->WriteZone((unsigned char)zone_idx, set_mode, zones_info[zone_idx].speed, zones[zone_idx].colors[0], false);
}
}
void RGBController_PolychromeUSB::UpdateZoneLEDs(int zone)
{
unsigned char set_mode=zones_info[zone].mode;
if(set_mode > modes.size())
{
set_mode = active_mode;
}
controller->WriteZone(zone, set_mode, zones_info[zone].speed, zones[zone].colors[0], false);
}
void RGBController_PolychromeUSB::UpdateSingleLED(int led)
{
unsigned int channel = leds[led].value;
unsigned char set_mode = zones_info[channel].mode;
if(set_mode > modes.size())
{
set_mode = active_mode;
}
controller->WriteZone(channel, set_mode, zones_info[channel].speed, zones[channel].colors[0], false);
}
unsigned char RGBController_PolychromeUSB::GetDeviceMode(unsigned char zone)
{
int dev_mode;
dev_mode = controller->GetZoneConfig(zone).mode;
active_mode = dev_mode;
return(active_mode);
}
void RGBController_PolychromeUSB::DeviceUpdateMode()
{
/*-----------------------------------------------------------------*\
| Disable RGSwap as it causes flashing on each update in direct mode|
| Otherwise, reset to values specified in settings.json |
\*-----------------------------------------------------------------*/
controller->SetRGSwap(modes[active_mode].name != "Direct");
for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
if(zones[zone_idx].leds_count > 0)
{
unsigned char set_mode =(unsigned char) modes[active_mode].value;
zones_info[zone_idx].mode =(unsigned char) modes[active_mode].value;
zones_info[zone_idx].speed =(unsigned char) modes[active_mode].speed;
if(set_mode > modes.size())
{
set_mode = active_mode;
}
controller->WriteZone(zone_idx, set_mode, zones_info[zone_idx].speed, zones[zone_idx].colors[0], false);
}
}
}
@@ -0,0 +1,38 @@
/*---------------------------------------------------------*\
| 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
#include "RGBController.h"
#include "ASRockPolychromeUSBController.h"
class RGBController_PolychromeUSB : public RGBController
{
public:
RGBController_PolychromeUSB(PolychromeUSBController* controller_ptr);
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
PolychromeUSBController* controller;
std::vector<PolychromeZoneInfo> zones_info;
unsigned char GetDeviceMode(unsigned char zone);
};
@@ -0,0 +1,124 @@
/*---------------------------------------------------------*\
| 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 "dmiinfo.h"
#include "LogManager.h"
#define ASROCK_ZONE_LED_COUNT_MESSAGE_EN "[%s] Zone %i LED count: %02d"
using namespace std::chrono_literals;
ASRockASRRGBSMBusController::ASRockASRRGBSMBusController(i2c_smbus_interface* bus, polychrome_dev_id dev)
{
this->bus = bus;
this->dev = dev;
DMIInfo dmi;
device_name = "ASRock " + dmi.getMainboard();
}
ASRockASRRGBSMBusController::~ASRockASRRGBSMBusController()
{
}
std::string ASRockASRRGBSMBusController::GetDeviceLocation()
{
std::string return_string(bus->device_name);
char addr[5];
snprintf(addr, 5, "0x%02X", dev);
return_string.append(", address ");
return_string.append(addr);
return("I2C: " + return_string);
}
std::string ASRockASRRGBSMBusController::GetDeviceName()
{
return(device_name);
}
std::string ASRockASRRGBSMBusController::GetFirmwareVersion()
{
uint8_t major_version = fw_version >> 8;
uint8_t minor_version = fw_version & 0xFF;
return(std::to_string(major_version) + "." + std::to_string(minor_version));
}
uint8_t ASRockASRRGBSMBusController::GetMode()
{
return(active_mode);
}
void ASRockASRRGBSMBusController::SetColorsAndSpeed(uint8_t led, uint8_t red, uint8_t green, uint8_t blue)
{
uint8_t color_speed_pkt[4] = { red, green, blue, active_speed };
uint8_t select_led_pkt[1] = { led };
/*-----------------------------------------------------*\
| Select LED |
\*-----------------------------------------------------*/
if(active_mode != ASRLED_MODE_OFF)
{
bus->i2c_smbus_write_block_data(dev, ASROCK_ASR_REG_LED_SELECT, 1, select_led_pkt);
std::this_thread::sleep_for(1ms);
}
switch(active_mode)
{
/*-----------------------------------------------------*\
| These modes take 4 bytes in R/G/B/S order |
\*-----------------------------------------------------*/
case ASRLED_MODE_BREATHING:
case ASRLED_MODE_STROBE:
case ASRLED_MODE_SPECTRUM_CYCLE:
bus->i2c_smbus_write_block_data(dev, active_mode, 4, color_speed_pkt);
break;
/*-----------------------------------------------------*\
| These modes take 3 bytes in R/G/B order |
\*-----------------------------------------------------*/
default:
case ASRLED_MODE_STATIC:
case ASRLED_MODE_MUSIC:
bus->i2c_smbus_write_block_data(dev, active_mode, 3, color_speed_pkt);
break;
/*-----------------------------------------------------*\
| These modes take 1 byte - speed |
\*-----------------------------------------------------*/
case ASRLED_MODE_RANDOM:
case ASRLED_MODE_WAVE:
bus->i2c_smbus_write_block_data(dev, active_mode, 1, &active_speed);
break;
/*-----------------------------------------------------*\
| These modes take no bytes |
\*-----------------------------------------------------*/
case ASRLED_MODE_OFF:
break;
}
std::this_thread::sleep_for(1ms);
}
void ASRockASRRGBSMBusController::SetMode(uint8_t zone,uint8_t mode, uint8_t speed)
{
active_zone = zone;
active_mode = mode;
active_speed = speed;
bus->i2c_smbus_write_block_data(dev, ASROCK_ASR_REG_MODE, 1, &active_mode);
std::this_thread::sleep_for(1ms);
}
@@ -0,0 +1,77 @@
/*---------------------------------------------------------*\
| 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"
enum
{
/*------------------------------------------------------------------------------------------*\
| ASRock Common Registers |
\*------------------------------------------------------------------------------------------*/
ASROCK_ASR_REG_FIRMWARE_VER = 0x00, /* Firmware version Major.Minor */
ASROCK_ASR_REG_MODE = 0x30, /* Mode selection register */
ASROCK_ASR_REG_LED_SELECT = 0x31, /* LED selection register */
};
/*----------------------------------------------------------------------------------------------*\
| Definitions for ASR LED |
\*----------------------------------------------------------------------------------------------*/
#define ASRLED_NUM_MODES 8 /* Number of ASR LED modes */
enum
{
ASRLED_MODE_OFF = 0x10, /* OFF mode */
ASRLED_MODE_STATIC = 0x11, /* Static color mode */
ASRLED_MODE_BREATHING = 0x12, /* Breathing effect mode */
ASRLED_MODE_STROBE = 0x13, /* Strobe effect mode */
ASRLED_MODE_SPECTRUM_CYCLE = 0x14, /* Spectrum Cycle effect mode */
ASRLED_MODE_RANDOM = 0x15, /* Random effect mode */
ASRLED_MODE_MUSIC = 0x17, /* Music effect mode */
ASRLED_MODE_WAVE = 0x18, /* Wave effect mode */
};
enum
{
ASRLED_SPEED_MIN = 0x05, /* Slowest speed */
ASRLED_SPEED_DEFAULT = 0x03, /* Default speed */
ASRLED_SPEED_MAX = 0x00, /* Fastest speed */
};
class ASRockASRRGBSMBusController
{
public:
ASRockASRRGBSMBusController(i2c_smbus_interface* bus, polychrome_dev_id dev);
~ASRockASRRGBSMBusController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetFirmwareVersion();
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:
std::string device_name;
uint8_t active_zone;
uint8_t active_mode;
uint8_t active_speed;
i2c_smbus_interface* bus;
polychrome_dev_id dev;
};
@@ -0,0 +1,207 @@
/*---------------------------------------------------------*\
| 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"
#define ASROCK_MAX_ZONES 4
#define ASROCK_MAX_LEDS 22
/**------------------------------------------------------------------*\
@name ASRock ASR RGB SMBus
@category Motherboard
@type SMBus
@save :robot:
@direct :x:
@effects :white_check_mark:
@detectors DetectASRockSMBusControllers
@comment ASRock ASR RGB LED controllers will save with each update.
Per ARGB LED support is not possible with these devices.
\*-------------------------------------------------------------------*/
RGBController_ASRockASRRGBSMBus::RGBController_ASRockASRRGBSMBus(ASRockASRRGBSMBusController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetDeviceName();
vendor = "ASRock";
version = controller->GetFirmwareVersion();
type = DEVICE_TYPE_MOTHERBOARD;
description = "ASRock ASR RGB LED Device";
location = controller->GetDeviceLocation();
mode Off;
Off.name = "Off";
Off.value = ASRLED_MODE_OFF;
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
modes.push_back(Off);
mode Static;
Static.name = "Static";
Static.value = ASRLED_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Static);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = ASRLED_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = ASRLED_SPEED_MIN;
Breathing.speed_max = ASRLED_SPEED_MAX;
Breathing.speed = ASRLED_SPEED_DEFAULT;
Breathing.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Breathing);
mode Strobe;
Strobe.name = "Strobe";
Strobe.value = ASRLED_MODE_STROBE;
Strobe.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Strobe.speed_min = ASRLED_SPEED_MIN;
Strobe.speed_max = ASRLED_SPEED_MAX;
Strobe.speed = ASRLED_SPEED_DEFAULT;
Strobe.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Strobe);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = ASRLED_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = ASRLED_SPEED_MIN;
SpectrumCycle.speed_max = ASRLED_SPEED_MAX;
SpectrumCycle.speed = ASRLED_SPEED_DEFAULT;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
modes.push_back(SpectrumCycle);
mode Random;
Random.name = "Random";
Random.value = ASRLED_MODE_RANDOM;
Random.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Random.speed_min = ASRLED_SPEED_MIN;
Random.speed_max = ASRLED_SPEED_MAX;
Random.speed = ASRLED_SPEED_DEFAULT;
Random.color_mode = MODE_COLORS_NONE;
modes.push_back(Random);
mode Music;
Music.name = "Music";
Music.value = ASRLED_MODE_MUSIC;
Music.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Music.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Music);
mode Wave;
Wave.name = "Wave";
Wave.value = ASRLED_MODE_WAVE;
Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Wave.speed_min = ASRLED_SPEED_MIN;
Wave.speed_max = ASRLED_SPEED_MAX;
Wave.speed = ASRLED_SPEED_DEFAULT;
Wave.color_mode = MODE_COLORS_NONE;
modes.push_back(Wave);
SetupZones();
}
RGBController_ASRockASRRGBSMBus::~RGBController_ASRockASRRGBSMBus()
{
delete controller;
}
void RGBController_ASRockASRRGBSMBus::SetupZones()
{
/*---------------------------------------------------------*\
| ASR LED motherboards only have a single zone/LED |
\*---------------------------------------------------------*/
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
zone* new_zone = new zone();
/*---------------------------------------------------------*\
| Set single zone name to "Motherboard" |
\*---------------------------------------------------------*/
new_zone->name = "Motherboard";
new_zone->type = ZONE_TYPE_SINGLE;
new_zone->leds_min = 1;
new_zone->leds_max = 1;
new_zone->leds_count = 1;
new_zone->matrix_map = NULL;
/*---------------------------------------------------------*\
| Push new zone to zones vector |
\*---------------------------------------------------------*/
zones.push_back(*new_zone);
/*---------------------------------------------------------*\
| Set up LEDs |
\*---------------------------------------------------------*/
led* new_led = new led();
/*---------------------------------------------------------*\
| Set single LED name to "Motherboard" |
\*---------------------------------------------------------*/
new_led->name = "Motherboard";
/*---------------------------------------------------------*\
| Push new LED to LEDs vector |
\*---------------------------------------------------------*/
leds.push_back(*new_led);
SetupColors();
}
void RGBController_ASRockASRRGBSMBus::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_ASRockASRRGBSMBus::DeviceUpdateLEDs()
{
for(unsigned int led = 0; led < colors.size(); led++)
{
UpdateSingleLED(led);
}
}
void RGBController_ASRockASRRGBSMBus::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_ASRockASRRGBSMBus::UpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
unsigned char blu = RGBGetBValue(colors[led]);
/*---------------------------------------------------------*\
| If the LED value is non-zero, this LED overrides the LED |
| index |
\*---------------------------------------------------------*/
if(leds[led].value != 0)
{
led = leds[led].value;
}
controller->SetColorsAndSpeed(led, red, grn, blu);
}
void RGBController_ASRockASRRGBSMBus::DeviceUpdateMode()
{
controller->SetMode(0, modes[active_mode].value, modes[active_mode].speed);
DeviceUpdateLEDs();
}
@@ -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;
};
@@ -0,0 +1,310 @@
/*---------------------------------------------------------*\
| 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 <cstring>
#include "ASRockPolychromeV1SMBusController.h"
#include "dmiinfo.h"
#include "LogManager.h"
#define ASROCK_ZONE_LED_COUNT_MESSAGE_EN "[%s] Zone %i LED count: %02d"
using namespace std::chrono_literals;
ASRockPolychromeV1SMBusController::ASRockPolychromeV1SMBusController(i2c_smbus_interface* bus, polychrome_dev_id dev)
{
this->bus = bus;
this->dev = dev;
DMIInfo dmi;
device_name = "ASRock " + dmi.getMainboard();
ReadLEDConfiguration();
}
ASRockPolychromeV1SMBusController::~ASRockPolychromeV1SMBusController()
{
}
std::string ASRockPolychromeV1SMBusController::GetDeviceLocation()
{
std::string return_string(bus->device_name);
char addr[5];
snprintf(addr, 5, "0x%02X", dev);
return_string.append(", address ");
return_string.append(addr);
return("I2C: " + return_string);
}
std::string ASRockPolychromeV1SMBusController::GetDeviceName()
{
return(device_name);
}
std::string ASRockPolychromeV1SMBusController::GetFirmwareVersion()
{
uint8_t major_version = fw_version >> 8;
uint8_t minor_version = fw_version & 0xFF;
return(std::to_string(major_version) + "." + std::to_string(minor_version));
}
void ASRockPolychromeV1SMBusController::ReadLEDConfiguration()
{
/*---------------------------------------------------------------------------------*\
| The LED configuration register holds 6 bytes, so the first read should return 6 |
| If not, set all zone sizes to zero |
\*---------------------------------------------------------------------------------*/
LOG_DEBUG("[%s] Reading Zone sizes from controller", device_name.c_str());
uint8_t asrock_zone_count[I2C_SMBUS_BLOCK_MAX] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
if (bus->i2c_smbus_read_block_data(dev, POLYCHROME_V1_REG_ZONE_SIZE, asrock_zone_count) == 0x06)
{
zone_led_count[POLYCHROME_V1_ZONE_1] = asrock_zone_count[0];
zone_led_count[POLYCHROME_V1_ZONE_2] = asrock_zone_count[1];
zone_led_count[POLYCHROME_V1_ZONE_3] = asrock_zone_count[2];
zone_led_count[POLYCHROME_V1_ZONE_4] = asrock_zone_count[3];
zone_led_count[POLYCHROME_V1_ZONE_5] = asrock_zone_count[4];
zone_led_count[POLYCHROME_V1_ZONE_ADDRESSABLE] = asrock_zone_count[5];
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V1_ZONE_1, zone_led_count[POLYCHROME_V1_ZONE_1]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V1_ZONE_2, zone_led_count[POLYCHROME_V1_ZONE_2]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V1_ZONE_3, zone_led_count[POLYCHROME_V1_ZONE_3]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V1_ZONE_4, zone_led_count[POLYCHROME_V1_ZONE_4]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V1_ZONE_5, zone_led_count[POLYCHROME_V1_ZONE_5]);
LOG_DEBUG("[%s] Addressable Zone LED count: %02d", device_name.c_str(), zone_led_count[POLYCHROME_V1_ZONE_ADDRESSABLE]);
}
else
{
LOG_WARNING("[%s] LED config read failed", device_name.c_str());
memset(zone_led_count, 0, sizeof(zone_led_count));
}
}
uint8_t ASRockPolychromeV1SMBusController::GetARGBColorOrder()
{
uint8_t temp[1] = { 0x00 };
LOG_TRACE("[%s] Reading ARGB color order config from the controller", device_name.c_str());
//Read the data
if(bus->i2c_smbus_read_block_data(dev, POLYCHROME_V1_REG_ARGB_GRB, temp) == 0x01)
{
if(temp[0] == 1)
{
LOG_DEBUG("[%s] Color order is GRB for the ARGB header", device_name.c_str());
}
else
{
LOG_DEBUG("[%s] Color order is RGB for the ARGB header", device_name.c_str());
}
return temp[0];
}
else
{
return 0;
}
}
RGBColor ASRockPolychromeV1SMBusController::GetZoneColor(uint8_t zone)
{
LOG_TRACE("[%s] Reading color from zone %02d", device_name.c_str(), zone);
return zone_config[zone].color;
}
uint8_t ASRockPolychromeV1SMBusController::GetZoneMode(uint8_t zone)
{
LOG_TRACE("[%s] Retreving mode %02X from zone_modes for zone %02d", device_name.c_str(), zone_config[zone].mode, zone);
return(zone_config[zone].mode);
}
void ASRockPolychromeV1SMBusController::LoadZoneConfig()
{
uint8_t zone[1] = { 0x00 };
uint8_t mode[1] = { 0xFF };
uint8_t color_speed_pkt[4] = { 0, 0, 0, 0 };
LOG_TRACE("[%s] Reading modes from all zones", device_name.c_str());
//Polychrome v1 supports per zone modes so we need to set the zone before we can read the mode.
//Write the zone index.
for(uint8_t zone_idx = 0 ; zone_idx < POLYCHROME_V1_ZONE_COUNT; zone_idx ++)
{
if(zone_led_count[zone_idx] > 0)
{
zone[0] = zone_idx;
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_ZONE_SELECT, 1, zone);
//Read the data back.
if(bus->i2c_smbus_read_block_data(dev, POLYCHROME_V1_REG_ZONE_SELECT, zone) == 0x01)
{
//Validate that we changed correctly.
if(zone[0] == zone_idx)
{
//Read the mode for the zone.
if(bus->i2c_smbus_read_block_data(dev, POLYCHROME_V1_REG_MODE, mode) == 0x01)
{
LOG_DEBUG("[%s] Mode 0x%02x for zone %02d", device_name.c_str(), mode[0], zone_idx);
zone_config[zone_idx].mode = mode[0];
bus->i2c_smbus_read_block_data(dev, zone_config[zone_idx].mode, color_speed_pkt);
zone_config[zone_idx].color = color_speed_pkt[0] << 16 | color_speed_pkt[1] << 8 | color_speed_pkt[2];
zone_config[zone_idx].speed = color_speed_pkt [3];
LOG_TRACE("[%s] Mode config: %06X, %02X", device_name.c_str(), zone_config[zone_idx].color, zone_config[zone_idx].speed );
}
}
else
{
LOG_WARNING("[%s] Zone mode register failed to change!", device_name.c_str() );
}
}
}
else
{
zone_config[zone_idx].mode = 0;
zone_config[zone_idx].color = 0;
zone_config[zone_idx].speed = 0;
}
}
}
void ASRockPolychromeV1SMBusController::SetARGBColorOrder(bool value)
{
uint8_t temp[1] = { 0x00 };
LOG_TRACE("[%s] Setting ARGB color order config to the controller", device_name.c_str());
temp[0] = (value) ? 0x01 : 0x00;
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_ARGB_GRB, 1, temp);
GetARGBColorOrder();
}
bool ASRockPolychromeV1SMBusController::SetARGBSize(uint8_t new_size)
{
LOG_DEBUG("[%s] Setting ARGB header to %02d.", device_name.c_str(), new_size);
uint8_t asrock_zone_count[6] = { 0x0 };
uint8_t new_asrock_zone_count[6] = { 0x0 };
//memcpy(new_asrock_zone_count, zone_led_count, sizeof(new_asrock_zone_count - 1));
new_asrock_zone_count[POLYCHROME_V1_ZONE_1] = zone_led_count[POLYCHROME_V1_ZONE_1];
new_asrock_zone_count[POLYCHROME_V1_ZONE_2] = zone_led_count[POLYCHROME_V1_ZONE_2];
new_asrock_zone_count[POLYCHROME_V1_ZONE_3] = zone_led_count[POLYCHROME_V1_ZONE_3];
new_asrock_zone_count[POLYCHROME_V1_ZONE_4] = zone_led_count[POLYCHROME_V1_ZONE_4];
new_asrock_zone_count[POLYCHROME_V1_ZONE_5] = zone_led_count[POLYCHROME_V1_ZONE_5];
new_asrock_zone_count[POLYCHROME_V1_ZONE_ADDRESSABLE] = new_size;
//Write the new config to the register
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_ZONE_SIZE, 6, new_asrock_zone_count);
//Validate the write
if (bus->i2c_smbus_read_block_data(dev, POLYCHROME_V1_REG_ZONE_SIZE, asrock_zone_count) == 0x06)
{
for (uint8_t i = 0; i < 6; i++)
{
if (new_asrock_zone_count[i] != asrock_zone_count[i])
{
LOG_WARNING("[%s] Failed to validate zone %02d size!", device_name.c_str(), i);
return false;
}
}
LOG_DEBUG("[%s] Zone configuration validation completed.", device_name.c_str());
return true;
}
return false;
}
void ASRockPolychromeV1SMBusController::SetColorsAndSpeed(uint8_t zone, uint8_t red, uint8_t green, uint8_t blue)
{
LOG_TRACE("[%s] Updating color and speed for zone %02d: 0x%06X", device_name.c_str(), zone, (red << 16 | green << 8 | blue));
uint8_t color_speed_pkt[4] = { red, green, blue, zone_config[zone].speed };
uint8_t select_zone_pkt[1] = { zone };
/*-----------------------------------------------------*\
| Select Zone |
\*-----------------------------------------------------*/
if(zone_config[zone].mode != POLYCHROME_V1_MODE_OFF)
{
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_ZONE_SELECT, 1, select_zone_pkt);
std::this_thread::sleep_for(1ms);
}
switch(zone_config[zone].mode)
{
/*-----------------------------------------------------*\
| These modes take 4 bytes in R/G/B/S order |
\*-----------------------------------------------------*/
case POLYCHROME_V1_MODE_BREATHING:
case POLYCHROME_V1_MODE_STROBE:
case POLYCHROME_V1_MODE_SPECTRUM_CYCLE:
case POLYCHROME_V1_MODE_SPRING:
case POLYCHROME_V1_MODE_METEOR:
case POLYCHROME_V1_MODE_STACK:
case POLYCHROME_V1_MODE_CRAM:
case POLYCHROME_V1_MODE_SCAN:
case POLYCHROME_V1_MODE_NEON:
case POLYCHROME_V1_MODE_WATER:
bus->i2c_smbus_write_block_data(dev, zone_config[zone].mode, 4, color_speed_pkt);
break;
/*-----------------------------------------------------*\
| These modes take 3 bytes in R/G/B order |
\*-----------------------------------------------------*/
default:
case POLYCHROME_V1_MODE_STATIC:
case POLYCHROME_V1_MODE_MUSIC:
bus->i2c_smbus_write_block_data(dev, zone_config[zone].mode, 3, color_speed_pkt);
break;
/*-----------------------------------------------------*\
| These modes take 1 byte - speed |
\*-----------------------------------------------------*/
case POLYCHROME_V1_MODE_RANDOM:
case POLYCHROME_V1_MODE_WAVE:
case POLYCHROME_V1_MODE_RAINBOW:
bus->i2c_smbus_write_block_data(dev, zone_config[zone].mode, 1, &zone_config[zone].speed);
break;
/*-----------------------------------------------------*\
| These modes take no bytes |
\*-----------------------------------------------------*/
case POLYCHROME_V1_MODE_OFF:
break;
}
std::this_thread::sleep_for(1ms);
}
void ASRockPolychromeV1SMBusController::SetMode(uint8_t zone, uint8_t mode, uint8_t speed)
{
LOG_TRACE("[%s] Updating mode for zone %02d, Mode 0x%02X, Speed 0x%02X", device_name.c_str(), zone, mode, speed);
uint8_t led_count_pkt[1] = { 0x00 };
zone_config[zone].mode = mode;
zone_config[zone].speed = speed;
/*-----------------------------------------------------*\
| Make sure set all register is set to 0 |
\*-----------------------------------------------------*/
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_SET_ALL, 1, led_count_pkt);
std::this_thread::sleep_for(1ms);
/*-----------------------------------------------------*\
| Set the zone we are working on |
\*-----------------------------------------------------*/
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_ZONE_SELECT, 1, &zone);
std::this_thread::sleep_for(1ms);
/*-----------------------------------------------------*\
| Write the mode |
\*-----------------------------------------------------*/
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V1_REG_MODE, 1, &zone_config[zone].mode);
std::this_thread::sleep_for(1ms);
}
@@ -0,0 +1,160 @@
/*---------------------------------------------------------*\
| 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"
enum
{
/*------------------------------------------------------------------------------------------*\
| ASRock Polychrome v1 Registers |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_REG_FIRMWARE_VER = 0x00, /* Firmware version Major.Minor */
POLYCHROME_V1_REG_MODE = 0x30, /* Mode selection register */
POLYCHROME_V1_REG_ZONE_SELECT = 0x31, /* Zone selection register */
POLYCHROME_V1_REG_SET_ALL = 0x32, /* Set All register 0x1 = set all */
POLYCHROME_V1_REG_ZONE_SIZE = 0x33, /* Zone size configuration register */
POLYCHROME_V1_REG_ARGB_GRB = 0x35, /* ARGB bitstream reversing register */
};
enum
{
POLYCHROME_V1_ZONE_1 = 0x00, /* RGB LED 1 Header */
POLYCHROME_V1_ZONE_2 = 0x01, /* RGB LED 2 Header */
POLYCHROME_V1_ZONE_3 = 0x02, /* PCH Zone */
POLYCHROME_V1_ZONE_4 = 0x03, /* IO Cover Zone */
POLYCHROME_V1_ZONE_5 = 0x04, /* Audio Zone LEDs */
POLYCHROME_V1_ZONE_ADDRESSABLE = 0x05, /* Addressable LED header */
POLYCHROME_V1_ZONE_COUNT = 0x06, /* Total number of zones */
POLYCHROME_V1_ZONE_ADDRESSABLE_MAX = 0x64, /* Maximum number of ARGB LEDs */
};
/*----------------------------------------------------------------------------------------------*\
| Definitions for Polychrome V1 |
\*----------------------------------------------------------------------------------------------*/
#define POLYCHROME_V1_NUM_MODES 16 /* Number of Polychrome V1 modes */
enum
{
POLYCHROME_V1_MODE_OFF = 0x10, /* OFF mode */
POLYCHROME_V1_MODE_STATIC = 0x11, /* Static color mode */
POLYCHROME_V1_MODE_BREATHING = 0x12, /* Breathing effect mode */
POLYCHROME_V1_MODE_STROBE = 0x13, /* Strobe effect mode */
POLYCHROME_V1_MODE_SPECTRUM_CYCLE = 0x14, /* Spectrum Cycle effect mode */
POLYCHROME_V1_MODE_RANDOM = 0x15, /* Random effect mode */
POLYCHROME_V1_MODE_MUSIC = 0x17, /* Music effect mode */
POLYCHROME_V1_MODE_WAVE = 0x18, /* Wave effect mode */
/*------------------------------------------------------------------------------------------*\
| Modes only available on ARGB headers |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_MODE_SPRING = 0x19, /* Spring effect mode */
POLYCHROME_V1_MODE_METEOR = 0x1A, /* Meteor effect mode */
POLYCHROME_V1_MODE_STACK = 0x1B, /* Stack effect mode */
POLYCHROME_V1_MODE_CRAM = 0x1C, /* Cram effect mode */
POLYCHROME_V1_MODE_SCAN = 0x1D, /* Scan effect mode */
POLYCHROME_V1_MODE_NEON = 0x1E, /* Neon effect mode */
POLYCHROME_V1_MODE_WATER = 0x1F, /* Water effect mode */
POLYCHROME_V1_MODE_RAINBOW = 0x20, /* Rainbow chase effect mode */
};
enum
{
/*------------------------------------------------------------------------------------------*\
| POLYCHROME_V1_MODE_BREATHING |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_SPEED_MIN_BREATHING = 0x0A, /* Slowest speed */
POLYCHROME_V1_SPEED_DEFAULT_BREATHING = 0x02, /* Default speed */
POLYCHROME_V1_SPEED_MAX_BREATHING = 0x02, /* Fastest speed */
/*------------------------------------------------------------------------------------------*\
| POLYCHROME_V1_MODE_STROBE |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_SPEED_MIN_STROBE = 0xA0, /* Slowest speed */
POLYCHROME_V1_SPEED_DEFAULT_STROBE = 0x14, /* Default speed */
POLYCHROME_V1_SPEED_MAX_STROBE = 0x05, /* Fastest speed */
/*------------------------------------------------------------------------------------------*\
| POLYCHROME_V1_MODE_SPECTRUM_CYCLE |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_SPEED_MIN_CYCLE = 0xA0, /* Slowest speed */
POLYCHROME_V1_SPEED_DEFAULT_CYCLE = 0x14, /* Default speed */
POLYCHROME_V1_SPEED_MAX_CYCLE = 0x0A, /* Fastest speed */
/*------------------------------------------------------------------------------------------*\
| POLYCHROME_V1_MODE_RANDOM |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_SPEED_MIN_RANDOM = 0xA0, /* Slowest speed */
POLYCHROME_V1_SPEED_DEFAULT_RANDOM = 0x28, /* Default speed */
POLYCHROME_V1_SPEED_MAX_RANDOM = 0x05, /* Fastest speed */
/*------------------------------------------------------------------------------------------*\
| POLYCHROME_V1_MODE_WAVE |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_SPEED_MIN_WAVE = 0x06, /* Slowest speed */
POLYCHROME_V1_SPEED_DEFAULT_WAVE = 0x02, /* Default speed */
POLYCHROME_V1_SPEED_MAX_WAVE = 0x01, /* Fastest speed */
POLYCHROME_V1_SPEED_DEFAULT_SPRING = 0x04, /* Default speed */
POLYCHROME_V1_SPEED_DEFAULT_METEOR = 0x0A, /* Default speed */
POLYCHROME_V1_SPEED_DEFAULT_STACK = 0x04, /* Default speed */
POLYCHROME_V1_SPEED_DEFAULT_CRAM = 0x04, /* Default speed */
POLYCHROME_V1_SPEED_DEFAULT_SCAN = 0x0A, /* Default speed */
POLYCHROME_V1_SPEED_DEFAULT_NEON = 0x20, /* Default speed */
POLYCHROME_V1_SPEED_DEFAULT_WATER = 0x0A, /* Default speed */
/*------------------------------------------------------------------------------------------*\
| POLYCHROME_V1_MODE_RAINBOW |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V1_SPEED_MIN_RAINBOW = 0x12, /* Slowest speed */
POLYCHROME_V1_SPEED_DEFAULT_RAINBOW = 0x0A, /* Default speed */
POLYCHROME_V1_SPEED_MAX_RAINBOW = 0x01, /* Fastest speed */
POLYCHROME_V1_SPEED_MIN_ARGB = 0x20, /* Slowest speed */
POLYCHROME_V1_SPEED_MAX_ARGB = 0x02, /* Fastest speed */
};
struct zone_cfg
{
uint8_t mode;
uint8_t speed;
RGBColor color;
};
class ASRockPolychromeV1SMBusController
{
public:
ASRockPolychromeV1SMBusController(i2c_smbus_interface* bus, polychrome_dev_id dev);
~ASRockPolychromeV1SMBusController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetFirmwareVersion();
uint8_t GetARGBColorOrder();
RGBColor GetZoneColor(uint8_t zone);
uint8_t GetZoneMode(uint8_t zone);
void LoadZoneConfig();
void SetARGBColorOrder(bool value);
bool SetARGBSize(uint8_t led_count);
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);
uint8_t zone_led_count[6];
zone_cfg zone_config[6];
uint16_t fw_version;
private:
std::string device_name;
i2c_smbus_interface* bus;
polychrome_dev_id dev;
void ReadLEDConfiguration();
};
@@ -0,0 +1,349 @@
/*---------------------------------------------------------*\
| 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"
static const char* polychrome_v1_zone_names[] =
{
"RGB LED 1 Header",
"RGB LED 2 Header",
"PCH",
"IO Cover",
"Audio",
"Addressable Header"
};
/**------------------------------------------------------------------*\
@name ASRock Polychrome v1 SMBus
@category Motherboard
@type SMBus
@save :robot:
@direct :x:
@effects :white_check_mark:
@detectors DetectASRockSMBusControllers
@comment ASRock Polychrome v1 controllers will save with each update.
Per ARGB LED support is not possible with these devices.
ARGB size and color order is set using the `ARGB Header Config mode`
`Right` = GRB mode that is needed for WS2812B ARGB devices and `Left` = RGB used for WS2811 strips
The modes speed slider will set the size of the header
Spectrum Cycles uses the RGB values to set the individual color brightness.
\*-------------------------------------------------------------------*/
RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASRockPolychromeV1SMBusController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetDeviceName();
vendor = "ASRock";
version = controller->GetFirmwareVersion();
type = DEVICE_TYPE_MOTHERBOARD;
description = "ASRock Polychrome v1 Device";
location = controller->GetDeviceLocation();
mode Off;
Off.name = "Off";
Off.value = POLYCHROME_V1_MODE_OFF;
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
modes.push_back(Off);
mode Static;
Static.name = "Static";
Static.value = POLYCHROME_V1_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Static);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = POLYCHROME_V1_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = POLYCHROME_V1_SPEED_MIN_BREATHING;
Breathing.speed_max = POLYCHROME_V1_SPEED_MAX_BREATHING;
Breathing.speed = POLYCHROME_V1_SPEED_DEFAULT_BREATHING;
Breathing.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Breathing);
mode Strobe;
Strobe.name = "Strobe";
Strobe.value = POLYCHROME_V1_MODE_STROBE;
Strobe.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Strobe.speed_min = POLYCHROME_V1_SPEED_MIN_STROBE;
Strobe.speed_max = POLYCHROME_V1_SPEED_MAX_STROBE;
Strobe.speed = POLYCHROME_V1_SPEED_DEFAULT_STROBE;
Strobe.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Strobe);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = POLYCHROME_V1_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = POLYCHROME_V1_SPEED_MIN_CYCLE;
SpectrumCycle.speed_max = POLYCHROME_V1_SPEED_MAX_CYCLE;
SpectrumCycle.speed = POLYCHROME_V1_SPEED_DEFAULT_CYCLE;
SpectrumCycle.color_mode = MODE_COLORS_PER_LED;
modes.push_back(SpectrumCycle);
mode Random;
Random.name = "Random";
Random.value = POLYCHROME_V1_MODE_RANDOM;
Random.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Random.speed_min = POLYCHROME_V1_SPEED_MIN_RANDOM;
Random.speed_max = POLYCHROME_V1_SPEED_MAX_RANDOM;
Random.speed = POLYCHROME_V1_SPEED_DEFAULT_RANDOM;
Random.color_mode = MODE_COLORS_NONE;
modes.push_back(Random);
mode Music;
Music.name = "Music";
Music.value = POLYCHROME_V1_MODE_MUSIC;
Music.flags = MODE_FLAG_AUTOMATIC_SAVE;
Music.color_mode = MODE_COLORS_NONE;
modes.push_back(Music);
mode Wave;
Wave.name = "Wave";
Wave.value = POLYCHROME_V1_MODE_WAVE;
Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Wave.speed_min = POLYCHROME_V1_SPEED_MIN_WAVE;
Wave.speed_max = POLYCHROME_V1_SPEED_MAX_WAVE;
Wave.speed = POLYCHROME_V1_SPEED_DEFAULT_WAVE;
Wave.color_mode = MODE_COLORS_NONE;
modes.push_back(Wave);
/*---------------------------------------------------------------------*\
| Comment out until per zone modes are working. These are only for ARGB |
\*---------------------------------------------------------------------*/
mode Spring;
Spring.name = "Spring";
Spring.value = POLYCHROME_V1_MODE_SPRING;
Spring.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Spring.speed_min = POLYCHROME_V1_SPEED_MIN_ARGB;
Spring.speed_max = POLYCHROME_V1_SPEED_MAX_ARGB;
Spring.speed = POLYCHROME_V1_SPEED_DEFAULT_SPRING;
Spring.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Spring);
mode Stack;
Stack.name = "Stack";
Stack.value = POLYCHROME_V1_MODE_STACK;
Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Stack.speed_min = POLYCHROME_V1_SPEED_MIN_ARGB;
Stack.speed_max = POLYCHROME_V1_SPEED_MAX_ARGB;
Stack.speed = POLYCHROME_V1_SPEED_DEFAULT_STACK;
Stack.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Stack);
mode Cram;
Cram.name = "Cram";
Cram.value = POLYCHROME_V1_MODE_CRAM;
Cram.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Cram.speed_min = POLYCHROME_V1_SPEED_MIN_ARGB;
Cram.speed_max = POLYCHROME_V1_SPEED_MAX_ARGB;
Cram.speed = POLYCHROME_V1_SPEED_DEFAULT_CRAM;
Cram.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Cram);
mode Scan;
Scan.name = "Scan";
Scan.value = POLYCHROME_V1_MODE_SCAN;
Scan.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Scan.speed_min = POLYCHROME_V1_SPEED_MIN_ARGB;
Scan.speed_max = POLYCHROME_V1_SPEED_MAX_ARGB;
Scan.speed = POLYCHROME_V1_SPEED_DEFAULT_SCAN;
Scan.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Scan);
mode Neon;
Neon.name = "Neon";
Neon.value = POLYCHROME_V1_MODE_NEON;
Neon.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Neon.speed_min = POLYCHROME_V1_SPEED_MIN_ARGB;
Neon.speed_max = POLYCHROME_V1_SPEED_MAX_ARGB;
Neon.speed = POLYCHROME_V1_SPEED_DEFAULT_NEON;
Neon.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Neon);
mode Water;
Water.name = "Water";
Water.value = POLYCHROME_V1_MODE_WATER;
Water.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Water.speed_min = POLYCHROME_V1_SPEED_MIN_ARGB;
Water.speed_max = POLYCHROME_V1_SPEED_MAX_ARGB;
Water.speed = POLYCHROME_V1_SPEED_DEFAULT_WATER;
Water.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Water);
mode Rainbow;
Rainbow.name = "Rainbow";
Rainbow.value = POLYCHROME_V1_MODE_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Rainbow.speed_min = POLYCHROME_V1_SPEED_MIN_RAINBOW;
Rainbow.speed_max = POLYCHROME_V1_SPEED_MAX_RAINBOW;
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 |
| RGB vs GRB mode using the direction of the mode as well as set the |
| size of the devices connected to the header using the brightness |
| value. |
| |
| The mode should be removed onece the device settings are avaiable. |
\*---------------------------------------------------------------------*/
mode ARGB_Config;
ARGB_Config.name = "ARGB Header Config";
ARGB_Config.value = POLYCHROME_V1_REG_ARGB_GRB;
ARGB_Config.flags = MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
ARGB_Config.speed = controller->zone_led_count[POLYCHROME_V1_ZONE_ADDRESSABLE];
ARGB_Config.speed_min = 1;
ARGB_Config.speed_max = POLYCHROME_V1_ZONE_ADDRESSABLE_MAX;
ARGB_Config.direction = controller -> GetARGBColorOrder();
ARGB_Config.color_mode = MODE_COLORS_NONE;
modes.push_back(ARGB_Config);
SetupZones();
controller->LoadZoneConfig();
active_mode = getModeIndex(controller->zone_config[0].mode); // Hard coding zone 0 until per zone modes are available.
if(active_mode != POLYCHROME_V1_MODE_OFF)
{
for( uint8_t zone_idx = 0; zone_idx < zoneIndexMap.size(); zone_idx++)
{
zones[zone_idx].colors[0] = controller->GetZoneColor(zoneIndexMap[zone_idx]);
}
}
}
RGBController_ASRockPolychromeV1SMBus::~RGBController_ASRockPolychromeV1SMBus()
{
delete controller;
}
uint8_t RGBController_ASRockPolychromeV1SMBus::getModeIndex(uint8_t mode_value)
{
for(uint8_t mode_index = 0; mode_index < modes.size(); mode_index++)
{
if (modes[mode_index].value == mode_value)
{
return mode_index;
}
}
return 0;
}
void RGBController_ASRockPolychromeV1SMBus::SetupZones()
{
/*---------------------------------------------------------*\
| Polychrome motherboards should set up zones based on LED |
| configuration register read from device |
\*---------------------------------------------------------*/
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
for(uint8_t zone_idx = 0; zone_idx < POLYCHROME_V1_ZONE_COUNT; zone_idx++)
{
if(controller->zone_led_count[zone_idx] > 0)
{
zone* new_zone = new zone();
/*---------------------------------------------------------*\
| Set zone name to channel name |
\*---------------------------------------------------------*/
new_zone->name = polychrome_v1_zone_names[zone_idx];
new_zone->type = ZONE_TYPE_SINGLE;
new_zone->leds_min = 1;
new_zone->leds_max = 1;
new_zone->leds_count = 1;
new_zone->matrix_map = NULL;
if(zone_idx == POLYCHROME_V1_ZONE_ADDRESSABLE)
{
new_zone->leds_max = POLYCHROME_V1_ZONE_ADDRESSABLE_MAX;
}
/*---------------------------------------------------------*\
| Push new zone to zones vector |
\*---------------------------------------------------------*/
zones.push_back(*new_zone);
/*---------------------------------------------------------*\
| Each zone only has one LED |
\*---------------------------------------------------------*/
led* new_led = new led();
new_led->name = polychrome_v1_zone_names[zone_idx];
new_led->value = zone_idx;
/*---------------------------------------------------------*\
| Push new LED to LEDs vector |
\*---------------------------------------------------------*/
leds.push_back(*new_led);
zoneIndexMap.push_back(zone_idx);
}
}
SetupColors();
}
void RGBController_ASRockPolychromeV1SMBus::ResizeZone(int zone, int new_size)
{
LOG_TRACE("[%s] ResizeZone(%02X, %02X)", name.c_str(), zone, new_size);
controller-> SetARGBSize(new_size & 0xFF);
zones[POLYCHROME_V1_ZONE_ADDRESSABLE].leds_count = 1;
}
void RGBController_ASRockPolychromeV1SMBus::DeviceUpdateLEDs()
{
LOG_TRACE("[%s] DeviceUpdateLEDs()", name.c_str());
for (uint8_t zone_idx = 0; zone_idx < zoneIndexMap.size(); zone_idx++)
{
UpdateSingleLED(zone_idx);
}
}
void RGBController_ASRockPolychromeV1SMBus::UpdateZoneLEDs(int /*zone*/)
{
LOG_TRACE("[%s] UpdateZoneLEDs()", name.c_str());
DeviceUpdateLEDs();
}
void RGBController_ASRockPolychromeV1SMBus::UpdateSingleLED(int zone)
{
LOG_TRACE("[%s] UpdateSingleLED(%02X)", name.c_str(), zone);
uint8_t red = RGBGetRValue(colors[zone]);
uint8_t grn = RGBGetGValue(colors[zone]);
uint8_t blu = RGBGetBValue(colors[zone]);
controller->SetColorsAndSpeed(zoneIndexMap[zone], red, grn, blu);
}
void RGBController_ASRockPolychromeV1SMBus::DeviceUpdateMode()
{
LOG_TRACE("[%s] DeviceUpdateMode()", name.c_str());
if(modes[active_mode].value != POLYCHROME_V1_REG_ARGB_GRB)
{
for(uint8_t zone_idx = 0; zone_idx < zoneIndexMap.size(); zone_idx++)
{
controller->SetMode(zoneIndexMap[zone_idx], modes[active_mode].value, modes[active_mode].speed);
UpdateSingleLED(zone_idx);
}
}
else
{
controller-> SetARGBColorOrder(modes[active_mode].direction);
controller-> SetARGBSize(modes[active_mode].speed);
}
}
@@ -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;
};
@@ -0,0 +1,158 @@
/*---------------------------------------------------------*\
| 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 <cstring>
#include "ASRockPolychromeV2SMBusController.h"
#include "dmiinfo.h"
#include "LogManager.h"
#define ASROCK_ZONE_LED_COUNT_MESSAGE_EN "[%s] Zone %i LED count: %02d"
using namespace std::chrono_literals;
ASRockPolychromeV2SMBusController::ASRockPolychromeV2SMBusController(i2c_smbus_interface* bus, polychrome_dev_id dev)
{
this->bus = bus;
this->dev = dev;
DMIInfo dmi;
device_name = "ASRock " + dmi.getMainboard();
ReadLEDConfiguration();
}
ASRockPolychromeV2SMBusController::~ASRockPolychromeV2SMBusController()
{
}
std::string ASRockPolychromeV2SMBusController::GetDeviceLocation()
{
std::string return_string(bus->device_name);
char addr[5];
snprintf(addr, 5, "0x%02X", dev);
return_string.append(", address ");
return_string.append(addr);
return("I2C: " + return_string);
}
std::string ASRockPolychromeV2SMBusController::GetDeviceName()
{
return(device_name);
}
std::string ASRockPolychromeV2SMBusController::GetFirmwareVersion()
{
uint8_t major_version = fw_version >> 8;
uint8_t minor_version = fw_version & 0xFF;
return(std::to_string(major_version) + "." + std::to_string(minor_version));
}
void ASRockPolychromeV2SMBusController::ReadLEDConfiguration()
{
/*---------------------------------------------------------------------------------*\
| The LED configuration register holds 6 bytes, so the first read should return 6 |
| If not, set all zone sizes to zero |
\*---------------------------------------------------------------------------------*/
LOG_DEBUG("[%s] Reading LED config from controller", device_name.c_str());
uint8_t asrock_zone_count[I2C_SMBUS_BLOCK_MAX] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
if (bus->i2c_smbus_read_block_data(dev, POLYCHROME_V2_REG_LED_CONFIG, asrock_zone_count) == 0x06)
{
zone_led_count[POLYCHROME_V2_ZONE_1] = asrock_zone_count[0];
zone_led_count[POLYCHROME_V2_ZONE_2] = asrock_zone_count[1];
zone_led_count[POLYCHROME_V2_ZONE_3] = asrock_zone_count[2];
zone_led_count[POLYCHROME_V2_ZONE_4] = asrock_zone_count[3];
zone_led_count[POLYCHROME_V2_ZONE_5] = asrock_zone_count[4];
zone_led_count[POLYCHROME_V2_ZONE_ADDRESSABLE] = asrock_zone_count[5];
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V2_ZONE_1, zone_led_count[POLYCHROME_V2_ZONE_1]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V2_ZONE_2, zone_led_count[POLYCHROME_V2_ZONE_2]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V2_ZONE_3, zone_led_count[POLYCHROME_V2_ZONE_3]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V2_ZONE_4, zone_led_count[POLYCHROME_V2_ZONE_4]);
LOG_DEBUG(ASROCK_ZONE_LED_COUNT_MESSAGE_EN, device_name.c_str(), POLYCHROME_V2_ZONE_5, zone_led_count[POLYCHROME_V2_ZONE_5]);
LOG_DEBUG("[%s] Addressable Zone LED count: %02d", device_name.c_str(), zone_led_count[POLYCHROME_V2_ZONE_ADDRESSABLE]);
}
else
{
LOG_WARNING("[%s] LED config read failed", device_name.c_str());
memset(zone_led_count, 0, sizeof(zone_led_count));
}
}
uint8_t ASRockPolychromeV2SMBusController::GetMode()
{
return(active_mode);
}
void ASRockPolychromeV2SMBusController::SetColorsAndSpeed(uint8_t led, uint8_t red, uint8_t green, uint8_t blue)
{
uint8_t color_speed_pkt[4] = { red, green, blue, active_speed };
uint8_t select_led_pkt[1] = { led };
/*-----------------------------------------------------*\
| Select LED |
\*-----------------------------------------------------*/
switch(active_mode)
{
case POLYCHROME_V2_MODE_OFF:
case POLYCHROME_V2_MODE_RAINBOW:
case POLYCHROME_V2_MODE_SPECTRUM_CYCLE:
break;
default:
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V2_REG_LED_SELECT, 1, select_led_pkt);
std::this_thread::sleep_for(1ms);
/*-----------------------------------------------------*\
| Polychrome firmware always writes color to fixed reg |
\*-----------------------------------------------------*/
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V2_REG_COLOR, 3, color_speed_pkt);
std::this_thread::sleep_for(1ms);
break;
}
}
void ASRockPolychromeV2SMBusController::SetMode(uint8_t zone,uint8_t mode, uint8_t speed)
{
uint8_t led_count_pkt[1] = { 0x00 };
active_zone = zone;
active_mode = mode;
active_speed = speed;
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V2_REG_MODE, 1, &active_mode);
std::this_thread::sleep_for(1ms);
/*-----------------------------------------------------*\
| Select a single LED |
\*-----------------------------------------------------*/
bus->i2c_smbus_write_block_data(dev, POLYCHROME_V2_REG_LED_COUNT, 0, led_count_pkt);
std::this_thread::sleep_for(1ms);
switch(active_mode)
{
/*-----------------------------------------------------*\
| These modes don't take a speed |
\*-----------------------------------------------------*/
case POLYCHROME_V2_MODE_OFF:
case POLYCHROME_V2_MODE_STATIC:
break;
/*-----------------------------------------------------*\
| All other modes, write speed to active mode register |
\*-----------------------------------------------------*/
default:
bus->i2c_smbus_write_block_data(dev, active_mode, 1, &speed);
std::this_thread::sleep_for(1ms);
break;
}
}
@@ -0,0 +1,146 @@
/*---------------------------------------------------------*\
| 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"
enum
{
/*------------------------------------------------------------------------------------------*\
| ASRock Polychrome v2 Registers |
\*------------------------------------------------------------------------------------------*/
POLYCHROME_V2_REG_FIRMWARE_VER = 0x00, /* Firmware version Major.Minor */
POLYCHROME_V2_REG_MODE = 0x30, /* Mode selection register */
POLYCHROME_V2_REG_LED_SELECT = 0x31, /* LED selection register */
POLYCHROME_V2_REG_LED_COUNT = 0x32, /* Additional LED count register */
POLYCHROME_V2_REG_LED_CONFIG = 0x33, /* LED configuration register */
POLYCHROME_V2_REG_COLOR = 0x34, /* Color register: Red, Green, Blue */
POLYCHROME_V2_REG_ARGB_GRB = 0x35, /* ARGB bistream reversing register */
};
enum
{
POLYCHROME_V2_ZONE_1 = 0x00, /* RGB LED 1 Header */
POLYCHROME_V2_ZONE_2 = 0x01, /* RGB LED 2 Header */
POLYCHROME_V2_ZONE_3 = 0x02, /* Audio/PCH Zone LEDs */
POLYCHROME_V2_ZONE_4 = 0x03, /* Audio/PCH Zone LEDs */
POLYCHROME_V2_ZONE_5 = 0x04, /* IO Cover Zone LEDs */
POLYCHROME_V2_ZONE_ADDRESSABLE = 0x05, /* Addressable LED header */
POLYCHROME_V2_ZONE_COUNT = 0x06, /* Total number of zones */
POLYCHROME_V2_ZONE_ADDRESSABLE_MAX = 0x64, /* Maxinum number of ARGB LEDs */
};
/*----------------------------------------------------------------------------------------------*\
| Definitions for Polychrome V2 |
\*----------------------------------------------------------------------------------------------*/
#define POLYCHROME_V2_NUM_MODES 14 /* Number of Polychrome V2 modes */
enum
{
POLYCHROME_V2_MODE_OFF = 0x10, /* OFF mode */
POLYCHROME_V2_MODE_STATIC = 0x11, /* Static color mode */
POLYCHROME_V2_MODE_BREATHING = 0x12, /* Breating effect mode */
POLYCHROME_V2_MODE_STROBE = 0x13, /* Strobe effect mode */
POLYCHROME_V2_MODE_SPECTRUM_CYCLE = 0x14, /* Spectrum Cycle effect mode */
POLYCHROME_V2_MODE_RANDOM = 0x15, /* Random effect mode */
POLYCHROME_V2_MODE_WAVE = 0x17, /* Wave effect mode */
POLYCHROME_V2_MODE_SPRING = 0x18, /* Spring effect mode */
POLYCHROME_V2_MODE_STACK = 0x19, /* Stack effect mode */
POLYCHROME_V2_MODE_CRAM = 0x1A, /* Cram effect mode */
POLYCHROME_V2_MODE_SCAN = 0x1B, /* Scan effect mode */
POLYCHROME_V2_MODE_NEON = 0x1C, /* Neon effect mode */
POLYCHROME_V2_MODE_WATER = 0x1D, /* Water effect mode */
POLYCHROME_V2_MODE_RAINBOW = 0x1E, /* Rainbow effect mode */
};
enum
{
POLYCHROME_V2_BREATHING_SPEED_MIN = 0x0A, /* Slowest speed */
POLYCHROME_V2_BREATHING_SPEED_DEFAULT = 0x06, /* Default speed */
POLYCHROME_V2_BREATHING_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_STROBE_SPEED_MIN = 0xA0, /* Slowest speed */
POLYCHROME_V2_STROBE_SPEED_DEFAULT = 0x4D, /* Default speed */
POLYCHROME_V2_STROBE_SPEED_MAX = 0x05, /* Fastest speed */
POLYCHROME_V2_SPECTRUM_CYCLE_SPEED_MIN = 0xA0, /* Slowest speed */
POLYCHROME_V2_SPECTRUM_CYCLE_SPEED_DEFAULT = 0x50, /* Default speed */
POLYCHROME_V2_SPECTRUM_CYCLE_SPEED_MAX = 0x0A, /* Fastest speed */
POLYCHROME_V2_RANDOM_SPEED_MIN = 0xA0, /* Slowest speed */
POLYCHROME_V2_RANDOM_SPEED_DEFAULT = 0x4D, /* Default speed */
POLYCHROME_V2_RANDOM_SPEED_MAX = 0x05, /* Fastest speed */
POLYCHROME_V2_WAVE_SPEED_MIN = 0x06, /* Slowest speed */
POLYCHROME_V2_WAVE_SPEED_DEFAULT = 0x03, /* Default speed */
POLYCHROME_V2_WAVE_SPEED_MAX = 0x01, /* Fastest speed */
POLYCHROME_V2_SPRING_SPEED_MIN = 0x20, /* Slowest speed */
POLYCHROME_V2_SPRING_SPEED_DEFAULT = 0x11, /* Default speed */
POLYCHROME_V2_SPRING_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_STACK_SPEED_MIN = 0x20, /* Slowest speed */
POLYCHROME_V2_STACK_SPEED_DEFAULT = 0x11, /* Default speed */
POLYCHROME_V2_STACK_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_CRAM_SPEED_MIN = 0x20, /* Slowest speed */
POLYCHROME_V2_CRAM_SPEED_DEFAULT = 0x11, /* Default speed */
POLYCHROME_V2_CRAM_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_SCAN_SPEED_MIN = 0x20, /* Slowest speed */
POLYCHROME_V2_SCAN_SPEED_DEFAULT = 0x11, /* Default speed */
POLYCHROME_V2_SCAN_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_NEON_SPEED_MIN = 0x20, /* Slowest speed */
POLYCHROME_V2_NEON_SPEED_DEFAULT = 0x11, /* Default speed */
POLYCHROME_V2_NEON_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_WATER_SPEED_MIN = 0x20, /* Slowest speed */
POLYCHROME_V2_WATER_SPEED_DEFAULT = 0x11, /* Default speed */
POLYCHROME_V2_WATER_SPEED_MAX = 0x02, /* Fastest speed */
POLYCHROME_V2_RAINBOW_SPEED_MIN = 0x12, /* Slowest speed */
POLYCHROME_V2_RAINBOW_SPEED_DEFAULT = 0x08, /* Default speed */
POLYCHROME_V2_RAINBOW_SPEED_MAX = 0x02, /* Fastest speed */
};
class ASRockPolychromeV2SMBusController
{
public:
ASRockPolychromeV2SMBusController(i2c_smbus_interface* bus, polychrome_dev_id dev);
~ASRockPolychromeV2SMBusController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetFirmwareVersion();
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);
uint8_t zone_led_count[6];
uint16_t fw_version;
private:
std::string device_name;
uint8_t active_zone;
uint8_t active_mode;
uint8_t active_speed;
i2c_smbus_interface* bus;
polychrome_dev_id dev;
void ReadLEDConfiguration();
};
@@ -0,0 +1,328 @@
/*---------------------------------------------------------*\
| 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"
static const char* polychrome_v2_zone_names[] =
{
"RGB LED 1 Header",
"RGB LED 2 Header",
"Audio",
"PCH",
"IO Cover",
"Addressable Header"
};
/**------------------------------------------------------------------*\
@name ASRock Polychrome v2 SMBus
@category Motherboard
@type SMBus
@save :robot:
@direct :x:
@effects :white_check_mark:
@detectors DetectASRockSMBusControllers
@comment ASRock Polychrome v2 controllers will save with each update.
Per ARGB LED support is not possible with these devices.
\*-------------------------------------------------------------------*/
RGBController_ASRockPolychromeV2SMBus::RGBController_ASRockPolychromeV2SMBus(ASRockPolychromeV2SMBusController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetDeviceName();
vendor = "ASRock";
version = controller->GetFirmwareVersion();
type = DEVICE_TYPE_MOTHERBOARD;
description = "ASRock Polychrome v2 Device";
location = controller->GetDeviceLocation();
mode Off;
Off.name = "Off";
Off.value = POLYCHROME_V2_MODE_OFF;
Off.flags = MODE_FLAG_AUTOMATIC_SAVE;
Off.color_mode = MODE_COLORS_NONE;
modes.push_back(Off);
mode Static;
Static.name = "Static";
Static.value = POLYCHROME_V2_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Static);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = POLYCHROME_V2_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = POLYCHROME_V2_BREATHING_SPEED_MIN;
Breathing.speed_max = POLYCHROME_V2_BREATHING_SPEED_MAX;
Breathing.speed = POLYCHROME_V2_BREATHING_SPEED_DEFAULT;
Breathing.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Breathing);
mode Strobe;
Strobe.name = "Strobe";
Strobe.value = POLYCHROME_V2_MODE_STROBE;
Strobe.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Strobe.speed_min = POLYCHROME_V2_STROBE_SPEED_MIN;
Strobe.speed_max = POLYCHROME_V2_STROBE_SPEED_MAX;
Strobe.speed = POLYCHROME_V2_STROBE_SPEED_DEFAULT;
Strobe.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Strobe);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = POLYCHROME_V2_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = POLYCHROME_V2_SPECTRUM_CYCLE_SPEED_MIN;
SpectrumCycle.speed_max = POLYCHROME_V2_SPECTRUM_CYCLE_SPEED_MAX;
SpectrumCycle.speed = POLYCHROME_V2_SPECTRUM_CYCLE_SPEED_DEFAULT;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
modes.push_back(SpectrumCycle);
mode Random;
Random.name = "Random";
Random.value = POLYCHROME_V2_MODE_RANDOM;
Random.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Random.speed_min = POLYCHROME_V2_RANDOM_SPEED_MIN;
Random.speed_max = POLYCHROME_V2_RANDOM_SPEED_MAX;
Random.speed = POLYCHROME_V2_RANDOM_SPEED_DEFAULT;
Random.color_mode = MODE_COLORS_NONE;
modes.push_back(Random);
mode Wave;
Wave.name = "Wave";
Wave.value = POLYCHROME_V2_MODE_WAVE;
Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Wave.speed_min = POLYCHROME_V2_WAVE_SPEED_MIN;
Wave.speed_max = POLYCHROME_V2_WAVE_SPEED_MAX;
Wave.speed = POLYCHROME_V2_WAVE_SPEED_DEFAULT;
Wave.color_mode = MODE_COLORS_NONE;
modes.push_back(Wave);
mode Spring;
Spring.name = "Spring";
Spring.value = POLYCHROME_V2_MODE_SPRING;
Spring.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Spring.speed_min = POLYCHROME_V2_SPRING_SPEED_MIN;
Spring.speed_max = POLYCHROME_V2_SPRING_SPEED_MAX;
Spring.speed = POLYCHROME_V2_SPRING_SPEED_DEFAULT;
Spring.color_mode = MODE_COLORS_NONE;
modes.push_back(Spring);
mode Stack;
Stack.name = "Stack";
Stack.value = POLYCHROME_V2_MODE_STACK;
Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Stack.speed_min = POLYCHROME_V2_STACK_SPEED_MIN;
Stack.speed_max = POLYCHROME_V2_STACK_SPEED_MAX;
Stack.speed = POLYCHROME_V2_STACK_SPEED_DEFAULT;
Stack.color_mode = MODE_COLORS_NONE;
modes.push_back(Stack);
mode Cram;
Cram.name = "Cram";
Cram.value = POLYCHROME_V2_MODE_CRAM;
Cram.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Cram.speed_min = POLYCHROME_V2_CRAM_SPEED_MIN;
Cram.speed_max = POLYCHROME_V2_CRAM_SPEED_MAX;
Cram.speed = POLYCHROME_V2_CRAM_SPEED_DEFAULT;
Cram.color_mode = MODE_COLORS_NONE;
modes.push_back(Cram);
mode Scan;
Scan.name = "Scan";
Scan.value = POLYCHROME_V2_MODE_SCAN;
Scan.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Scan.speed_min = POLYCHROME_V2_SCAN_SPEED_MIN;
Scan.speed_max = POLYCHROME_V2_SCAN_SPEED_MAX;
Scan.speed = POLYCHROME_V2_SCAN_SPEED_DEFAULT;
Scan.color_mode = MODE_COLORS_NONE;
modes.push_back(Scan);
mode Neon;
Neon.name = "Neon";
Neon.value = POLYCHROME_V2_MODE_NEON;
Neon.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Neon.speed_min = POLYCHROME_V2_NEON_SPEED_MIN;
Neon.speed_max = POLYCHROME_V2_NEON_SPEED_MAX;
Neon.speed = POLYCHROME_V2_NEON_SPEED_DEFAULT;
Neon.color_mode = MODE_COLORS_NONE;
modes.push_back(Neon);
mode Water;
Water.name = "Water";
Water.value = POLYCHROME_V2_MODE_WATER;
Water.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Water.speed_min = POLYCHROME_V2_WATER_SPEED_MIN;
Water.speed_max = POLYCHROME_V2_WATER_SPEED_MAX;
Water.speed = POLYCHROME_V2_WATER_SPEED_DEFAULT;
Water.color_mode = MODE_COLORS_NONE;
modes.push_back(Water);
mode Rainbow;
Rainbow.name = "Rainbow";
Rainbow.value = POLYCHROME_V2_MODE_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_AUTOMATIC_SAVE;
Rainbow.speed_min = POLYCHROME_V2_RAINBOW_SPEED_MIN;
Rainbow.speed_max = POLYCHROME_V2_RAINBOW_SPEED_MAX;
Rainbow.speed = POLYCHROME_V2_RAINBOW_SPEED_DEFAULT;
Rainbow.color_mode = MODE_COLORS_NONE;
modes.push_back(Rainbow);
SetupZones();
}
RGBController_ASRockPolychromeV2SMBus::~RGBController_ASRockPolychromeV2SMBus()
{
delete controller;
}
void RGBController_ASRockPolychromeV2SMBus::SetupZones()
{
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
for(unsigned int zone_idx = 0; zone_idx < POLYCHROME_V2_ZONE_COUNT; zone_idx++)
{
if(controller->zone_led_count[zone_idx] > 0)
{
zone* new_zone = new zone();
/*---------------------------------------------------------*\
| Set zone name to channel name |
\*---------------------------------------------------------*/
new_zone->name = polychrome_v2_zone_names[zone_idx];
if(zone_idx == POLYCHROME_V2_ZONE_ADDRESSABLE)
{
new_zone->leds_min = 1;
new_zone->leds_max = 1;
new_zone->leds_count = 1;
}
else
{
new_zone->leds_min = controller->zone_led_count[zone_idx];
new_zone->leds_max = controller->zone_led_count[zone_idx];
new_zone->leds_count = controller->zone_led_count[zone_idx];
}
if(new_zone->leds_count > 1)
{
new_zone->type = ZONE_TYPE_LINEAR;
}
else
{
new_zone->type = ZONE_TYPE_SINGLE;
}
new_zone->matrix_map = NULL;
/*---------------------------------------------------------*\
| Push new zone to zones vector |
\*---------------------------------------------------------*/
zones.push_back(*new_zone);
}
}
unsigned int led_count = 0;
/*---------------------------------------------------------*\
| Set up LEDs |
\*---------------------------------------------------------*/
for(unsigned int zone_idx = 0; zone_idx < POLYCHROME_V2_ZONE_COUNT; zone_idx++)
{
if(controller->zone_led_count[zone_idx] > 0)
{
for(unsigned int led_idx = 0; led_idx < controller->zone_led_count[zone_idx]; led_idx++)
{
/*---------------------------------------------------------*\
| Each zone only has one LED |
\*---------------------------------------------------------*/
led* new_led = new led();
new_led->name = polychrome_v2_zone_names[zone_idx];
new_led->name.append(" " + std::to_string(led_idx + 1));
new_led->value = 0;
if(zone_idx == POLYCHROME_V2_ZONE_ADDRESSABLE)
{
new_led->value = 0x19;
}
/*---------------------------------------------------------*\
| Push new LED to LEDs vector |
\*---------------------------------------------------------*/
leds.push_back(*new_led);
led_count++;
if(zone_idx == POLYCHROME_V2_ZONE_ADDRESSABLE)
{
break;
}
}
}
}
SetupColors();
}
void RGBController_ASRockPolychromeV2SMBus::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_ASRockPolychromeV2SMBus::DeviceUpdateLEDs()
{
for(unsigned int led = 0; led < colors.size(); led++)
{
UpdateSingleLED(led);
}
}
void RGBController_ASRockPolychromeV2SMBus::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_ASRockPolychromeV2SMBus::UpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
unsigned char blu = RGBGetBValue(colors[led]);
/*---------------------------------------------------------*\
| If the LED value is non-zero, this LED overrides the LED |
| index |
\*---------------------------------------------------------*/
if(leds[led].value != 0)
{
led = leds[led].value;
}
controller->SetColorsAndSpeed(led, red, grn, blu);
}
void RGBController_ASRockPolychromeV2SMBus::DeviceUpdateMode()
{
controller->SetMode(0, modes[active_mode].value, modes[active_mode].speed);
DeviceUpdateLEDs();
}
@@ -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;
};
@@ -0,0 +1,177 @@
/*---------------------------------------------------------*\
| 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 <vector>
#include "Detector.h"
#include "ASRockASRRGBSMBusController.h"
#include "ASRockPolychromeV1SMBusController.h"
#include "ASRockPolychromeV2SMBusController.h"
#include "LogManager.h"
#include "RGBController_ASRockASRRGBSMBus.h"
#include "RGBController_ASRockPolychromeV1SMBus.h"
#include "RGBController_ASRockPolychromeV2SMBus.h"
#include "i2c_smbus.h"
#include "pci_ids.h"
/*******************************************************************************************\
* *
* TestForPolychromeSMBusController *
* *
* Tests the given address to see if an ASRock RGB controller exists there. *
* First does a quick write to test for a response *
* *
\*******************************************************************************************/
#define ASROCK_DETECTOR_NAME "ASRock SMBus Detectector"
#define VENDOR_NAME "ASRock"
#define SMBUS_ADDRESS 0x6A
enum
{
ASROCK_TYPE_UNKNOWN = 0x00, /* Unknown Type or Not ASRock Device */
ASROCK_TYPE_ASRLED = 0x01, /* ASRock Firmware 1.x - ASR LED */
ASROCK_TYPE_POLYCHROME_V1 = 0x02, /* ASRock Firmware 2.x - Polychrome V1 */
ASROCK_TYPE_POLYCHROME_V2 = 0x03, /* ASRock Firmware 3.x - Polychrome V2 */
ASROCK_REG_FIRMWARE_VER = 0x00, /* Firmware version Major.Minor */
};
union u16_to_u8
{
uint16_t u16;
struct
{
uint8_t lsb;
uint8_t msb;
};
};
bool TestForPolychromeSMBusController(i2c_smbus_interface* bus, uint8_t address)
{
bool pass = false;
int res = bus->i2c_smbus_write_quick(address, I2C_SMBUS_WRITE);
if (res >= 0)
{
pass = true;
}
return(pass);
} /* TestForPolychromeController() */
uint16_t GetFirmwareVersion(i2c_smbus_interface* bus, uint8_t address)
{
// The firmware register holds two bytes, so the first read should return 2
// If not, report invalid firmware revision
LOG_DEBUG("[%s] Reading back device firmware version", ASROCK_DETECTOR_NAME);
u16_to_u8 asrock_version_u16;
// Version response array needs to be 32 bytes to prevent non ASRock board from stack smashing
uint8_t asrock_version[I2C_SMBUS_BLOCK_MAX] = { 0x00, 0x00 };
if (bus->i2c_smbus_read_block_data(address, ASROCK_REG_FIRMWARE_VER, asrock_version) == 0x02)
{
asrock_version_u16.msb = asrock_version[0];
asrock_version_u16.lsb = asrock_version[1];
LOG_DEBUG("[%s] Device firmware version: v%02d.%02d", ASROCK_DETECTOR_NAME, asrock_version_u16.msb, asrock_version_u16.lsb);
return(asrock_version_u16.u16);
}
else
{
LOG_WARNING("[%s] Firmware readback failed; Returning Unknown Version", ASROCK_DETECTOR_NAME);
return(ASROCK_TYPE_UNKNOWN);
}
}
/******************************************************************************************\
* *
* DetectPolychromeControllers *
* *
* Detect ASRock Polychrome RGB SMBus controllers on the enumerated I2C busses at *
* address 0x6A. *
* *
* bus - pointer to i2c_smbus_interface where Polychrome device is connected *
* dev - I2C address of Polychrome device *
* *
\******************************************************************************************/
void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
{
for(unsigned int bus = 0; bus < busses.size(); bus++)
{
IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device)
{
if(busses[bus]->pci_subsystem_vendor == ASROCK_SUB_VEN)
{
LOG_DEBUG(SMBUS_CHECK_DEVICE_MESSAGE_EN, ASROCK_DETECTOR_NAME, bus, VENDOR_NAME, SMBUS_ADDRESS);
// Check for Polychrome controller at 0x6A
if(TestForPolychromeSMBusController(busses[bus], SMBUS_ADDRESS))
{
LOG_DEBUG("[%s] Detected a device at address 0x%02X, testing for a known controller", ASROCK_DETECTOR_NAME, SMBUS_ADDRESS);
u16_to_u8 version;
version.u16 = GetFirmwareVersion(busses[bus], SMBUS_ADDRESS);
switch (version.msb)
{
case ASROCK_TYPE_ASRLED:
{
LOG_DEBUG("[%s] Found a ASR RGB LED Controller", ASROCK_DETECTOR_NAME);
ASRockASRRGBSMBusController* controller = new ASRockASRRGBSMBusController(busses[bus], SMBUS_ADDRESS);
controller-> fw_version = version.u16;
RGBController_ASRockASRRGBSMBus* rgb_controller = new RGBController_ASRockASRRGBSMBus(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
break;
case ASROCK_TYPE_POLYCHROME_V1:
{
LOG_DEBUG("[%s] Found a Polychrome v1 Controller", ASROCK_DETECTOR_NAME);
ASRockPolychromeV1SMBusController* controller = new ASRockPolychromeV1SMBusController(busses[bus], SMBUS_ADDRESS);
controller-> fw_version = version.u16;
RGBController_ASRockPolychromeV1SMBus* rgb_controller = new RGBController_ASRockPolychromeV1SMBus(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
break;
case ASROCK_TYPE_POLYCHROME_V2:
{
LOG_DEBUG("[%s] Found a Polychrome v2 Controller", ASROCK_DETECTOR_NAME);
ASRockPolychromeV2SMBusController* controller = new ASRockPolychromeV2SMBusController(busses[bus], SMBUS_ADDRESS);
controller-> fw_version = version.u16;
RGBController_ASRockPolychromeV2SMBus* rgb_controller = new RGBController_ASRockPolychromeV2SMBus(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
break;
default:
LOG_DEBUG("[%s] Not a Polychrome device or unknown type", ASROCK_DETECTOR_NAME);
break;
}
}
else
{
LOG_DEBUG("[%s] Bus %02d has no response at 0x%02X", ASROCK_DETECTOR_NAME, bus, SMBUS_ADDRESS);
}
}
else
{
LOG_DEBUG(SMBUS_CHECK_DEVICE_FAILURE_EN, ASROCK_DETECTOR_NAME, bus, VENDOR_NAME);
}
}
}
} /* DetectSMBusPolychromeControllers() */
REGISTER_I2C_DETECTOR("ASRock Motherboard SMBus Controllers", DetectASRockSMBusControllers);
@@ -0,0 +1,838 @@
/*---------------------------------------------------------*\
| 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 <cstring>
#include <cstdint>
#include <map>
#include <thread>
#include <chrono>
#include <algorithm>
#include <sstream>
#include "RGBController.h"
#include "AlienwareController.h"
#include "LogManager.h"
#include "StringUtils.h"
typedef uint32_t alienware_platform_id;
/*---------------------------------------------------------*\
| Some devices appear to report the wrong number of zones. |
| Record that here. |
\*---------------------------------------------------------*/
static const std::map<alienware_platform_id, uint8_t> zone_quirks_table =
{
{ 0x0C01, 4 }, // Dell G5 SE 5505
{ 0x0A01, 16 }, // Dell G7 15 7500
{ 0x0E03, 4 }, // Dell G15 5511
{ 0x0E0A, 4 } // Dell G15 5530
};
/*---------------------------------------------------------*\
| Add zones for devices here, mapping the platform ID to |
| the zone names |
\*---------------------------------------------------------*/
static const std::map<alienware_platform_id, std::vector<const char*>> zone_names_table =
{
{ 0x0C01, { "Left", "Middle", "Right", "Numpad" } },
{ 0x0A01, { "Left", "Center Left", "Center Right", "Right",
"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" } },
{ 0x0E03, { "Left", "Middle", "Right", "Numpad" } },
{ 0x0E0A, { "Left", "Middle", "Right", "Numpad" } }
};
static void SendHIDReport(hid_device *dev, const unsigned char* usb_buf, size_t usb_buf_size)
{
using namespace std::chrono_literals;
hid_send_feature_report(dev, usb_buf, usb_buf_size);
/*-----------------------------------------------------*\
| The controller really doesn't like really spammed by |
| too many commands at once... the delay may be command |
| dependent also. Delay for longer if the command is |
| changing animation state |
\*-----------------------------------------------------*/
unsigned char command = usb_buf[2];
unsigned char subcommand = usb_buf[3];
if( ( command == ALIENWARE_COMMAND_USER_ANIM )
&& ( ( subcommand == ALIENWARE_COMMAND_USER_ANIM_FINISH_PLAY )
|| ( subcommand == ALIENWARE_COMMAND_USER_ANIM_FINISH_SAVE ) ) )
{
std::this_thread::sleep_for(1s);
}
else
{
std::this_thread::sleep_for(60ms);
}
}
AlienwareController::AlienwareController(hid_device* dev_handle, const hid_device_info& info, std::string name)
{
HidapiAlienwareReport report;
dev = dev_handle;
device_name = name;
location = info.path;
/*-----------------------------------------------------*\
| Get serial number |
\*-----------------------------------------------------*/
serial_number = StringUtils::wstring_to_string(info.serial_number);
/*-----------------------------------------------------*\
| Get zone information by checking firmware |
| configuration |
\*-----------------------------------------------------*/
report = Report(ALIENWARE_COMMAND_REPORT_CONFIG);
alienware_platform_id platform_id = report.data[4] << 8 | report.data[5];
/*-----------------------------------------------------*\
| Check if the device reports the wrong number of zones |
\*-----------------------------------------------------*/
unsigned number_of_zones = zone_quirks_table.count(platform_id) ? zone_quirks_table.at(platform_id) : report.data[6];
/*-----------------------------------------------------*\
| Get firmware version |
\*-----------------------------------------------------*/
report = Report(ALIENWARE_COMMAND_REPORT_FIRMWARE);
std::stringstream fw_string;
fw_string << static_cast<unsigned>(report.data[4]) << '.' << static_cast<unsigned>(report.data[5]) << '.' << static_cast<unsigned>(report.data[6]);
version = fw_string.str();
/*-----------------------------------------------------*\
| Initialize Alienware zones |
\*-----------------------------------------------------*/
zones.resize(number_of_zones);
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" |
\*-------------------------------------------------*/
for(size_t i = 0; i < number_of_zones; i++)
{
zone_names.emplace_back("Unknown");
}
}
/*-----------------------------------------------------*\
| Set defaults for all zones |
| It doesn't seem possible to read the controller's |
| current state, hence the default value being set here.|
\*-----------------------------------------------------*/
for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
zones[zone_idx].color[0] = 0x000000;
zones[zone_idx].color[1] = 0x000000;
zones[zone_idx].mode = ALIENWARE_MODE_COLOR;
/*-------------------------------------------------*\
| Default period value from ACC |
\*-------------------------------------------------*/
zones[zone_idx].period = 2000;
zones[zone_idx].tempo = ALIENWARE_TEMPO_MAX;
zones[zone_idx].dim = 0;
}
/*-----------------------------------------------------*\
| Initialize dirty flags |
\*-----------------------------------------------------*/
dirty = true;
dirty_dim = true;
}
AlienwareController::~AlienwareController()
{
}
unsigned int AlienwareController::GetZoneCount()
{
return((unsigned int)zones.size());
}
std::vector<const char*> AlienwareController::GetZoneNames()
{
return(zone_names);
}
std::string AlienwareController::GetDeviceLocation()
{
return("HID: " + location);
}
std::string AlienwareController::GetDeviceName()
{
return(device_name);
}
std::string AlienwareController::GetSerialString()
{
return(serial_number);
}
std::string AlienwareController::GetFirmwareVersion()
{
return(version);
}
AlienwareController::HidapiAlienwareReport AlienwareController::GetResponse()
{
/*-----------------------------------------------------*\
| Zero init. This is not updated if there's a problem. |
\*-----------------------------------------------------*/
HidapiAlienwareReport result;
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(result.data, 0x00, sizeof(result.data));
hid_get_feature_report(dev, result.data, HIDAPI_ALIENWARE_REPORT_SIZE);
return(result);
}
AlienwareController::HidapiAlienwareReport AlienwareController::Report(uint8_t subcommand)
{
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_REPORT;
usb_buf[0x03] = subcommand;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
return(GetResponse());
}
AlienwareReport AlienwareController::GetStatus(uint8_t subcommand)
{
HidapiAlienwareReport data = Report(subcommand);
AlienwareReport result = AlienwareReport{};
/*-----------------------------------------------------*\
| Skip first byte, as that's the report number, which |
| should be 0 |
\*-----------------------------------------------------*/
memcpy(result.data, &data.data[1], sizeof(result.data));
return(result);
}
bool AlienwareController::Dim(std::vector<uint8_t> zones, double percent)
{
/*-----------------------------------------------------*\
| Bail out if there are no zones to update |
\*-----------------------------------------------------*/
if(!zones.size())
{
return(true);
}
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
uint16_t num_zones = (uint16_t)zones.size();
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_DIM;
usb_buf[0x03] = static_cast<uint8_t>(percent);
usb_buf[0x04] = num_zones >> 8;
usb_buf[0x05] = num_zones & 0xFF;
for(size_t i = 0; i < num_zones; i++)
{
usb_buf[0x06+i] = zones[i];
}
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
HidapiAlienwareReport response = GetResponse();
/*-----------------------------------------------------*\
| For this command, error is if the output equals the |
| input |
\*-----------------------------------------------------*/
return((response.data[1] == 0x03) && memcmp(usb_buf, response.data, HIDAPI_ALIENWARE_REPORT_SIZE));
}
bool AlienwareController::UserAnimation(uint16_t subcommand, uint16_t animation, uint16_t duration)
{
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00 per hidapi |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_USER_ANIM;
usb_buf[0x03] = subcommand >> 8;
usb_buf[0x04] = subcommand & 0xFF;
usb_buf[0x05] = animation >> 8;
usb_buf[0x06] = animation & 0xFF;
usb_buf[0x07] = duration >> 8;
usb_buf[0x08] = duration & 0xFF;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Every subcommand appears to report its result on a |
| different byte |
\*-----------------------------------------------------*/
HidapiAlienwareReport response = GetResponse();
/*-----------------------------------------------------*\
| The only time the 0x03 byte is zero is if the |
| controller has crashed |
\*-----------------------------------------------------*/
if(response.data[1] == 0)
{
return(false);
}
switch(subcommand)
{
case ALIENWARE_COMMAND_USER_ANIM_FINISH_SAVE:
return(!response.data[7]);
case ALIENWARE_COMMAND_USER_ANIM_FINISH_PLAY:
return(!response.data[5]);
case ALIENWARE_COMMAND_USER_ANIM_PLAY:
return(!response.data[7]);
default:
return(true);
}
}
bool AlienwareController::SelectZones(const std::vector<uint8_t>& zones)
{
/*-----------------------------------------------------*\
| Bail if zones is empty, and return false to indicate |
| nothing has changed |
\*-----------------------------------------------------*/
if(!zones.size())
{
return(false);
}
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
uint16_t num_zones = (uint16_t)zones.size();
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_SELECT_ZONES;
usb_buf[0x03] = 1; // loop?
usb_buf[0x04] = num_zones >> 8;
usb_buf[0x05] = num_zones & 0xFF;
for(size_t i = 0; i < num_zones; i++)
{
usb_buf[0x06+i] = zones[i];
}
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
HidapiAlienwareReport response = GetResponse();
/*-----------------------------------------------------*\
| For this command, error is if the output equals the |
| input |
\*-----------------------------------------------------*/
return((response.data[1] == 0x03) && memcmp(usb_buf, response.data, HIDAPI_ALIENWARE_REPORT_SIZE));
}
bool AlienwareController::ModeAction(uint8_t mode, uint16_t duration, uint16_t tempo, RGBColor color)
{
return(ModeAction(&mode, &duration, &tempo, &color, 1));
}
bool AlienwareController::ModeAction
(
const uint8_t* mode,
const uint16_t* duration,
const uint16_t* tempo,
const RGBColor* color,
unsigned amount
)
{
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Amount must be 3 or less, as that's how many |
| subcommands can fit into one report |
\*-----------------------------------------------------*/
if(amount > 3)
{
return(false);
}
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_ADD_ACTION;
for(unsigned int i = 0; i < amount; i++)
{
usb_buf[0x03 + (8 * i)] = mode[i];
usb_buf[0x04 + (8 * i)] = duration[i] >> 8;
usb_buf[0x05 + (8 * i)] = duration[i] & 0xFF;
usb_buf[0x06 + (8 * i)] = tempo[i] >> 8;
usb_buf[0x07 + (8 * i)] = tempo[i] & 0xFF;
usb_buf[0x08 + (8 * i)] = RGBGetRValue(color[i]);
usb_buf[0x09 + (8 * i)] = RGBGetGValue(color[i]);
usb_buf[0x0A + (8 * i)] = RGBGetBValue(color[i]);
}
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
HidapiAlienwareReport response = GetResponse();
/*-----------------------------------------------------*\
| For this command, error is if the output equals the |
| input |
\*-----------------------------------------------------*/
return((response.data[1] == 0x03) && memcmp(usb_buf, response.data, HIDAPI_ALIENWARE_REPORT_SIZE));
}
bool AlienwareController::MultiModeAction
(
const uint8_t* mode,
const uint16_t* duration,
const uint16_t* tempo,
const RGBColor* color,
unsigned amount
)
{
bool result = true;
unsigned int left = amount;
while(left && result)
{
unsigned int tmp_amount;
tmp_amount = std::min(left, 3u);
result &= ModeAction(mode, duration, tempo, color, tmp_amount);
mode += tmp_amount;
duration += tmp_amount;
tempo += tmp_amount;
color += tmp_amount;
left -= tmp_amount;
}
return(result);
}
bool AlienwareController::SetColorDirect(RGBColor color, std::vector<uint8_t> zones)
{
/*-----------------------------------------------------*\
| Bail if zones is empty |
\*-----------------------------------------------------*/
if(zones.empty())
{
return(true);
}
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
uint16_t num_zones = (uint16_t)zones.size();
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_SET_COLOR;
usb_buf[0x03] = RGBGetRValue(color);
usb_buf[0x04] = RGBGetGValue(color);
usb_buf[0x05] = RGBGetBValue(color);
usb_buf[0x06] = num_zones >> 8;
usb_buf[0x07] = num_zones & 0xFF;
for(size_t i = 0; i < num_zones; i++)
{
usb_buf[0x08 + i] = zones[i];
}
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
HidapiAlienwareReport response = GetResponse();
/*-----------------------------------------------------*\
| For this command, error is if the output equals the |
| input |
\*-----------------------------------------------------*/
return((response.data[1] == 0x03) && memcmp(usb_buf, response.data, HIDAPI_ALIENWARE_REPORT_SIZE));
}
bool AlienwareController::Reset()
{
/*-----------------------------------------------------*\
| Bail if zones is empty |
\*-----------------------------------------------------*/
if(zones.empty())
{
return(true);
}
unsigned char usb_buf[HIDAPI_ALIENWARE_REPORT_SIZE];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
usb_buf[0x02] = ALIENWARE_COMMAND_RESET;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
SendHIDReport(dev, usb_buf, sizeof(usb_buf));
HidapiAlienwareReport response = GetResponse();
/*-----------------------------------------------------*\
| For this command, error is if the output equals the |
| input |
\*-----------------------------------------------------*/
return(response.data[1] == 0x03);
}
void AlienwareController::SetMode(uint8_t zone, uint8_t mode)
{
if(mode != zones[zone].mode)
{
zones[zone].mode = mode;
dirty = true;
}
}
void AlienwareController::SetColor(uint8_t zone, RGBColor color)
{
SetColor(zone, color, zones[zone].color[1]);
}
void AlienwareController::SetColor(uint8_t zone, RGBColor color1, RGBColor color2)
{
if ((color1 == zones[zone].color[0]) && (color2 == zones[zone].color[1]))
{
return;
}
zones[zone].color[0] = color1;
zones[zone].color[1] = color2;
dirty = true;
}
void AlienwareController::SetPeriod(uint8_t zone, uint16_t period)
{
if(period != zones[zone].period)
{
zones[zone].period = period;
dirty = true;
}
}
void AlienwareController::SetTempo(uint8_t zone, uint16_t tempo)
{
if(tempo != zones[zone].tempo)
{
zones[zone].tempo = tempo;
dirty = true;
}
}
void AlienwareController::SetDim(uint8_t zone, uint8_t dim)
{
if(dim != zones[zone].dim)
{
zones[zone].dim = dim;
dirty_dim = true;
}
}
void AlienwareController::UpdateDim()
{
if(!dirty_dim)
{
return;
}
/*-----------------------------------------------------*\
| Collect all zones that share dim settings, and update |
| them together |
\*-----------------------------------------------------*/
std::map<uint8_t, std::vector<uint8_t>> dim_zone_map;
for(size_t i = 0; i < zones.size(); i++)
{
dim_zone_map[zones[i].dim].emplace_back((uint8_t)i);
}
for(std::pair<const uint8_t, std::vector<uint8_t>> &pair : dim_zone_map)
{
/*-------------------------------------------------*\
| Bail on an error... |
\*-------------------------------------------------*/
if(!Dim(pair.second, pair.first))
{
return;
}
}
dirty_dim = false;
}
bool AlienwareController::UpdateDirect()
{
/*-----------------------------------------------------*\
| Collect all zones that share dim settings, and update |
| them together |
\*-----------------------------------------------------*/
std::map<RGBColor, std::vector<uint8_t>> color_zone_map;
for(size_t i = 0; i < zones.size(); i++)
{
color_zone_map[zones[i].color[0]].emplace_back((uint8_t)i);
}
for(std::pair<const RGBColor, std::vector<uint8_t>> &pair : color_zone_map)
{
/*-------------------------------------------------*\
| Bail on an error... |
\*-------------------------------------------------*/
if(!SetColorDirect(pair.first, pair.second))
{
return false;
}
}
return true;
}
static const RGBColor rainbow_colors[4][7] =
{
{ 0xFF0000, 0xFFA500, 0xFFFF00, 0x008000, 0x00BFFF, 0x0000FF, 0x800080 },
{ 0x800080, 0xFF0000, 0xFFA500, 0xFFFF00, 0x008000, 0x00BFFF, 0x0000FF },
{ 0x0000FF, 0x800080, 0xFF0000, 0xFFA500, 0xFFFF00, 0x008000, 0x00BFFF },
{ 0x00BFFF, 0x0000FF, 0x800080, 0xFF0000, 0xFFA500, 0xFFFF00, 0x008000 }
};
void AlienwareController::UpdateMode()
{
/*-----------------------------------------------------*\
| If there are no updates, don't bother running this |
\*-----------------------------------------------------*/
if(!dirty)
{
return;
}
bool result = UserAnimation(ALIENWARE_COMMAND_USER_ANIM_NEW, ALIENWARE_COMMAND_USER_ANIM_KEYBOARD, 0);
if(!result)
{
return;
}
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
alienware_zone zone = zones[zone_idx];
result = SelectZones({static_cast<uint8_t>(zone_idx)});
if(!result)
{
return;
}
/*-------------------------------------------------*\
| Some modes use 0x07D0 for their duration as sent |
| by AWCC traces, maybe 2000ms? |
\*-------------------------------------------------*/
switch (zone.mode)
{
case ALIENWARE_MODE_COLOR:
result = ModeAction(zone.mode, 2000, ALIENWARE_TEMPO_MAX, zone.color[0]);
break;
case ALIENWARE_MODE_PULSE:
result = ModeAction(zone.mode, zone.period, zone.tempo, zone.color[0]);
break;
case ALIENWARE_MODE_MORPH:
{
uint8_t zones[2] = { zone.mode, zone.mode };
uint16_t periods[2] = { zone.period, zone.period };
uint16_t tempos[2] = { zone.tempo, zone.tempo };
RGBColor colors[2] = { zone.color[0], zone.color[1] };
result = MultiModeAction(zones, periods, tempos, colors, 2);
}
break;
case ALIENWARE_MODE_SPECTRUM:
{
uint8_t zones[7] = { ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH,
ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH,
ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH,
ALIENWARE_MODE_MORPH };
uint16_t periods[7] = { zone.period, zone.period,
zone.period, zone.period,
zone.period, zone.period,
zone.period };
uint16_t tempos[7] = { zone.tempo, zone.tempo,
zone.tempo, zone.tempo,
zone.tempo, zone.tempo,
zone.tempo };
result = MultiModeAction(zones, periods, tempos, rainbow_colors[0], 7);
}
break;
case ALIENWARE_MODE_RAINBOW:
{
uint8_t zones[7] = { ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH,
ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH,
ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH,
ALIENWARE_MODE_MORPH };
uint16_t periods[7] = { zone.period, zone.period,
zone.period, zone.period,
zone.period, zone.period,
zone.period };
uint16_t tempos[7] = { zone.tempo, zone.tempo,
zone.tempo, zone.tempo,
zone.tempo, zone.tempo,
zone.tempo };
result = MultiModeAction(zones, periods, tempos, rainbow_colors[zone_idx], 7);
}
break;
case ALIENWARE_MODE_BREATHING:
{
uint8_t zones[2] = { ALIENWARE_MODE_MORPH, ALIENWARE_MODE_MORPH };
uint16_t periods[2] = { zone.period, zone.period };
uint16_t tempos[2] = { zone.tempo, zone.tempo };
RGBColor colors[2] = { zone.color[0], 0x0 };
result = MultiModeAction(zones, periods, tempos, colors, 2);
}
break;
default:
result = false;
}
if(!result)
{
return;
}
}
result = UserAnimation(ALIENWARE_COMMAND_USER_ANIM_FINISH_PLAY, ALIENWARE_COMMAND_USER_ANIM_KEYBOARD, 0);
/*-------------------------------------------------*\
| Don't update dirty flag if there's an error |
\*-------------------------------------------------*/
if(!result)
{
return;
}
dirty = false;
}
void AlienwareController::UpdateController()
{
UpdateMode();
UpdateDim();
}
@@ -0,0 +1,163 @@
/*---------------------------------------------------------*\
| 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.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 */
ALIENWARE_COMMAND_USER_ANIM = 0x21, /* Set user animation settings */
ALIENWARE_COMMAND_POWER_ANIM = 0x22, /* Set power animation settings */
ALIENWARE_COMMAND_SELECT_ZONES = 0x23, /* Select zones to apply actions to */
ALIENWARE_COMMAND_ADD_ACTION = 0x24, /* Set actions to apply */
ALIENWARE_COMMAND_UNKNOWN1 = 0x25, /* Supposedly set event? */
ALIENWARE_COMMAND_DIM = 0x26, /* Set dim percentage */
ALIENWARE_COMMAND_SET_COLOR = 0x27, /* Unclear (causes color flash) */
ALIENWARE_COMMAND_RESET = 0x28, /* Reset */
ALIENWARE_COMMAND_ERASE_FLASH = 0xFF, /* Erases flash memory on controller */
};
enum
{
ALIENWARE_COMMAND_REPORT_FIRMWARE = 0x00, /* Get firmware verion */
ALIENWARE_COMMAND_REPORT_STATUS = 0x01, /* Get status */
ALIENWARE_COMMAND_REPORT_CONFIG = 0x02, /* Get firmware config */
ALIENWARE_COMMAND_REPORT_ANIMATION = 0x03, /* Get animation count and last id */
ALIENWARE_COMMAND_REPORT_UNKNOWN1 = 0x04, /* Get ELC animation by ID */
ALIENWARE_COMMAND_REPORT_UNKNOWN2 = 0x05, /* Read series??? */
ALIENWARE_COMMAND_REPORT_UNKNOWN3 = 0x06, /* Get action??? */
ALIENWARE_COMMAND_REPORT_UNKNOWN4 = 0x07, /* Get Caldera status??? */
};
enum
{
ALIENWARE_COMMAND_USER_ANIM_NEW = 0x0001, /* Start new animation */
ALIENWARE_COMMAND_USER_ANIM_FINISH_SAVE = 0x0002, /* Finish and save animation */
ALIENWARE_COMMAND_USER_ANIM_FINISH_PLAY = 0x0003, /* Finish and play animation */
ALIENWARE_COMMAND_USER_ANIM_REMOVE = 0x0004, /* Remove/erase animation */
ALIENWARE_COMMAND_USER_ANIM_PLAY = 0x0005, /* Play animation */
ALIENWARE_COMMAND_USER_ANIM_DEFAULT = 0x0006, /* Set default animation */
ALIENWARE_COMMAND_USER_ANIM_STARTUP = 0x0007, /* Set startup animation */
};
enum
{
ALIENWARE_ANIM_DEFAULT_STARTUP = 0x0008, /* Default slot for startup */
ALIENWARE_ANIM_DEFAULT = 0x0061, /* Default slot */
ALIENWARE_COMMAND_USER_ANIM_KEYBOARD = 0xFFFF, /* Non-saved animation slot */
};
enum
{
ALIENWARE_MODE_COLOR = 0x00, /* Action to set color mode */
ALIENWARE_MODE_PULSE = 0x01, /* Action to set pulse mode */
ALIENWARE_MODE_MORPH = 0x02, /* Action to set morph mode */
ALIENWARE_MODE_SPECTRUM, /* Abitrary code for spectrum mode */
ALIENWARE_MODE_RAINBOW, /* Arbitrary code for rainbow wave mode */
ALIENWARE_MODE_BREATHING, /* Arbitrary code for rainbow wave mode */
};
enum
{
ALIENWARE_TEMPO_MIN = 0x0064, /* Min tempo (as used by AWCC) */
ALIENWARE_TEMPO_MAX = 0x00FA, /* Max tempo (as used by AWCC) */
ALIENWARE_TEMPO_SPECTRUM = 0x000F, /* Used by Spectrum mode */
};
enum
{
ALIENWARE_DURATION_LONG = 0x09C4, /* Min tempo (as used by AWCC) */
ALIENWARE_DURATION_MED = 0x05DC, /* Max tempo (as used by AWCC) */
ALIENWARE_DURATION_SHORT = 0x01F3, /* Max tempo (as used by AWCC) */
ALIENWARE_DURATION_SPECTRUM = 0x01AC, /* Used by Spectrum mode */
};
typedef struct
{
unsigned char data[ALIENWARE_REPORT_SIZE];
} AlienwareReport;
class AlienwareController
{
public:
AlienwareController(hid_device* dev_handle, const hid_device_info& info, std::string name);
~AlienwareController();
std::string GetSerialString();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetFirmwareVersion();
unsigned GetZoneCount();
std::vector<const char*> GetZoneNames();
void SetColor(uint8_t zone, RGBColor color);
void SetColor(uint8_t zone, RGBColor color1, RGBColor color2);
void SetMode(uint8_t zone, uint8_t mode);
void SetPeriod(uint8_t zone, uint16_t period);
void SetTempo(uint8_t zone, uint16_t tempo);
void SetDim(uint8_t zone, uint8_t dim);
AlienwareReport GetStatus(uint8_t subcommand);
void UpdateDim();
void UpdateMode();
void UpdateController();
protected:
hid_device* dev;
private:
typedef struct
{
RGBColor color[2];
uint8_t mode;
uint16_t period;
uint16_t tempo;
uint8_t dim;
} alienware_zone;
typedef struct
{
unsigned char data[HIDAPI_ALIENWARE_REPORT_SIZE];
} HidapiAlienwareReport;
std::string device_name;
std::string location;
std::vector<alienware_zone> zones;
std::string serial_number;
std::string version;
std::vector<const char*> zone_names;
bool dirty;
bool dirty_dim;
HidapiAlienwareReport GetResponse();
HidapiAlienwareReport Report(uint8_t subcommand);
bool Dim(std::vector<uint8_t> zones, double percent);
bool UserAnimation(uint16_t subcommand, uint16_t animation, uint16_t duration);
bool SelectZones(const std::vector<uint8_t>& zones);
bool ModeAction(uint8_t mode, uint16_t duration, uint16_t tempo, RGBColor color);
bool ModeAction(const uint8_t *mode, const uint16_t *duration, const uint16_t *tempo, const RGBColor *color, unsigned amount);
bool MultiModeAction(const uint8_t *mode, const uint16_t *duration, const uint16_t *tempo, const RGBColor *color, unsigned amount);
bool SetColorDirect(RGBColor color, std::vector<uint8_t> zones);
bool UpdateDirect();
bool Reset();
};
@@ -0,0 +1,39 @@
/*---------------------------------------------------------*\
| 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_Alienware.h"
/*---------------------------------------------------------*\
| Alienware vendor ID |
\*---------------------------------------------------------*/
#define ALIENWARE_VID 0x187C
/*---------------------------------------------------------*\
| Alienware product ID |
\*---------------------------------------------------------*/
#define ALIENWARE_G_SERIES_PID1 0x0550
#define ALIENWARE_G_SERIES_PID2 0x0551
void DetectAlienwareControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AlienwareController* controller = new AlienwareController(dev, *info, name);
RGBController_Alienware* rgb_controller = new RGBController_Alienware(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR("Dell G Series LED Controller", DetectAlienwareControllers, ALIENWARE_VID, ALIENWARE_G_SERIES_PID1);
REGISTER_HID_DETECTOR("Dell G Series LED Controller", DetectAlienwareControllers, ALIENWARE_VID, ALIENWARE_G_SERIES_PID2);
@@ -0,0 +1,285 @@
/*---------------------------------------------------------*\
| 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
@category Keyboard
@type USB
@save :x:
@direct :x:
@effects :white_check_mark:
@detectors DetectAlienwareControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_Alienware::RGBController_Alienware(AlienwareController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetDeviceName();
vendor = "Alienware";
type = DEVICE_TYPE_KEYBOARD;
description = "Alienware USB Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
version = controller->GetFirmwareVersion();
mode Color;
Color.name = "Static";
Color.value = ALIENWARE_MODE_COLOR;
Color.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Color.color_mode = MODE_COLORS_PER_LED;
Color.colors_min = 1;
Color.colors_max = 1;
Color.brightness_min = 100;
Color.brightness_max = 0;
Color.brightness = 0;
modes.push_back(Color);
mode Pulse;
Pulse.name = "Flashing";
Pulse.value = ALIENWARE_MODE_PULSE;
Pulse.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Pulse.color_mode = MODE_COLORS_PER_LED;
Pulse.colors_min = 1;
Pulse.colors_max = 1;
Pulse.speed_min = ALIENWARE_TEMPO_MIN;
Pulse.speed_max = ALIENWARE_TEMPO_MAX;
Pulse.speed = ALIENWARE_TEMPO_MIN;
Pulse.brightness_min = 100;
Pulse.brightness_max = 0;
Pulse.brightness = 0;
modes.push_back(Pulse);
mode Morph;
Morph.name = "Morph";
Morph.value = ALIENWARE_MODE_MORPH;
Morph.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Morph.color_mode = MODE_COLORS_MODE_SPECIFIC;
Morph.colors_min = 2 * controller->GetZoneCount();
Morph.colors_max = Morph.colors_min;
Morph.colors.resize(Morph.colors_max);
Morph.speed_min = ALIENWARE_TEMPO_MIN;
Morph.speed_max = ALIENWARE_TEMPO_MAX;
Morph.speed = ALIENWARE_TEMPO_MIN;
Morph.brightness_min = 100;
Morph.brightness_max = 0;
Morph.brightness = 0;
modes.push_back(Morph);
mode Spectrum;
Spectrum.name = "Spectrum Cycle";
Spectrum.value = ALIENWARE_MODE_SPECTRUM;
Spectrum.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Spectrum.color_mode = MODE_COLORS_NONE;
Spectrum.speed_min = ALIENWARE_TEMPO_SPECTRUM;
Spectrum.speed_max = ALIENWARE_TEMPO_MAX;
Spectrum.speed = ALIENWARE_TEMPO_SPECTRUM;
Spectrum.brightness_min = 100;
Spectrum.brightness_max = 0;
Spectrum.brightness = 0;
modes.push_back(Spectrum);
mode Rainbow;
Rainbow.name = "Rainbow Wave";
Rainbow.value = ALIENWARE_MODE_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Rainbow.color_mode = MODE_COLORS_NONE;
Rainbow.speed_min = ALIENWARE_TEMPO_SPECTRUM;
Rainbow.speed_max = ALIENWARE_TEMPO_MAX;
Rainbow.speed = ALIENWARE_TEMPO_SPECTRUM;
Rainbow.brightness_min = 100;
Rainbow.brightness_max = 0;
Rainbow.brightness = 0;
modes.push_back(Rainbow);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = ALIENWARE_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Breathing.color_mode = MODE_COLORS_PER_LED;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.speed_min = ALIENWARE_TEMPO_MIN;
Breathing.speed_max = ALIENWARE_TEMPO_MAX;
Breathing.speed = ALIENWARE_TEMPO_MIN;
Breathing.brightness_min = 100;
Breathing.brightness_max = 0;
Breathing.brightness = 0;
modes.push_back(Breathing);
SetupZones();
controller->UpdateDim();
}
void RGBController_Alienware::SetupZones()
{
/*-------------------------------------------------*\
| Set zones and leds |
\*-------------------------------------------------*/
std::vector<const char*> zone_names = controller->GetZoneNames();
for(unsigned int zone_idx = 0; zone_idx < controller->GetZoneCount(); zone_idx++)
{
zone new_zone;
new_zone.name = zone_names[zone_idx];
new_zone.type = ZONE_TYPE_SINGLE;
new_zone.leds_min = 1;
new_zone.leds_max = 1;
new_zone.leds_count = 1;
new_zone.matrix_map = nullptr;
zones.emplace_back(new_zone);
}
for(unsigned int led_idx = 0; led_idx < zones.size(); led_idx++)
{
led new_led;
new_led.name = zones[led_idx].name + std::string(" LED");
leds.emplace_back(new_led);
}
SetupColors();
}
void RGBController_Alienware::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_Alienware::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_Alienware::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_Alienware::UpdateSingleLED(int led)
{
UpdateZoneLEDs(led);
}
static bool modes_eq(const mode& mode1, const mode& mode2)
{
return( ( mode1.name == mode2.name )
&& ( mode1.value == mode2.value )
&& ( mode1.flags == mode2.flags )
&& ( mode1.speed_min == mode2.speed_min )
&& ( mode1.speed_max == mode2.speed_max )
&& ( mode1.colors_min == mode2.colors_min )
&& ( mode1.colors_max == mode2.colors_max )
&& ( mode1.speed == mode2.speed )
&& ( mode1.direction == mode2.direction )
&& ( mode1.color_mode == mode2.color_mode )
&& ( mode1.colors == mode2.colors )
&& ( mode1.brightness == mode2.brightness )
&& ( mode1.brightness_min == mode2.brightness_min )
&& ( mode1.brightness_max == mode2.brightness_max ) );
}
void RGBController_Alienware::DeviceUpdateMode()
{
/*---------------------------------------------------------*\
| Copy mode to get the current state-- this is racy, as the |
| UI thread can be actively modifying this variable |
\*---------------------------------------------------------*/
int current_mode_idx = active_mode;
mode current_mode = modes[current_mode_idx];
bool done = false;
while(!done)
{
/*-----------------------------------------------------*\
| Setup state per zone |
\*-----------------------------------------------------*/
for(uint8_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
zone current_zone = zones[zone_idx];
/*-------------------------------------------------*\
| Some modes use 2000ms (0x07D0) for their duration,|
| per traces |
\*-------------------------------------------------*/
uint16_t period = 0x07d0;
controller->SetMode(zone_idx, current_mode.value);
switch(current_mode_idx)
{
case ALIENWARE_MODE_COLOR:
controller->SetPeriod(zone_idx, period);
controller->SetColor( zone_idx, colors[current_zone.start_idx]);
controller->SetTempo( zone_idx, ALIENWARE_TEMPO_MAX);
controller->SetDim( zone_idx, modes[current_mode_idx].brightness);
break;
case ALIENWARE_MODE_PULSE:
controller->SetPeriod(zone_idx, period);
controller->SetColor( zone_idx, colors[current_zone.start_idx]);
controller->SetTempo( zone_idx, current_mode.speed);
controller->SetDim( zone_idx, modes[current_mode_idx].brightness);
break;
case ALIENWARE_MODE_MORPH:
controller->SetPeriod(zone_idx, period);
controller->SetColor( zone_idx, current_mode.colors[zone_idx * 2], current_mode.colors[(zone_idx * 2) + 1]);
controller->SetTempo( zone_idx, current_mode.speed);
controller->SetDim( zone_idx, modes[current_mode_idx].brightness);
break;
case ALIENWARE_MODE_SPECTRUM:
case ALIENWARE_MODE_RAINBOW:
controller->SetPeriod(zone_idx, ALIENWARE_DURATION_SPECTRUM);
controller->SetTempo( zone_idx, current_mode.speed);
controller->SetDim( zone_idx, modes[current_mode_idx].brightness);
break;
case ALIENWARE_MODE_BREATHING:
controller->SetPeriod(zone_idx, period);
controller->SetColor( zone_idx, colors[current_zone.start_idx], 0x0);
controller->SetTempo( zone_idx, current_mode.speed);
controller->SetDim( zone_idx, modes[current_mode_idx].brightness);
break;
}
}
/*-----------------------------------------------------*\
| Due to rate-limiting, this can take more than one |
| second to execute |
\*-----------------------------------------------------*/
controller->UpdateController();
/*-----------------------------------------------------*\
| Re-run update if there's anything that's changed from |
| under us... |
\*-----------------------------------------------------*/
int new_current_mode_idx = active_mode;
mode new_current_mode = modes[current_mode_idx];
done = (current_mode_idx == new_current_mode_idx && modes_eq(new_current_mode, current_mode));
current_mode_idx = new_current_mode_idx;
current_mode = new_current_mode;
}
}
@@ -0,0 +1,36 @@
/*---------------------------------------------------------*\
| 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"
class RGBController_Alienware : public RGBController
{
public:
RGBController_Alienware(AlienwareController* controller_ptr);
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AlienwareController* controller;
std::chrono::steady_clock::time_point last_packet_ts;
};
@@ -0,0 +1,453 @@
/*---------------------------------------------------------*\
| 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"
#include "StringUtils.h"
AlienwareAW410KController::AlienwareAW410KController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
SendCommit();
}
AlienwareAW410KController::~AlienwareAW410KController()
{
hid_close(dev);
}
std::string AlienwareAW410KController::GetDeviceLocation()
{
return("HID: " + location);
}
std::string AlienwareAW410KController::GetDeviceName()
{
return(name);
}
std::string AlienwareAW410KController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_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,157 @@
/*---------------------------------------------------------*\
| 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.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, std::string dev_name);
~AlienwareAW410KController();
std::string GetDeviceLocation();
std::string GetDeviceName();
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;
std::string name;
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 = controller->GetDeviceName();
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;
};
@@ -0,0 +1,452 @@
/*---------------------------------------------------------*\
| 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 <cstring>
#include "AlienwareAW510KController.h"
#include "StringUtils.h"
AlienwareAW510KController::AlienwareAW510KController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
SendCommit();
}
AlienwareAW510KController::~AlienwareAW510KController()
{
hid_close(dev);
}
std::string AlienwareAW510KController::GetDeviceLocation()
{
return("HID: " + location);
}
std::string AlienwareAW510KController::GetDeviceName()
{
return(name);
}
std::string AlienwareAW510KController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
return(StringUtils::wstring_to_string(serial_string));
}
void AlienwareAW510KController::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 AlienwareAW510KController::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 AlienwareAW510KController::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 AlienwareAW510KController::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 AlienwareAW510KController::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 AlienwareAW510KController::SendDirectOn
(
std::vector<SelectedKeys> &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++)
{
SelectedKeys 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 AlienwareAW510KController::SetMode
(
unsigned char mode,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
unsigned char green,
unsigned char blue
)
{
SendMode(ALIENWARE_AW510K_ZONE_MODE_KEYBOARD, mode, speed, direction, colorMode, red, green, blue);
SendCommit();
}
void AlienwareAW510KController::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 AlienwareAW510KController::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 AlienwareAW510KController::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_AW510K_TWO_USER_DEFINED_COLOR_MODE;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
}
@@ -0,0 +1,159 @@
/*---------------------------------------------------------*\
| 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 |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi.h>
#include "RGBController.h"
enum
{
ALIENWARE_AW510K_ZONE_MODE_KEYBOARD = 0x01,
ALIENWARE_AW510K_ZONE_MODE_LOGO = 0x07, /* logo is only need key value, which equal 07 */
};
enum
{
ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD = 0x01,
ALIENWARE_AW510K_ZONE_DIRECT_MEDIA = 0x02,
ALIENWARE_AW510K_ZONE_DIRECT_LOGO = 0x07,
ALIENWARE_AW510K_ZONE_DIRECT_INDICATORS = 0x40,
};
enum
{
ALIENWARE_AW510K_MODE_OFF = 0x00,
ALIENWARE_AW510K_MODE_DIRECT_PER_LED = 0x01,
ALIENWARE_AW510K_MODE_DIRECT = 0x01,
ALIENWARE_AW510K_MODE_PULSE = 0x02,
ALIENWARE_AW510K_MODE_MORPH = 0x03,
ALIENWARE_AW510K_MODE_BREATHING = 0x07,
ALIENWARE_AW510K_MODE_SPECTRUM = 0x08,
ALIENWARE_AW510K_MODE_SINGLE_WAVE = 0x0F,
ALIENWARE_AW510K_MODE_RAINBOW_WAVE = 0x10,
ALIENWARE_AW510K_MODE_SCANNER = 0x11,
ALIENWARE_AW510K_MODE_STATIC = 0x13,
};
enum
{
ALIENWARE_AW510K_SPEED_SLOWEST = 0x2D, /* Slowest speed */
ALIENWARE_AW510K_SPEED_NORMAL = 0x19, /* Normal speed */
ALIENWARE_AW510K_SPEED_FASTEST = 0x0A, /* Fastest speed */
};
enum
{
ALIENWARE_AW510K_DIRECTION_LEFT_TO_RIGHT = 0x01,
ALIENWARE_AW510K_DIRECTION_RIGHT_TO_LEFT = 0x02,
ALIENWARE_AW510K_DIRECTION_TOP_TO_BOTTOM = 0x03,
ALIENWARE_AW510K_DIRECTION_BOTTOM_TO_TOP = 0x04,
};
enum
{
ALIENWARE_AW510K_SINGLE_COLOR_MODE = 0x01,
ALIENWARE_AW510K_TWO_USER_DEFINED_COLOR_MODE= 0x02,
ALIENWARE_AW510K_RANBOW_COLOR_MODE = 0x03,
};
struct SelectedKeys
{
unsigned char idx;
unsigned char red;
unsigned char green;
unsigned char blue;
};
class AlienwareAW510KController
{
public:
AlienwareAW510KController(hid_device* dev_handle, const char* path, std::string dev_name);
~AlienwareAW510KController();
std::string GetDeviceLocation();
std::string GetDeviceName();
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<SelectedKeys> &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;
std::string name;
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,497 @@
/*---------------------------------------------------------*\
| 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"
//0xFFFFFFFF indicates an unused entry in matrix
#define NA 0xFFFFFFFF
int GetAW520K_WaveDirection(int input);
static unsigned int matrix_map[7][24] =
{ { 0, NA, 1, 2, 3, 4, NA, 5, 6, 7, 8, 9, 10, 11, 12, NA, 13, 14, 15, NA, 16, NA, NA, NA },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, NA, NA, 31, 32, 33, NA, 34, 35, 36, 37 },
{ 38, NA, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, NA, 52, 53, 54, NA, 55, 56, 57, 74 },
{ 58, NA, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, NA, 70, NA, NA, NA, NA, NA, 71, 72, 73, NA },
{ 75, NA, NA, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, NA, NA, NA, 87, NA, NA, 88, 89, 90, 104 },
{ 91, NA, 92, 93, NA, 94, NA, NA, NA, NA, NA, 95, 96, 97, 98, NA, 99, 100, 101, NA, 102, NA, 103, NA },
{ NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 105, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA }};
static const char* zone_names[] =
{
"AW510K",
};
static zone_type zone_types[] =
{
ZONE_TYPE_MATRIX,
};
static const unsigned int zone_sizes[] =
{
106,
};
typedef struct
{
const char * name;
const unsigned char zone;
const unsigned char idx;
} aw510k_led_type;
static const aw510k_led_type led_names[] =
{
/* Key Label Zone, Index */
{ KEY_EN_ESCAPE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB0 },
{ KEY_EN_F1, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x98 },
{ KEY_EN_F2, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x90 },
{ KEY_EN_F3, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x88 },
{ KEY_EN_F4, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x80 },
{ KEY_EN_F5, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x70 },
{ KEY_EN_F6, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x68 },
{ KEY_EN_F7, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x60 },
{ KEY_EN_F8, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x58 },
{ KEY_EN_F9, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x50 },
{ KEY_EN_F10, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x48 },
{ KEY_EN_F11, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x40 },
{ KEY_EN_F12, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x38 },
{ KEY_EN_PRINT_SCREEN, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x30 },
{ KEY_EN_SCROLL_LOCK, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x28 },
{ KEY_EN_PAUSE_BREAK, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x20 },
{ KEY_EN_MEDIA_MUTE, ALIENWARE_AW510K_ZONE_DIRECT_MEDIA, 0x18 },
{ KEY_EN_BACK_TICK, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB1 },
{ KEY_EN_1, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xA1 },
{ KEY_EN_2, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x99 },
{ KEY_EN_3, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x91 },
{ KEY_EN_4, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x89 },
{ KEY_EN_5, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x81 },
{ KEY_EN_6, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x79 },
{ KEY_EN_7, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x71 },
{ KEY_EN_8, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x69 },
{ KEY_EN_9, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x61 },
{ KEY_EN_0, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x59 },
{ KEY_EN_MINUS, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x51 },
{ KEY_EN_EQUALS, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x49 },
{ KEY_EN_BACKSPACE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x39 },
{ KEY_EN_INSERT, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x31 },
{ KEY_EN_HOME, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x29 },
{ KEY_EN_PAGE_UP, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x21 },
{ KEY_EN_NUMPAD_LOCK, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x19 },
{ KEY_EN_NUMPAD_DIVIDE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x11 },
{ KEY_EN_NUMPAD_TIMES, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x09 },
{ KEY_EN_NUMPAD_MINUS, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x01 },
{ KEY_EN_TAB, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB2 },
{ KEY_EN_Q, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xA2 },
{ KEY_EN_W, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x9A },
{ KEY_EN_E, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x92 },
{ KEY_EN_R, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x8A },
{ KEY_EN_T, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x82 },
{ KEY_EN_Y, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x7A },
{ KEY_EN_U, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x72 },
{ KEY_EN_I, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x6A },
{ KEY_EN_O, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x62 },
{ KEY_EN_P, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x5A },
{ KEY_EN_LEFT_BRACKET, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x52 },
{ KEY_EN_RIGHT_BRACKET, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x4A },
{ KEY_EN_ANSI_BACK_SLASH, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x42 },//ANSI only
{ KEY_EN_DELETE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x32 },
{ KEY_EN_END, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x2A },
{ KEY_EN_PAGE_DOWN, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x22 },
{ KEY_EN_NUMPAD_7, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x1A },
{ KEY_EN_NUMPAD_8, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x12 },
{ KEY_EN_NUMPAD_9, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x0A },
{ KEY_EN_CAPS_LOCK, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB3 },
{ KEY_EN_A, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xA3 },
{ KEY_EN_S, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x9B },
{ KEY_EN_D, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x93 },
{ KEY_EN_F, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x8B },
{ KEY_EN_G, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x83 },
{ KEY_EN_H, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x7B },
{ KEY_EN_J, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x73 },
{ KEY_EN_K, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x6B },
{ KEY_EN_L, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x63 },
{ KEY_EN_SEMICOLON, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x5B },
{ KEY_EN_QUOTE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x53 },
{ KEY_EN_ANSI_ENTER, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x43 },
{ KEY_EN_NUMPAD_4, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x1B },
{ KEY_EN_NUMPAD_5, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x13 },
{ KEY_EN_NUMPAD_6, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x0B },
{ KEY_EN_NUMPAD_PLUS, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x03 },
{ KEY_EN_LEFT_SHIFT, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB4 },
{ KEY_EN_Z, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xA4 },
{ KEY_EN_X, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x9C },
{ KEY_EN_C, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x94 },
{ KEY_EN_V, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x8C },
{ KEY_EN_B, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x84 },
{ KEY_EN_N, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x7C },
{ KEY_EN_M, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x74 },
{ KEY_EN_COMMA, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x6C },
{ KEY_EN_PERIOD, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x64 },
{ KEY_EN_FORWARD_SLASH, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x5C },
{ KEY_EN_RIGHT_SHIFT, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x4C },
{ KEY_EN_UP_ARROW, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x2C },
{ KEY_EN_NUMPAD_1, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x1C },
{ KEY_EN_NUMPAD_2, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x14 },
{ KEY_EN_NUMPAD_3, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x0C },
{ KEY_EN_LEFT_CONTROL, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB5 },
{ KEY_EN_LEFT_WINDOWS, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xAD },
{ KEY_EN_LEFT_ALT, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xA5 },
{ KEY_EN_SPACE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x85 },
{ KEY_EN_RIGHT_ALT, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x65 },
{ KEY_EN_RIGHT_FUNCTION, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x5D },
{ KEY_EN_MENU, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x55 },
{ KEY_EN_RIGHT_CONTROL, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x4D },
{ KEY_EN_LEFT_ARROW, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x35 },
{ KEY_EN_DOWN_ARROW, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x2D },
{ KEY_EN_RIGHT_ARROW, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x25 },
{ KEY_EN_NUMPAD_0, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x1D },
{ KEY_EN_NUMPAD_PERIOD, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x0D },
{ KEY_EN_NUMPAD_ENTER, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0x05 },
{ "Logo", ALIENWARE_AW510K_ZONE_DIRECT_LOGO, 0x07 }
};
/**------------------------------------------------------------------*\
@name Alienware AW510 Keyboard
@category Keyboard
@type USB
@save :x:
@direct :white_check_mark:
@effects :white_check_mark:
@detectors DetectAlienwareAW510KControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AlienwareAW510K::RGBController_AlienwareAW510K(AlienwareAW510KController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetDeviceName();
vendor = "Alienware";
type = DEVICE_TYPE_KEYBOARD;
description = "Alienware AW510K Keyboard Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.value = ALIENWARE_AW510K_MODE_DIRECT_PER_LED;
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_AW510K_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_AW510K_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_AW510K_SPEED_SLOWEST;
Pulse.speed_max = ALIENWARE_AW510K_SPEED_NORMAL;
Pulse.speed = ALIENWARE_AW510K_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_AW510K_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_AW510K_SPEED_SLOWEST;
Morph.speed_max = ALIENWARE_AW510K_SPEED_NORMAL;
Morph.speed = ALIENWARE_AW510K_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_AW510K_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_AW510K_SPEED_SLOWEST;
Breathing.speed_max = ALIENWARE_AW510K_SPEED_FASTEST;
Breathing.speed = ALIENWARE_AW510K_SPEED_NORMAL;
modes.push_back(Breathing);
mode SingleWave;
SingleWave.name = "Single Wave";
SingleWave.value = ALIENWARE_AW510K_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_AW510K_SPEED_SLOWEST;
SingleWave.speed_max = ALIENWARE_AW510K_SPEED_FASTEST;
SingleWave.speed = ALIENWARE_AW510K_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_AW510K_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_AW510K_SPEED_SLOWEST;
RainbowWave.speed_max = ALIENWARE_AW510K_SPEED_FASTEST;
RainbowWave.speed = ALIENWARE_AW510K_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_AW510K_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_AlienwareAW510K::~RGBController_AlienwareAW510K()
{
/*---------------------------------------------------------*\
| 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_AlienwareAW510K::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 = 7;
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_AlienwareAW510K::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AlienwareAW510K::DeviceUpdateLEDs()
{
std::vector<SelectedKeys> 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++)
{
if (current_colors[led_idx]==new_colors[led_idx])
{
/*-------------------------------------------------*\
| Don't send if key color is not changed |
\*-------------------------------------------------*/
continue;
}
if(RGBGetRValue(colors[led_idx]) != 0x00 || RGBGetBValue(colors[led_idx]) != 0x00 || RGBGetBValue(colors[led_idx]) != 0x00)
{
SelectedKeys 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);
}
else
{
SelectedKeys 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_AlienwareAW510K::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_AlienwareAW510K::UpdateSingleLED(int led)
{
controller->UpdateSingleLED(leds[led].value, RGBGetRValue(colors[led]), RGBGetGValue(colors[led]), RGBGetBValue(colors[led]));
}
void RGBController_AlienwareAW510K::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_AW510K_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_AW510K_MODE_SPECTRUM:
/*-------------------------------------------------------------*\
| Spectrum only set mode, speed and colorMode |
\*-------------------------------------------------------------*/
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, 0x00, ALIENWARE_AW510K_RANBOW_COLOR_MODE, 0x00, 0x00, 0x00);
break;
case ALIENWARE_AW510K_MODE_SINGLE_WAVE:
/*-------------------------------------------------------------*\
| Wave only set mode, speed, direction and colorMode |
\*-------------------------------------------------------------*/
{
int waveDirection = GetAW520K_WaveDirection(modes[active_mode].direction);
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, waveDirection, ALIENWARE_AW510K_SINGLE_COLOR_MODE, red, grn, blu);
}
break;
case ALIENWARE_AW510K_MODE_RAINBOW_WAVE:
/*-------------------------------------------------------------*\
| Wave only set mode, speed, direction and colorMode |
\*-------------------------------------------------------------*/
{
int waveDirection = GetAW520K_WaveDirection(modes[active_mode].direction);
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, waveDirection, ALIENWARE_AW510K_RANBOW_COLOR_MODE, 0x00, 0x00, 0x00);
}
break;
default:
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, 0x00, ALIENWARE_AW510K_SINGLE_COLOR_MODE, red, grn, blu);
break;
}
}
int GetAW520K_WaveDirection(int input)
{
switch(input)
{
case MODE_DIRECTION_LEFT:
return(ALIENWARE_AW510K_DIRECTION_RIGHT_TO_LEFT);
case MODE_DIRECTION_RIGHT:
return(ALIENWARE_AW510K_DIRECTION_LEFT_TO_RIGHT);
case MODE_DIRECTION_UP:
return(ALIENWARE_AW510K_DIRECTION_BOTTOM_TO_TOP);
case MODE_DIRECTION_DOWN:
return(ALIENWARE_AW510K_DIRECTION_TOP_TO_BOTTOM);
default:
return(ALIENWARE_AW510K_DIRECTION_RIGHT_TO_LEFT);
}
}
@@ -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;
};
@@ -0,0 +1,62 @@
/*---------------------------------------------------------*\
| AlienwareKeyboardControllerDetect.cpp |
| |
| Detector for Alienware Keyboard |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <hidapi.h>
#include "Detector.h"
#include "AlienwareAW510KController.h"
#include "AlienwareAW410KController.h"
#include "RGBController_AlienwareAW510K.h"
#include "RGBController_AlienwareAW410K.h"
/*-----------------------------------------------------*\
| Alienware vendor ID |
\*-----------------------------------------------------*/
#define ALIENWARE_VID 0x04F2
/*-----------------------------------------------------*\
| Keyboard product IDs |
\*-----------------------------------------------------*/
#define ALIENWARE_AW510K_PID 0x1830
#define ALIENWARE_AW410K_PID 0x1968
/******************************************************************************************\
* *
* DetectAlienwareKeyboardControllers *
* *
* Tests the USB address to see if a Alienware RGB Keyboard controller exists there. *
* *
\******************************************************************************************/
void DetectAlienwareAW510KControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if( dev )
{
AlienwareAW510KController* controller = new AlienwareAW510KController(dev, info->path, name);
RGBController_AlienwareAW510K* rgb_controller = new RGBController_AlienwareAW510K(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
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, name);
RGBController_AlienwareAW410K* rgb_controller = new RGBController_AlienwareAW410K(controller);
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);
@@ -0,0 +1,183 @@
/*---------------------------------------------------------*\
| AlienwareAW3423DWFController.cpp |
| |
| Driver for the Alienware AW3423DWF monitor |
| |
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <bitset>
#include <chrono>
#include <cstring>
#include <thread>
#include "AlienwareAW3423DWFController.h"
#include "StringUtils.h"
AlienwareAW3423DWFController::AlienwareAW3423DWFController(hid_device *dev_handle, const char *path) : dev(dev_handle), location(path){}
void AlienwareAW3423DWFController::SendControlPacket(const unsigned char *data, size_t length)
{
unsigned char buffer[256] = {0x00};
memcpy(buffer + 1, data, length);
hid_write(dev, buffer, length + 1);
}
std::vector<unsigned char> AlienwareAW3423DWFController::GetReportResponse()
{
uint8_t buffer[193];
memset(buffer, 0, 193);
hid_get_input_report(dev, buffer, 193);
return std::vector<unsigned char>(buffer + 1, buffer + 18);
}
void AlienwareAW3423DWFController::PerformLogin()
{
unsigned char init_packet[64] =
{
0x40, 0xE1, 0x01
};
SendControlPacket(init_packet, 4);
std::vector<unsigned char> response = GetReportResponse();
std::vector<unsigned char> key = GenerateKey(response);
unsigned char login_packet[192] = {0x00};
login_packet[0] = 0x40;
login_packet[1] = 0xE1;
login_packet[2] = 0x02;
memcpy(login_packet + 64, key.data(), key.size());
SendControlPacket(login_packet, 192);
}
void AlienwareAW3423DWFController::SendColor(unsigned char led_id, unsigned char r, unsigned char g, unsigned char b)
{
unsigned char led_id_2 = (led_id == 0x01) ? 0xf6 : (led_id == 0x02) ? 0xf5
: (led_id == 0x08) ? 0xff
: 0xfc;
PerformLogin();
unsigned char color_packet[192] = {0x00};
color_packet[0] = 0x40;
color_packet[1] = 0xC6;
color_packet[6] = 0x0A;
color_packet[8] = 0x6E;
color_packet[10] = 0x82;
color_packet[64] = 0x51;
color_packet[65] = 0x87;
color_packet[66] = 0xD0;
color_packet[67] = 0x04;
color_packet[68] = led_id;
color_packet[69] = r;
color_packet[70] = g;
color_packet[71] = b;
color_packet[72] = 0x64;
color_packet[73] = led_id_2;
SendControlPacket(color_packet, 192);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
}
std::vector<unsigned char> AlienwareAW3423DWFController::GenerateKey(
const std::vector<unsigned char> &response)
{
std::vector<unsigned char> syn_key(8, 0);
const std::vector<unsigned char> oem_key = {
0xf5, 0x3f, 0xc1, 0x39, 0x44, 0x3a, 0x31, 0x79, 0x0d, 0xb1, 0x82, 0x76
};
size_t sk_idx = 0, ok_idx = 0;
while(ok_idx < oem_key.size() && sk_idx < 8)
{
unsigned char ok_sub_len = (oem_key[ok_idx] & 1) + ((oem_key[ok_idx] & 0x10) >> 4);
for(unsigned int i = 0; i < ok_sub_len && sk_idx < 8; i++)
{
syn_key[sk_idx] = oem_key[ok_idx + 1] ^ oem_key[ok_idx];
ok_idx++;
sk_idx++;
}
ok_idx++;
}
std::vector<unsigned char> out_buffer;
uint16_t v15 = static_cast<uint16_t>(response[15]) |
(static_cast<uint16_t>(response[0]) << 8);
bool parity_odd = (std::bitset<16>(v15).count() % 2 != 0);
if(parity_odd)
{
size_t end = std::min<size_t>(8, response.size());
out_buffer = std::vector<unsigned char>(response.begin(), response.begin() + end);
if(response.size() > 14)
{
unsigned char idx = response[14] & 0x07;
if((idx + 8) < (unsigned char)response.size())
{
out_buffer[idx] ^= response[idx + 8];
}
}
}
else
{
size_t start = std::min<size_t>(8, response.size());
size_t end = std::min<size_t>(start + 8, response.size());
out_buffer = std::vector<unsigned char>(response.begin() + start, response.begin() + end);
if(response.size() > 6)
{
unsigned char idx = response[6] & 0x07;
if(idx < response.size())
{
out_buffer[idx] ^= response[idx];
}
}
}
for(size_t i = 0; i < 8 && i < out_buffer.size(); i++)
{
syn_key[i] ^= out_buffer[i];
}
return syn_key;
}
AlienwareAW3423DWFController::~AlienwareAW3423DWFController()
{
if(dev)
{
hid_close(dev);
dev = nullptr;
}
}
std::string AlienwareAW3423DWFController::GetLocation()
{
return "HID: " + location;
}
std::string AlienwareAW3423DWFController::GetSerialString()
{
wchar_t serial[256];
if(hid_get_serial_number_string(dev, serial, 256) >= 0)
{
std::wstring ws(serial);
return StringUtils::wstring_to_string(ws);
}
return "";
}
@@ -0,0 +1,38 @@
/*---------------------------------------------------------*\
| AlienwareAW3423DWFController.h |
| |
| Driver for the Alienware AW3423DWF monitor |
| |
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <hidapi.h>
#include <vector>
#include <string>
class AlienwareAW3423DWFController
{
public:
AlienwareAW3423DWFController(hid_device* dev_handle, const char* path);
~AlienwareAW3423DWFController();
std::string GetLocation();
std::string GetSerialString();
void SendColor(unsigned char led_id, unsigned char r, unsigned char g, unsigned char b);
private:
hid_device* dev;
std::string location;
static const std::vector<std::vector<unsigned char>> OEM_KEYS;
void PerformLogin();
std::vector<unsigned char> GenerateKey(const std::vector<unsigned char>& response);
void SendControlPacket(const unsigned char* data, size_t length);
std::vector<unsigned char> GetReportResponse();
};
@@ -0,0 +1,146 @@
/*---------------------------------------------------------*\
| AlienwareMonitorController.cpp |
| |
| Detector for Alienware monitors |
| |
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <chrono>
#include <cstring>
#include <thread>
#include "AlienwareMonitorController.h"
AlienwareMonitorController::AlienwareMonitorController(hid_device *dev_handle, const char *path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
Initialize();
}
AlienwareMonitorController::~AlienwareMonitorController()
{
hid_close(dev);
}
std::string AlienwareMonitorController::GetLocation()
{
return("HID: " + location);
}
std::string AlienwareMonitorController::GetName()
{
return(name);
}
std::string AlienwareMonitorController::GetSerialString()
{
return("");
}
void fillInChecksum(unsigned char *packet)
{
unsigned char checksum = 110;
for(unsigned int index = 5; index <= 13; index++)
{
checksum ^= packet[index];
}
packet[14] = checksum;
}
void AlienwareMonitorController::SendColor(unsigned char led_id, unsigned char r, unsigned char g, unsigned char b)
{
unsigned char packet[65];
memset(packet, 0xFF, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x92;
packet[2] = 0x37;
packet[3] = 0x0a;
packet[4] = 0x00;
packet[5] = 0x51;
packet[6] = 0x87;
packet[7] = 0xd0;
packet[8] = 0x04;
packet[9] = led_id;
packet[10] = r;
packet[11] = g;
packet[12] = b;
packet[13] = 0x64;
fillInChecksum(packet);
hid_write(dev, packet, sizeof(packet));
/*-----------------------------------------------------*\
| Delay 50 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
void AlienwareMonitorController::Initialize()
{
unsigned char packet[65];
memset(packet, 0xFF, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x95;
packet[2] = 0x00;
packet[3] = 0x00;
packet[4] = 0x00;
hid_write(dev, packet, sizeof(packet));
/*-----------------------------------------------------*\
| Delay 50 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(50));
memset(packet, 0xFF, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x92;
packet[2] = 0x37;
packet[3] = 0x08;
packet[4] = 0x00;
packet[5] = 0x51;
packet[6] = 0x85;
packet[7] = 0x01;
packet[8] = 0xFE;
packet[9] = 0x03;
packet[10] = 0x00;
packet[11] = 0x06;
packet[12] = 0x40;
hid_write(dev, packet, sizeof(packet));
/*-----------------------------------------------------*\
| Delay 50 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(50));
memset(packet, 0x00, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x93;
packet[2] = 0x37;
packet[3] = 0x12;
hid_write(dev, packet, sizeof(packet));
/*-----------------------------------------------------*\
| Delay 50 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| AlienwareMonitorController.h |
| |
| Detector for Alienware monitors |
| |
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <hidapi.h>
#include <vector>
#include <string>
class AlienwareMonitorController
{
public:
AlienwareMonitorController(hid_device* dev_handle, const char* path, std::string dev_name);
~AlienwareMonitorController();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
void SendColor(unsigned char led_id, unsigned char r, unsigned char g, unsigned char b);
private:
hid_device* dev;
std::string location;
std::string name;
void Initialize();
};
@@ -0,0 +1,66 @@
/*---------------------------------------------------------*\
| AlienwareMonitorControllerDetect.cpp |
| |
| Detector for Alienware monitors |
| |
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AlienwareAW3423DWFController.h"
#include "AlienwareMonitorController.h"
#include "RGBController_AlienwareAW3423DWF.h"
#include "RGBController_AlienwareMonitor.h"
#include <hidapi.h>
/*---------------------------------------------------------*\
| Alienware Vendor ID |
\*---------------------------------------------------------*/
#define ALIENWARE_VID 0x187C
/*---------------------------------------------------------*\
| Alienware Vendor ID |
\*---------------------------------------------------------*/
#define ALIENWARE_AW3423DWF_PID 0x100E
#define ALIENWARE_AW3225QF_PID 0x1013
#define ALIENWARE_USAGE_PAGE 0xFFDA
#define ALIENWARE_USAGE 0x00DA
/******************************************************************************************\
* *
* AlienwareAW3423DWFControllerDetect *
* *
* Tests the USB address to see if an Alienware AW3423DWF exists there. *
* *
\******************************************************************************************/
void DetectAlienwareAW3423DWFControllers(hid_device_info* info, const std::string&)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AlienwareAW3423DWFController* controller = new AlienwareAW3423DWFController(dev, info->path);
RGBController_AlienwareAW3423DWF* rgb_controller = new RGBController_AlienwareAW3423DWF(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
void DetectAlienwareMonitorControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AlienwareMonitorController* controller = new AlienwareMonitorController(dev, info->path, name);
RGBController_AlienwareMonitor* rgb_controller = new RGBController_AlienwareMonitor(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR("Alienware AW3423DWF", DetectAlienwareAW3423DWFControllers, ALIENWARE_VID, ALIENWARE_AW3423DWF_PID);
REGISTER_HID_DETECTOR("Alienware AW3225QF", DetectAlienwareMonitorControllers, ALIENWARE_VID, ALIENWARE_AW3225QF_PID);
@@ -0,0 +1,141 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareAW3423DWF.cpp |
| |
| RGBController for the Alienware AW3423DWF monitor |
| |
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AlienwareAW3423DWF.h"
/**------------------------------------------------------------------*\
@name AW3423DWF
@category Accessory
@type USB
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors DetectAlienwareAW3423DWFControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AlienwareAW3423DWF::RGBController_AlienwareAW3423DWF(AlienwareAW3423DWFController* controller_ptr)
{
controller = controller_ptr;
name = "Alienware AW3423DWF";
vendor = "Alienware";
type = DEVICE_TYPE_MONITOR;
description = "Alienware AW3423DWF Monitor Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
active_mode = 0;
SetupZones();
}
RGBController_AlienwareAW3423DWF::~RGBController_AlienwareAW3423DWF()
{
delete controller;
}
void RGBController_AlienwareAW3423DWF::SetupZones()
{
zone Logo;
Logo.name = "Logo";
Logo.type = ZONE_TYPE_SINGLE;
Logo.leds_min = 1;
Logo.leds_max = 1;
Logo.leds_count = 1;
Logo.matrix_map = NULL;
zones.push_back(Logo);
led Logo_LED;
Logo_LED.name = "Logo";
Logo_LED.value = 0x01;
leds.push_back(Logo_LED);
zone Number;
Number.name = "Number";
Number.type = ZONE_TYPE_SINGLE;
Number.leds_min = 1;
Number.leds_max = 1;
Number.leds_count = 1;
Number.matrix_map = NULL;
zones.push_back(Number);
led Number_LED;
Number_LED.name = "Number";
Number_LED.value = 0x02;
leds.push_back(Number_LED);
zone PowerButton;
PowerButton.name = "Power Button";
PowerButton.type = ZONE_TYPE_SINGLE;
PowerButton.leds_min = 1;
PowerButton.leds_max = 1;
PowerButton.leds_count = 1;
PowerButton.matrix_map = NULL;
zones.push_back(PowerButton);
led PowerButton_LED;
PowerButton_LED.name = "Power Button";
PowerButton_LED.value = 0x08;
leds.push_back(PowerButton_LED);
SetupColors();
}
void RGBController_AlienwareAW3423DWF::ResizeZone(int /*zone*/, int /*new_size*/)
{
}
void RGBController_AlienwareAW3423DWF::DeviceUpdateLEDs()
{
/*-----------------------------------------------------*\
| If all three colors are the same value, speed up the |
| direct mode by using the ALL target (0x0B) instead of |
| setting each LED individually. |
\*-----------------------------------------------------*/
if((colors[0] == colors[1]) && (colors[1] == colors[2]))
{
unsigned char red = RGBGetRValue(colors[0]);
unsigned char grn = RGBGetGValue(colors[0]);
unsigned char blu = RGBGetBValue(colors[0]);
controller->SendColor(0x0B, red, grn, blu);
}
else
{
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
UpdateSingleLED(led_idx);
}
}
}
void RGBController_AlienwareAW3423DWF::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AlienwareAW3423DWF::UpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
unsigned char blu = RGBGetBValue(colors[led]);
controller->SendColor(leds[led].value, red, grn, blu);
}
void RGBController_AlienwareAW3423DWF::DeviceUpdateMode()
{
}
@@ -0,0 +1,34 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareAW3423DWF.h |
| |
| RGBController for the Alienware AW3423DWF monitor |
| |
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "AlienwareAW3423DWFController.h"
#include "RGBController.h"
class RGBController_AlienwareAW3423DWF : public RGBController
{
public:
explicit RGBController_AlienwareAW3423DWF(AlienwareAW3423DWFController* controller_ptr);
~RGBController_AlienwareAW3423DWF();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AlienwareAW3423DWFController* controller;
};
@@ -0,0 +1,143 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareMonitor.cpp |
| |
| RGBController for Alienware monitors |
| |
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AlienwareMonitor.h"
/**------------------------------------------------------------------*\
@name Alienware Monitor
@category Accessory
@type USB
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors DetectAlienwareMonitorControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AlienwareMonitor::RGBController_AlienwareMonitor(AlienwareMonitorController* controller_ptr)
{
controller = controller_ptr;
name = controller->GetName();
description = "Alienware Monitor";
vendor = "Alienware";
type = DEVICE_TYPE_MONITOR;
location = controller->GetLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
active_mode = 0;
SetupZones();
}
RGBController_AlienwareMonitor::~RGBController_AlienwareMonitor()
{
delete controller;
}
void RGBController_AlienwareMonitor::SetupZones()
{
zone Logo;
Logo.name = "Logo";
Logo.type = ZONE_TYPE_SINGLE;
Logo.leds_min = 1;
Logo.leds_max = 1;
Logo.leds_count = 1;
Logo.matrix_map = NULL;
zones.push_back(Logo);
led Logo_LED;
Logo_LED.name = "Logo";
Logo_LED.value = 0x01;
leds.push_back(Logo_LED);
zone Number;
Number.name = "Number";
Number.type = ZONE_TYPE_SINGLE;
Number.leds_min = 1;
Number.leds_max = 1;
Number.leds_count = 1;
Number.matrix_map = NULL;
zones.push_back(Number);
led Number_LED;
Number_LED.name = "Number";
Number_LED.value = 0x02;
leds.push_back(Number_LED);
zone PowerButton;
PowerButton.name = "Power Button";
PowerButton.type = ZONE_TYPE_SINGLE;
PowerButton.leds_min = 1;
PowerButton.leds_max = 1;
PowerButton.leds_count = 1;
PowerButton.matrix_map = NULL;
zones.push_back(PowerButton);
led PowerButton_LED;
PowerButton_LED.name = "Power Button";
PowerButton_LED.value = 0x08;
leds.push_back(PowerButton_LED);
SetupColors();
}
void RGBController_AlienwareMonitor::ResizeZone(int /*zone*/, int /*new_size*/)
{
}
void RGBController_AlienwareMonitor::DeviceUpdateLEDs()
{
/*-----------------------------------------------------*\
| If all three colors are the same value, speed up the |
| direct mode by using the ALL target (0x0B) instead of |
| setting each LED individually. |
\*-----------------------------------------------------*/
if((colors[0] == colors[1]) && (colors[1] == colors[2]))
{
unsigned char red = RGBGetRValue(colors[0]);
unsigned char grn = RGBGetGValue(colors[0]);
unsigned char blu = RGBGetBValue(colors[0]);
controller->SendColor(0x0B, red, grn, blu);
}
else
{
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
UpdateSingleLED(led_idx);
}
}
}
void RGBController_AlienwareMonitor::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AlienwareMonitor::UpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
unsigned char blu = RGBGetBValue(colors[led]);
controller->SendColor(leds[led].value, red, grn, blu);
}
void RGBController_AlienwareMonitor::DeviceUpdateMode()
{
}
@@ -0,0 +1,34 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareMonitor.h |
| |
| RGBController for Alienware monitors |
| |
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AlienwareMonitorController.h"
class RGBController_AlienwareMonitor : public RGBController
{
public:
RGBController_AlienwareMonitor(AlienwareMonitorController* controller_ptr);
~RGBController_AlienwareMonitor();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AlienwareMonitorController* controller;
};
Loaded 100 of 2181 files, more files were not shown because too many files have changed in this diff. Show more