Compare commits

..
Author SHA1 Message Date
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
1727 changed files with 22481 additions and 419251 deletions
+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.
+34 -6
View File
@@ -33,6 +33,10 @@
stages:
- build
- test
- deploy
variables:
GIT_DEPTH: 0
before_script:
- echo "started by ${GITLAB_USER_NAME}"
@@ -299,15 +303,12 @@ before_script:
image: fedora:40
stage: build
script:
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel -y
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel git -y
- rpmdev-setuptree
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
- ls /root/
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
- cp ../OpenRGB /root/rpmbuild/SOURCES/ -r
- cd /root/rpmbuild/SOURCES
- tar -cf OpenRGB.tar.gz OpenRGB/
- cd ..
- cp -rp . /root/rpmbuild/SOURCES/OpenRGB
- cd /root/rpmbuild
- dnf builddep SPECS/OpenRGB.spec -y
- rpmbuild -ba SPECS/OpenRGB.spec
- cd RPMS/x86_64/
@@ -618,3 +619,30 @@ before_script:
- 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]
+2 -2
View File
@@ -23,9 +23,9 @@ Please add a link to the manufacturer's product page beneath this line
~"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::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 thru Windows Management Instrumentation -->
~"DeviceType::WMI" <!-- The device is controlled through Windows Management Instrumentation -->
<!-- Please delete any lines that are not relevant -->
@@ -1,225 +0,0 @@
/*---------------------------------------------------------*\
| AOCHeadsetController.cpp |
| |
| Driver for AOC headset |
| |
| Adam Honse (CalcProgrammer1) 12 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <cstring>
#include "AOCHeadsetController.h"
#include "StringUtils.h"
AOCHeadsetController::AOCHeadsetController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
unsigned char usb_buf[16];
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
hid_write(dev, usb_buf, 2);
SendStartPacket();
SendBeginPacket();
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x04;
usb_buf[2] = 0x02;
usb_buf[5] = 0x01;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x04;
usb_buf[2] = 0x04;
usb_buf[4] = 0x05;
usb_buf[5] = 0xC8;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x04;
usb_buf[2] = 0x06;
usb_buf[4] = 0x03;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x02;
usb_buf[2] = 0x08;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x03;
usb_buf[2] = 0x09;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x03;
usb_buf[2] = 0x0A;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x02;
usb_buf[2] = 0x0B;
usb_buf[3] = 0x01;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
SendModePacket(0);
RGBColor color_data = 0;
SendColorPacket(&color_data);
SendApplyPacket();
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x02;
usb_buf[2] = 0x0B;
usb_buf[3] = 0x01;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xED;
usb_buf[1] = 0x03;
usb_buf[2] = 0x0A;
usb_buf[3] = 0x01;
usb_buf[4] = 0x01;
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
}
AOCHeadsetController::~AOCHeadsetController()
{
hid_close(dev);
}
std::string AOCHeadsetController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCHeadsetController::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 AOCHeadsetController::SendDirect
(
RGBColor* color_data
)
{
SendStartPacket();
SendModePacket(0);
SendColorPacket(color_data);
SendApplyPacket();
}
void AOCHeadsetController::SendStartPacket()
{
unsigned char usb_buf[16];
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xFF;
usb_buf[1] = 0x02;
hid_write(dev, usb_buf, sizeof(usb_buf));
}
void AOCHeadsetController::SendBeginPacket()
{
unsigned char usb_buf[16];
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xFD;
usb_buf[1] = 0x01;
hid_write(dev, usb_buf, sizeof(usb_buf));
}
void AOCHeadsetController::SendModePacket(unsigned char mode)
{
unsigned char usb_buf[16];
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xFF;
usb_buf[1] = 0x03;
usb_buf[2] = mode;
usb_buf[3] = 0x01;
hid_write(dev, usb_buf, sizeof(usb_buf));
}
void AOCHeadsetController::SendColorPacket(RGBColor* color_data)
{
unsigned char usb_buf[16];
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xFF;
usb_buf[1] = 0x04;
usb_buf[4] = RGBGetRValue(color_data[0]);
usb_buf[5] = RGBGetGValue(color_data[0]);
usb_buf[6] = RGBGetBValue(color_data[0]);
hid_write(dev, usb_buf, sizeof(usb_buf));
}
void AOCHeadsetController::SendApplyPacket()
{
unsigned char usb_buf[16];
memset(usb_buf, 0, sizeof(usb_buf));
usb_buf[0] = 0xFF;
usb_buf[1] = 0x01;
hid_write(dev, usb_buf, sizeof(usb_buf));
}
@@ -1,72 +0,0 @@
/*---------------------------------------------------------*\
| AOCHeadsetController.h |
| |
| Driver for AOC headset |
| |
| Adam Honse (CalcProgrammer1) 12 Jan 2025 |
| |
| 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_HEADSET_MODE_STATIC_SINGLE_COLOR = 0x00, /* Static mode */
AOC_HEADSET_MODE_BLINKING = 0x01, /* Blinking mode */
AOC_HEADSET_MODE_BREATHING = 0x02, /* Breathing mode */
AOC_HEADSET_MODE_MUSIC = 0x03, /* Music mode */
};
enum
{
AOC_HEADSET_SPEED_SLOW = 0x03, /* Slowest speed */
AOC_HEADSET_SPEED_MEDIUM = 0x02, /* Medium speed */
AOC_HEADSET_SPEED_FAST = 0x01, /* Fastest speed */
};
class AOCHeadsetController
{
public:
AOCHeadsetController(hid_device* dev_handle, const char* path);
~AOCHeadsetController();
std::string GetDeviceLocation();
std::string GetSerialString();
void SendDirect
(
RGBColor* color_data
);
void SendPacket
(
unsigned char mode,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
);
private:
hid_device* dev;
std::string location;
void SendStartPacket();
void SendModePacket(unsigned char mode);
void SendBeginPacket();
void SendColorPacket(RGBColor* color_data);
void SendApplyPacket();
};
@@ -1,44 +0,0 @@
/*---------------------------------------------------------*\
| AOCHeadsetControllerDetect.cpp |
| |
| Detector for AOC headset |
| |
| Adam Honse (CalcProgrammer1) 12 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AOCHeadsetController.h"
#include "RGBController_AOCHeadset.h"
/*-----------------------------------------------------*\
| AOC Headset IDs |
\*-----------------------------------------------------*/
#define AOC_VID 0x0D8C
#define AOC_GH300_PID 0x01F3
/******************************************************************************************\
* *
* DetectAOCHeadsetControllers *
* *
* Tests the USB address to see if an AOC Headset controller exists there. *
* *
\******************************************************************************************/
void DetectAOCHeadsetControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AOCHeadsetController* controller = new AOCHeadsetController(dev, info->path);
RGBController_AOCHeadset* rgb_controller = new RGBController_AOCHeadset(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR_IPU("AOC GH300", DetectAOCHeadsetControllers, AOC_VID, AOC_GH300_PID, 3, 0x000C, 0x0001);
@@ -1,94 +0,0 @@
/*---------------------------------------------------------*\
| RGBController_AOCHeadset.cpp |
| |
| RGBController for AOC headset |
| |
| Adam Honse (CalcProgrammer1) 12 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AOCHeadset.h"
/**------------------------------------------------------------------*\
@name AOC Headset
@category Headset
@type USB
@save :x:
@direct :white_check_mark:
@effects :white_check_mark:
@detectors DetectAOCHeadsetControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AOCHeadset::RGBController_AOCHeadset(AOCHeadsetController* controller_ptr)
{
controller = controller_ptr;
name = "AOC Headset Device";
vendor = "AOC";
type = DEVICE_TYPE_HEADSET;
description = "AOC Headset Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode direct;
direct.name = "Direct";
direct.value = 0;
direct.color_mode = MODE_COLORS_PER_LED;
direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
modes.push_back(direct);
SetupZones();
};
RGBController_AOCHeadset::~RGBController_AOCHeadset()
{
delete controller;
}
void RGBController_AOCHeadset::SetupZones()
{
zone headset_zone;
headset_zone.name = "Headset";
headset_zone.type = ZONE_TYPE_SINGLE;
headset_zone.leds_min = 1;
headset_zone.leds_max = 1;
headset_zone.leds_count = 1;
headset_zone.matrix_map = NULL;
zones.push_back(headset_zone);
led headset_led;
headset_led.name = "Headset";
leds.push_back(headset_led);
SetupColors();
}
void RGBController_AOCHeadset::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCHeadset::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_AOCHeadset::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCHeadset::UpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCHeadset::DeviceUpdateMode()
{
controller->SendDirect(&colors[0]);
}
@@ -1,35 +0,0 @@
/*---------------------------------------------------------*\
| RGBController_AOCHeadset.h |
| |
| RGBController for AOC headset |
| |
| Adam Honse (CalcProgrammer1) 12 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AOCHeadsetController.h"
class RGBController_AOCHeadset : public RGBController
{
public:
RGBController_AOCHeadset(AOCHeadsetController* controller_ptr);
~RGBController_AOCHeadset();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AOCHeadsetController* controller;
};
@@ -68,19 +68,19 @@ keyboard_keymap_overlay_values g533zm_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 15, 37, KEY_EN_DELETE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Delete
{ 0, 1, 15, 58, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play / Pause
{ 0, 2, 15, 79, KEY_EN_MEDIA_STOP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Stop
{ 0, 3, 15, 100, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous
{ 0, 4, 13, 139, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Up Arrow
{ 0, 4, 15, 121, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Next
{ 0, 5, 12, 159, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Arrow
{ 0, 5, 13, 160, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Down Arrow
{ 0, 5, 14, 161, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Right Arrow
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 15, 37, KEY_EN_DELETE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Delete
{ 0, 1, 15, 58, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play / Pause
{ 0, 2, 15, 79, KEY_EN_MEDIA_STOP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Stop
{ 0, 3, 15, 100, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous
{ 0, 4, 13, 139, KEY_EN_UP_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Up Arrow
{ 0, 4, 15, 121, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Next
{ 0, 5, 12, 159, KEY_EN_LEFT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Arrow
{ 0, 5, 13, 160, KEY_EN_DOWN_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Down Arrow
{ 0, 5, 14, 161, KEY_EN_RIGHT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Right Arrow
}
};
@@ -94,30 +94,30 @@ keyboard_keymap_overlay_values g533zw_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 15, 37, KEY_EN_DELETE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Delete
{ 0, 1, 15, 58, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play / Pause
{ 0, 2, 15, 79, KEY_EN_MEDIA_STOP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Stop
{ 0, 3, 15, 100, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous
{ 0, 4, 15, 121, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Media Next
{ 0, 5, 1, 127, KEY_EN_LEFT_FUNCTION, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Function key
{ 0, 5, 4, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Unused key
{ 0, 5, 11, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Func key
{ 0, 5, 11, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Context key
{ 0, 5, 13, 139, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Up Arrow
{ 0, 5, 15, 142, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Print Screen
{ 0, 5, 16, 175, "Keystone", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Keystone (Red only)
{ 0, 6, 12, 159, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Arrow on new row
{ 0, 6, 13, 160, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Down Arrow
{ 0, 6, 14, 161, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Right Arrow
{ 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row before function keys
{ 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Vol Up
{ 0, 0, 4, 4, "Mic On / Off", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mic On / Off
{ 0, 0, 5, 5, "Hyperfan", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Hyperfan
{ 0, 0, 6, 6, "Armoury Crate", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Armoury Crate
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 15, 37, KEY_EN_DELETE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Delete
{ 0, 1, 15, 58, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play / Pause
{ 0, 2, 15, 79, KEY_EN_MEDIA_STOP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Stop
{ 0, 3, 15, 100, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous
{ 0, 4, 15, 121, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Media Next
{ 0, 5, 1, 127, KEY_EN_LEFT_FUNCTION, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Function key
{ 0, 5, 4, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Unused key
{ 0, 5, 11, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Func key
{ 0, 5, 11, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Context key
{ 0, 5, 13, 139, KEY_EN_UP_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Up Arrow
{ 0, 5, 15, 142, KEY_EN_PRINT_SCREEN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Print Screen
{ 0, 5, 16, 175, "Keystone", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Keystone (Red only)
{ 0, 6, 12, 159, KEY_EN_LEFT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Arrow on new row
{ 0, 6, 13, 160, KEY_EN_DOWN_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Down Arrow
{ 0, 6, 14, 161, KEY_EN_RIGHT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Right Arrow
{ 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row before function keys
{ 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Vol Up
{ 0, 0, 4, 4, "Mic On / Off", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mic On / Off
{ 0, 0, 5, 5, "Hyperfan", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Hyperfan
{ 0, 0, 6, 6, "Armoury Crate", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Armoury Crate
}
};
@@ -131,13 +131,13 @@ keyboard_keymap_overlay_values g533zw_lid_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 167, "Logo", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 176, "Vertical Cut Left", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 177, "Vertical Cut Right", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L3
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 167, "Logo", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 176, "Vertical Cut Left", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 177, "Vertical Cut Right", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L3
}
};
@@ -151,16 +151,16 @@ keyboard_keymap_overlay_values g533zw_lightbar_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 174, "Lightbar L1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 173, "Lightbar L2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 172, "Lightbar L3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L3
{ 0, 0, 3, 171, "Lightbar R3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R3
{ 0, 0, 4, 170, "Lightbar R2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
{ 0, 0, 5, 169, "Lightbar R1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R1
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 174, "Lightbar L1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 173, "Lightbar L2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 172, "Lightbar L3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L3
{ 0, 0, 3, 171, "Lightbar R3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R3
{ 0, 0, 4, 170, "Lightbar R2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
{ 0, 0, 5, 169, "Lightbar R1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R1
}
};
@@ -174,55 +174,55 @@ keyboard_keymap_overlay_values g713rw_keyboard_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row and add Volume Down
{ 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Volume Up
{ 0, 0, 4, 4, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute
{ 0, 0, 5, 5, "Key: Fan", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "Fan" key
{ 0, 0, 6, 6, "Key: ROG", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "ROG" key
{ 0, 6, 1, 127, KEY_EN_LEFT_FUNCTION, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Fuction
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 10, 136, KEY_EN_RIGHT_FUNCTION, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Fuction
{ 0, 6, 10, 136, KEY_EN_RIGHT_WINDOWS, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Win Key
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row and add Volume Down
{ 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Volume Up
{ 0, 0, 4, 4, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute
{ 0, 0, 5, 5, "Key: Fan", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "Fan" key
{ 0, 0, 6, 6, "Key: ROG", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "ROG" key
{ 0, 6, 1, 127, KEY_EN_LEFT_FUNCTION, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Fuction
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 10, 136, KEY_EN_RIGHT_FUNCTION, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Fuction
{ 0, 6, 10, 136, KEY_EN_RIGHT_WINDOWS, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Win Key
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 15, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // trim extra column before numpad
{ 0, 1, 15, 38, KEY_EN_DELETE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Delete key
{ 0, 1, 17, 40, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Print Screen key
{ 0, 1, 18, 41, KEY_EN_HOME, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Home key
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 13, 76, KEY_EN_ANSI_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, }, // Force ANSI | even on ISO layouts
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 12, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // gap before arrow up key
{ 0, 5, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // trim extra column before numpad
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 15, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // trim extra column before numpad
{ 0, 1, 15, 38, KEY_EN_DELETE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Delete key
{ 0, 1, 17, 40, KEY_EN_PRINT_SCREEN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Print Screen key
{ 0, 1, 18, 41, KEY_EN_HOME, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Home key
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 13, 76, KEY_EN_ANSI_BACK_SLASH, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Force ANSI | even on ISO layouts
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 12, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // gap before arrow up key
{ 0, 5, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // trim extra column before numpad
{ 0, 6, 11, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // 1 empty key before arrow keys
{ 0, 6, 15, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // trim extra column before numpad
{ 0, 6, 16, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // 1 empty key between numpad 0 and .
{ 0, 6, 11, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // 1 empty key before arrow keys
{ 0, 6, 15, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // trim extra column before numpad
{ 0, 6, 16, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // 1 empty key between numpad 0 and .
// Close numpad gap completely
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 6, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 6, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
// Move Arrow keys
{ 0, 5, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove Arrow Up
{ 0, 6, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove Arrow Down
{ 0, 6, 12, 139, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_SWAP_ONLY, }, // Shift Arrow Up
{ 0, 7, 11, 159, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 12, 160, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 13, 161, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove Arrow Up
{ 0, 6, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Remove Arrow Down
{ 0, 6, 12, 139, KEY_EN_UP_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Shift Arrow Up
{ 0, 7, 11, 159, KEY_EN_LEFT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 12, 160, KEY_EN_DOWN_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 13, 161, KEY_EN_RIGHT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
}
};
@@ -236,16 +236,109 @@ keyboard_keymap_overlay_values g713rw_lightbar_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 174, "Lightbar L1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 173, "Lightbar L2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 172, "Lightbar L3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L3
{ 0, 0, 3, 171, "Lightbar R3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R3
{ 0, 0, 4, 170, "Lightbar R2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
{ 0, 0, 5, 169, "Lightbar R1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R1
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 174, "Lightbar L1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 173, "Lightbar L2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 172, "Lightbar L3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L3
{ 0, 0, 3, 171, "Lightbar R3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R3
{ 0, 0, 4, 170, "Lightbar R2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
{ 0, 0, 5, 169, "Lightbar R1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R1
}
};
keyboard_keymap_overlay_values g713rw_test_layout
{
KEYBOARD_SIZE_EMPTY,
{
{ /* Values not set in empty keyboard */ },
{
/* Add more regional layout fixes here */
}
},
{
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 7, "Test01", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 1, 8, "Test02", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 9, "Test03", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 10, "Test04", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 11, "Test05", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 12, "Test06", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 13, "Test07", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 14, "Test08", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 15, "Test09", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 16, "Test10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 17, "Test11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 18, "Test12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 19, "Test13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 20, "Test14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 22, "Test15", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 15, 27, "Test16", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 16, 55, "Test17", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 57, "Test18", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 58, "Test19", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 77, "Test20", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 78, "Test21", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 21, 79, "Test22", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 22, 96, "Test23", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 23, 97, "Test24", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 24, 99, "Test25", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 25, 100, "Test26", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 26, 104, "Test27", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 27, 117, "Test28", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 28, 118, "Test29", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 29, 120, "Test30", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 30, 121, "Test31", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 31, 130, "Test32", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 32, 132, "Test33", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 33, 133, "Test34", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 34, 134, "Test35", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 35, 138, "Test36", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 36, 140, "Test37", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 37, 141, "Test38", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 38, 142, "Test39", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 39, 143, "Test40", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 40, 146, "Test41", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 41, 147, "Test42", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 42, 148, "Test43", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 43, 149, "Test44", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 44, 150, "Test45", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 45, 151, "Test46", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 46, 152, "Test47", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 47, 153, "Test48", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 48, 154, "Test49", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 49, 155, "Test50", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 50, 156, "Test51", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 51, 157, "Test52", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 52, 158, "Test53", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 53, 162, "Test54", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 54, 163, "Test55", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 55, 164, "Test56", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 56, 165, "Test57", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 57, 166, "Test58", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 58, 167, "Test59", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
}
};
keyboard_keymap_overlay_values g733zm_layout
{
KEYBOARD_SIZE_FULL,
{
aura_core_laptop_17_values,
{
/* Add more regional layout fixes here */
}
},
{
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
}
};
@@ -259,38 +352,38 @@ keyboard_keymap_overlay_values g814jv_keyboard_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row and add Volume Down
{ 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Volume Up
{ 0, 0, 4, 4, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute
{ 0, 0, 5, 5, "Key: Fan", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "Fan" key
{ 0, 0, 6, 6, "Key: ROG", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "ROG" key
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 1, 127, KEY_EN_LEFT_FUNCTION, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Fuction
{ 0, 6, 10, 136, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_SWAP_ONLY, }, // Replace Right Fuction with PrtSc
{ 0, 6, 11, 0, KEY_EN_RIGHT_WINDOWS, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Win Key
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 1, 14, 38, KEY_EN_DELETE, KEYBOARD_OPCODE_SWAP_ONLY, }, // Insert a Delete key
{ 0, 1, 16, 40, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Print Screen key
{ 0, 1, 17, 41, KEY_EN_HOME, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Home key
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 13, 76, KEY_EN_ANSI_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, }, // Force ANSI | even on ISO layouts
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Numpad gap
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 12, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 6, 15, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
/*------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row and add Volume Down
{ 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Volume Up
{ 0, 0, 4, 4, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute
{ 0, 0, 5, 5, "Key: Fan", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "Fan" key
{ 0, 0, 6, 6, "Key: ROG", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "ROG" key
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 8, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar
{ 0, 6, 1, 127, KEY_EN_LEFT_FUNCTION, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Fuction
{ 0, 6, 10, 136, KEY_EN_PRINT_SCREEN, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Replace Right Fuction with PrtSc
{ 0, 6, 11, 0, KEY_EN_RIGHT_WINDOWS, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Win Key
{ 0, 1, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 1, 14, 38, KEY_EN_DELETE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Insert a Delete key
{ 0, 1, 16, 40, KEY_EN_PRINT_SCREEN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Print Screen key
{ 0, 1, 17, 41, KEY_EN_HOME, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Home key
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 13, 76, KEY_EN_ANSI_BACK_SLASH, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, // Force ANSI | even on ISO layouts
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Numpad gap
{ 0, 3, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 12, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 5, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
{ 0, 6, 15, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, },
}
};
@@ -304,14 +397,14 @@ keyboard_keymap_overlay_values g814jv_lightbar_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 173, "Lightbar L1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 172, "Lightbar L2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 170, "Lightbar R2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
{ 0, 0, 3, 169, "Lightbar R1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 173, "Lightbar L1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1
{ 0, 0, 1, 172, "Lightbar L2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2
{ 0, 0, 2, 170, "Lightbar R2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
{ 0, 0, 3, 169, "Lightbar R1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2
}
};
@@ -86,6 +86,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1080 Ti Gaming",
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1080 Ti Gaming", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_11G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1080 Ti Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_O11G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1080 Ti Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_O11G_GAMING_A02, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Poseidon GeForce GTX 1080 Ti", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_POSEIDON_GTX1080TI, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1650 SUPER A4G Gaming", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1650S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1650S_A4G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1650 SUPER Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1650S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1650S_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce GTX 1660 SUPER Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1660S_O6G_GAMING, 0x2A);
@@ -119,7 +120,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 2080 Ti Gaming",
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 2080 Ti Gaming", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_11G_GAMING_866C, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 2080 Ti A11G Gaming", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_A11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 2080 Ti Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_O11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060_TI_O8G_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti Gaming OC", DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060TI_O8G_OC, 0x2A);
/*-----------------------------------------*\
| AMD GPUs |
@@ -128,6 +129,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti Gaming OC",
REGISTER_I2C_PCI_DETECTOR("ASUS AREZ STRIX Radeon RX Vega 56 Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, ASUS_SUB_VEN, ASUS_AREZ_STRIX_VEGA56_08G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon Vega 64", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, ASUS_SUB_VEN, ASUS_VEGA64_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 470 Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX470_STRIX_O4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 480 Gaming", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX480_STRIX_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 480 Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX480_STRIX_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 560 Gaming", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS11, ASUS_SUB_VEN, ASUS_RX560_STRIX_4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 560 Gaming", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS11, ASUS_SUB_VEN, ASUS_RX560_STRIX_4G_GAMING_04BE, 0x29);
@@ -137,6 +139,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 580 Gaming OC",
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 580 Gaming TOP", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX580_STRIX_GAMING_TOP, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 590 Gaming", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX590_STRIX_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 5600 XT Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5600XT_STRIX_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 5700 Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700_STRIX_GAMING_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 5700 XT Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_GAMING_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 5700 XT Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX Radeon RX 5700 XT Gaming OC", DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_O8G_GAMING_05C3, 0x2A);
@@ -46,6 +46,7 @@ enum
AURA_ROG_STRIX_FLARE_II_ANIMATE_PID = 0x19FC,
AURA_ROG_STRIX_SCOPE_PID = 0x18F8,
AURA_ROG_STRIX_SCOPE_RX_PID = 0x1951,
AURA_ROG_STRIX_SCOPE_RX_EVA_02_PID = 0x1B12,
AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID = 0x19F6,
AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID = 0x19F8,
AURA_ROG_STRIX_SCOPE_II_PID = 0x1AB3,
@@ -67,6 +67,7 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont
case AURA_ROG_STRIX_FLARE_II_PID:
case AURA_ROG_STRIX_FLARE_II_ANIMATE_PID:
case AURA_ROG_STRIX_SCOPE_RX_PID:
case AURA_ROG_STRIX_SCOPE_RX_EVA_02_PID:
case AURA_ROG_STRIX_SCOPE_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID:
@@ -419,6 +420,7 @@ void RGBController_AuraTUFKeyboard::SetupZones()
break;
case AURA_ROG_STRIX_SCOPE_PID:
case AURA_ROG_STRIX_SCOPE_RX_PID:
case AURA_ROG_STRIX_SCOPE_RX_EVA_02_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID:
keyboard_ptr = &AsusROGStrixScopeLayouts;
@@ -68,6 +68,7 @@
#define AURA_ROG_STRIX_SCOPE_TKL_PID 0x190C
#define AURA_ROG_STRIX_SCOPE_TKL_PNK_LTD_PID 0x1954
#define AURA_ROG_STRIX_SCOPE_RX_PID 0x1951
#define AURA_ROG_STRIX_SCOPE_RX_EVA_02_PID 0x1B12
#define AURA_ROG_STRIX_SCOPE_RX_TKL_DELUXE_PID 0x1A05
#define AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID 0x19F6
#define AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID 0x19F8
@@ -364,6 +365,7 @@ REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare II Animate", Dete
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare II", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_II_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope RX", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope RX EVA-02 Edition", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_EVA_02_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope NX Wireless Deluxe USB", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope NX Wireless Deluxe 2.4GHz", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope II", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_II_PID, 1, 0xFF00);
@@ -30,20 +30,23 @@
#define MX_BOARD_8_0_TKL_RGB_PID 0x00B7
#define MX_BOARD_10_0_FL_RGB_PID 0x00BB
#define G80_3000_TKL_NBL_PID 0x00C3
#define MX_BOARD_2_0S_FL_RGB_PID 0x00C4
#define MX_BOARD_2_0S_FL_RGB_EU_PID 0x01A6
#define MX_BOARD_2_0S_FL_RGB_US_PID 0x00C4
#define MX_BOARD_2_0S_FL_NBL_PID 0x00CE
#define G80_3000_TKL_RGB_PID 0x00C5
#define MV_BOARD_3_0FL_RGB_PID 0x00C7
#define CCF_MX_8_0_TKL_BL_PID 0x00C9
#define CCF_MX_1_0_TKL_BL_PID 0x00CA
#define CCF_MX_1_0_TKL_NBL_PID 0x00CB
#define G80_3000_TKL_NBL_KOR_PID 0x00CD
#define MX_BOARD_2_0S_FL_NBL_PID 0x00CE
#define MX_1_0_FL_NBL_PID 0x00D2
#define MX_1_0_FL_RGB_PID 0x00D3
#define G80_3000N_TKL_RGB_PID 0x00DD
#define G80_3000N_FL_RGB_PID 0x00DE
#define MX_BOARD_10_0N_FL_RGB_PID 0x00DF
#define MX_BOARD_2_0S_FL_RGB_DE_PID 0x01A6
#define G80_3000N_TKL_RGB_EU_PID 0x00DD
#define G80_3000N_TKL_RGB_US_PID 0x00E0
#define G80_3000N_FL_RGB_EU_PID 0x00DE
#define G80_3000N_FL_RGB_US_PID 0x00E1
#define MX_BOARD_10_0N_FL_RGB_EU_PID 0x00DF
#define MX_BOARD_10_0N_FL_RGB_US_PID 0x00E2
enum
@@ -51,17 +51,20 @@ REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 1.0 TKL RGB", DetectCh
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 8.0 TKL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_8_0_TKL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 10.0 FL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_10_0_FL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000 TKL NBL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000_TKL_NBL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 2.0S FL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_2_0S_FL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 2.0S FL RGB (EU)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_2_0S_FL_RGB_EU_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 2.0S FL RGB (US)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_2_0S_FL_RGB_US_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 2.0S FL NBL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_2_0S_FL_NBL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000 TKL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000_TKL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MV BOARD 3.0 FL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MV_BOARD_3_0FL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard CCF MX 8.0 TKL BL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, CCF_MX_8_0_TKL_BL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard CCF MX 1.0 TKL BL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, CCF_MX_1_0_TKL_BL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard CCF MX 1.0 TKL NBL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, CCF_MX_1_0_TKL_NBL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000 TKL NBL KOREAN", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000_TKL_NBL_KOR_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 2.0S FL NBL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_2_0S_FL_NBL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX 1.0 FL NBL", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_1_0_FL_NBL_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX 1.0 FL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_1_0_FL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000N TKL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000N_TKL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000N FL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000N_FL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 10.0N FL RGB", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_10_0N_FL_RGB_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 2.0S FL RGB DE", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_2_0S_FL_RGB_DE_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000N TKL RGB (EU)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000N_TKL_RGB_EU_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000N TKL RGB (US)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000N_TKL_RGB_US_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000N FL RGB (EU)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000N_FL_RGB_EU_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard G80-3000N FL RGB (US)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, G80_3000N_FL_RGB_US_PID , 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 10.0N FL RGB (EU)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_10_0N_FL_RGB_EU_PID, 1, CHERRY_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Cherry Keyboard MX BOARD 10.0N FL RGB (US)", DetectCherryKeyboards, CHERRY_KEYBOARD_VID, MX_BOARD_10_0N_FL_RGB_US_PID, 1, CHERRY_KEYBOARD_USAGE_PAGE);
@@ -440,9 +440,9 @@ bool RGBController_CherryKeyboard::hasUnofficialModeSupport(const uint16_t produ
// RGB keyboards known for not supporting unofficial modes
case MX_BOARD_3_0S_FL_RGB_PID:
case MX_BOARD_3_0S_FL_RGB_KOR_PID:
case MX_BOARD_2_0S_FL_RGB_PID:
case MX_BOARD_2_0S_FL_RGB_US_PID:
case MX_BOARD_2_0S_FL_NBL_PID:
case MX_BOARD_2_0S_FL_RGB_DE_PID:
case MX_BOARD_2_0S_FL_RGB_EU_PID:
case MV_BOARD_3_0FL_RGB_PID:
return false;
// RGB keyboards which (probably) support unofficial modes
@@ -451,9 +451,12 @@ bool RGBController_CherryKeyboard::hasUnofficialModeSupport(const uint16_t produ
case MX_BOARD_10_0_FL_RGB_PID: // unknown (probably yes, related to 10.0N)
case G80_3000_TKL_RGB_PID: // unknown
case MX_1_0_FL_RGB_PID: // unkown
case G80_3000N_TKL_RGB_PID: // yes
case G80_3000N_FL_RGB_PID: // firmware v0102: YES, firmware v0103: NO
case MX_BOARD_10_0N_FL_RGB_PID: // yes
case G80_3000N_TKL_RGB_EU_PID: // yes
case G80_3000N_TKL_RGB_US_PID: // yes
case G80_3000N_FL_RGB_EU_PID: // firmware v0102: YES, firmware v0103: NO
case G80_3000N_FL_RGB_US_PID: // firmware v0102: YES, firmware v0103: NO
case MX_BOARD_10_0N_FL_RGB_EU_PID: // yes
case MX_BOARD_10_0N_FL_RGB_US_PID: // yes
default:
return true;
}
@@ -51,21 +51,23 @@ REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", Detec
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Ultra W OC LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_TI_ADVANCED_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060TI_ADVANCED_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ULTRAW_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ULTRAW_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_TI_ULTRAW_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_TI_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070TI_ULTRAW_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070TI_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Advanced OC 10G-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_ADVANCED_OC_10G, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_TI_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080TI_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ultra W OC 10G LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_ULTRAW_OC_10G, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ultra W OC 10G LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_ULTRAW_OC_10G_2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_TI_ADVANCED_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_AD102_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_TI_SUPER_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 SUPER Ultra W OC 12GB", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_SUPER_ULTRA_W_OC_12GB, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070TI_ADVANCED_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_AD102_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070TI_SUPER_ADVANCED_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Ultra W", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070TI_SUPER_ULTRA_W, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 SUPER Ultra W OC", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_SUPER_ULTRA_W_OC, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Vulcan OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_VULCAN_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 SUPER Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070S_ULTRAW_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4080 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4080_ULTRAW_OCV, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4080 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4080_ULTRAW_OCV2, 0x61);
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4090 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4090_ADVANCED_OCV, 0x61);
@@ -280,7 +280,7 @@ keyboard_keymap_overlay_values mk_pro_s_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
},
};
@@ -297,12 +297,12 @@ keyboard_keymap_overlay_values mk_pro_l_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 17, 101, "Key: P1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 109, "Key: P2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 117, "Key: P3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 119, "Key: P4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 101, "Key: P1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 109, "Key: P2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 117, "Key: P3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 119, "Key: P4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
},
};
@@ -322,16 +322,16 @@ keyboard_keymap_overlay_values mk850_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 17, 146, "Key: Aim <|>", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // aimpad <|>
{ 0, 0, 18, 153, "Key: Aim -", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // aimpad +
{ 0, 0, 19, 160, "Key: Aim +", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // aimpad -
{ 0, 1, 0, 0, "Key: M5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 1, "Key: M4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 2, "Key: M3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 3, "Key: M2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 4, "Key: M1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 146, "Key: Aim <|>", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // aimpad <|>
{ 0, 0, 18, 153, "Key: Aim -", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // aimpad +
{ 0, 0, 19, 160, "Key: Aim +", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // aimpad -
{ 0, 1, 0, 0, "Key: M5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 1, "Key: M4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 2, "Key: M3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 3, "Key: M2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 4, "Key: M1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
},
};
@@ -345,51 +345,51 @@ keyboard_keymap_overlay_values sk620_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 7, "Light: Top 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 14, "Light: Top 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 21, "Light: Top 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 28, "Light: Top 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 35, "Light: Top 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 42, "Light: Top 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 49, "Light: Top 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 56, "Light: Top 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 63, "Light: Top 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 70, "Light: Top 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 77, "Light: Top 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 84, "Light: Top 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 91, "Light: Top 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 98, "Light: Top 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 105, "Light: Top 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 0, "Light: Left 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 1, "Light: Left 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 2, "Light: Left 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 3, "Light: Left 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 4, "Light: Left 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 112, "Light: Right 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 113, "Light: Right 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 16, 114, "Light: Right 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 16, 115, "Light: Right 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 116, "Light: Right 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 6, "Light: Bottom 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 1, 20, "Light: Bottom 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 2, 27, "Light: Bottom 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 34, "Light: Bottom 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 41, "Light: Bottom 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 48, "Light: Bottom 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 55, "Light: Bottom 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 62, "Light: Bottom 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 69, "Light: Bottom 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 9, 76, "Light: Bottom 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 83, "Light: Bottom 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 90, "Light: Bottom 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 97, "Light: Bottom 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 104, "Light: Bottom 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 111, "Light: Bottom 15", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 118, "Light: Bottom 16", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
/*-----------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-----------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 7, "Light: Top 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 14, "Light: Top 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 21, "Light: Top 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 28, "Light: Top 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 35, "Light: Top 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 42, "Light: Top 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 49, "Light: Top 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 56, "Light: Top 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 63, "Light: Top 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 70, "Light: Top 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 77, "Light: Top 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 84, "Light: Top 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 91, "Light: Top 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 98, "Light: Top 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 105, "Light: Top 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 0, "Light: Left 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 1, "Light: Left 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 2, "Light: Left 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 3, "Light: Left 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 4, "Light: Left 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 112, "Light: Right 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 113, "Light: Right 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 16, 114, "Light: Right 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 16, 115, "Light: Right 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 116, "Light: Right 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 6, "Light: Bottom 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 1, 20, "Light: Bottom 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 2, 27, "Light: Bottom 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 34, "Light: Bottom 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 41, "Light: Bottom 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 48, "Light: Bottom 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 55, "Light: Bottom 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 62, "Light: Bottom 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 69, "Light: Bottom 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 9, 76, "Light: Bottom 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 83, "Light: Bottom 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 90, "Light: Bottom 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 97, "Light: Bottom 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 104, "Light: Bottom 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 111, "Light: Bottom 15", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 118, "Light: Bottom 16", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
},
};
@@ -405,49 +405,49 @@ keyboard_keymap_overlay_values sk622_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 7, "Light: Top 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 14, "Light: Top 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 21, "Light: Top 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 28, "Light: Top 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 35, "Light: Top 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 42, "Light: Top 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 49, "Light: Top 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 56, "Light: Top 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 63, "Light: Top 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 70, "Light: Top 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 77, "Light: Top 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 84, "Light: Top 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 91, "Light: Top 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 98, "Light: Top 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 105, "Light: Top 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 0, "Light: Left 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 1, "Light: Left 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 2, "Light: Left 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 3, "Light: Left 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 4, "Light: Left 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 112, "Light: Right 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 113, "Light: Right 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 16, 114, "Light: Right 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 16, 115, "Light: Right 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 116, "Light: Right 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 6, "Light: Bottom 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 1, 20, "Light: Bottom 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 2, 27, "Light: Bottom 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 34, "Light: Bottom 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 41, "Light: Bottom 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 48, "Light: Bottom 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 55, "Light: Bottom 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 62, "Light: Bottom 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 69, "Light: Bottom 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 9, 76, "Light: Bottom 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 83, "Light: Bottom 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 90, "Light: Bottom 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 97, "Light: Bottom 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 104, "Light: Bottom 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 111, "Light: Bottom 15", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 118, "Light: Bottom 16", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 0, 7, "Light: Top 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 14, "Light: Top 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 21, "Light: Top 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 28, "Light: Top 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 35, "Light: Top 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 42, "Light: Top 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 49, "Light: Top 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 56, "Light: Top 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 63, "Light: Top 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 70, "Light: Top 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 77, "Light: Top 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 84, "Light: Top 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 91, "Light: Top 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 98, "Light: Top 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 105, "Light: Top 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 0, "Light: Left 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 1, "Light: Left 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 2, "Light: Left 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 3, "Light: Left 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 4, "Light: Left 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 112, "Light: Right 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 113, "Light: Right 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 16, 114, "Light: Right 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 16, 115, "Light: Right 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 116, "Light: Right 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 6, "Light: Bottom 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 1, 20, "Light: Bottom 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 2, 27, "Light: Bottom 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 34, "Light: Bottom 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 41, "Light: Bottom 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 48, "Light: Bottom 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 55, "Light: Bottom 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 62, "Light: Bottom 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 69, "Light: Bottom 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 9, 76, "Light: Bottom 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 83, "Light: Bottom 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 90, "Light: Bottom 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 97, "Light: Bottom 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 104, "Light: Bottom 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 111, "Light: Bottom 15", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 118, "Light: Bottom 16", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
},
};
@@ -534,30 +534,30 @@ keyboard_keymap_overlay_values mk730_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 1, 0, 1, "Light: Left 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 2, "Light: Left 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 3, "Light: Left 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 4, "Light: Left 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 18, 141, "Light: Right 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 18, 142, "Light: Right 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 18, 143, "Light: Right 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 18, 144, "Light: Right 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 1, 13, "Light: Bottom 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 2, 20, "Light: Bottom 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 27, "Light: Bottom 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 34, "Light: Bottom 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 41, "Light: Bottom 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 55, "Light: Bottom 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 62, "Light: Bottom 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 69, "Light: Logo", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 76, "Light: Bottom 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 90, "Light: Bottom 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 104, "Light: Bottom 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 111, "Light: Bottom 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 118, "Light: Bottom 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 15, 125, "Light: Bottom 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 1, "Light: Left 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 2, "Light: Left 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 3, "Light: Left 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 4, "Light: Left 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 18, 141, "Light: Right 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 18, 142, "Light: Right 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 18, 143, "Light: Right 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 18, 144, "Light: Right 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 1, 13, "Light: Bottom 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 2, 20, "Light: Bottom 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 27, "Light: Bottom 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 34, "Light: Bottom 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 41, "Light: Bottom 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 55, "Light: Bottom 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 62, "Light: Bottom 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 69, "Light: Logo", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 76, "Light: Bottom 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 90, "Light: Bottom 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 104, "Light: Bottom 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 111, "Light: Bottom 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 118, "Light: Bottom 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 15, 125, "Light: Bottom 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
}
};
@@ -582,38 +582,38 @@ keyboard_keymap_overlay_values mk750_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 17, 140, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 147, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 154, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 161, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 1, "Light: Left 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 2, "Light: Left 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 3, "Light: Left 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 4, "Light: Left 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 22, 170, "Light: Right 1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 22, 171, "Light: Right 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 22, 172, "Light: Right 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 22, 173, "Light: Right 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 1, 20, "Light: Bottom 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 2, 27, "Light: Bottom 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 34, "Light: Bottom 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 41, "Light: Bottom 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 55, "Light: Bottom 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 62, "Light: Bottom 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 69, "Light: Bottom 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 76, "Light: Bottom 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 9, 83, "Light: Bottom 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 90, "Light: Bottom 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 104, "Light: Bottom 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 111, "Light: Bottom 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 118, "Light: Bottom 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 125, "Light: Bottom 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 15, 132, "Light: Bottom 15", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 16, 146, "Light: Bottom 16", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 17, 153, "Light: Bottom 17", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 18, 160, "Light: Bottom 18", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 140, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 147, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 154, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 161, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 1, "Light: Left 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 2, "Light: Left 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 3, "Light: Left 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 4, "Light: Left 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 22, 170, "Light: Right 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 22, 171, "Light: Right 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 22, 172, "Light: Right 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 22, 173, "Light: Right 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 1, 20, "Light: Bottom 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 6, 2, 27, "Light: Bottom 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 3, 34, "Light: Bottom 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 4, 41, "Light: Bottom 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 5, 55, "Light: Bottom 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 6, 62, "Light: Bottom 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 7, 69, "Light: Bottom 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 8, 76, "Light: Bottom 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 9, 83, "Light: Bottom 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 10, 90, "Light: Bottom 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 11, 104, "Light: Bottom 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 12, 111, "Light: Bottom 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 13, 118, "Light: Bottom 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 14, 125, "Light: Bottom 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 15, 132, "Light: Bottom 15", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 16, 146, "Light: Bottom 16", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 17, 153, "Light: Bottom 17", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 18, 160, "Light: Bottom 18", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
}
};
@@ -670,11 +670,11 @@ keyboard_keymap_overlay_values ck550v2_layout
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 17, 120, "Indicator: N", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 126, "Indicator: C", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 132, "Indicator: S", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 120, "Indicator: N", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 126, "Indicator: C", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 132, "Indicator: S", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
},
};
@@ -30,6 +30,7 @@
#define CORSAIR_HYDRO_H100I_PRO_XT_V2_PID 0x0C2D
#define CORSAIR_HYDRO_H115I_PRO_XT_PID 0x0C21
#define CORSAIR_HYDRO_H150I_PRO_XT_PID 0x0C22
#define CORSAIR_HYDRO_H100I_ELITE_PID 0x0C40
void DetectCorsairHydroPlatinumControllers(hid_device_info* info, const std::string& name)
{
@@ -52,3 +53,4 @@ REGISTER_HID_DETECTOR("Corsair Hydro H100i Pro XT", DetectCorsairHydroPl
REGISTER_HID_DETECTOR("Corsair Hydro H100i Pro XT v2", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PRO_XT_V2_PID );
REGISTER_HID_DETECTOR("Corsair Hydro H115i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H115I_PRO_XT_PID );
REGISTER_HID_DETECTOR("Corsair Hydro H150i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H150I_PRO_XT_PID );
REGISTER_HID_DETECTOR("Corsair Hydro H100i Elite", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_ELITE_PID );
@@ -58,10 +58,10 @@ keyboard_keymap_overlay_values corsair_K60_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
}
};
@@ -75,10 +75,10 @@ keyboard_keymap_overlay_values corsair_K60_tkl_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
}
};
@@ -92,10 +92,10 @@ keyboard_keymap_overlay_values corsair_k70_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
}
};
@@ -109,19 +109,19 @@ keyboard_keymap_overlay_values corsair_k70_pro_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 128, "Profile", KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Profile into new row
{ 0, 0, 1, 113, "Light", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Light key
{ 0, 0, 2, 114, "Lock", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lock Key
{ 0, 0, 10, 191, "Logo", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Logo
{ 0, 0, 18, 102, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute Key
{ 0, 1, 17, 123, KEY_EN_MEDIA_STOP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Stop Key
{ 0, 1, 18, 126, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous Track Key
{ 0, 1, 19, 124, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play Pause Key
{ 0, 1, 20, 125, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Next Tack Key
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 128, "Profile", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Profile into new row
{ 0, 0, 1, 113, "Light", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Light key
{ 0, 0, 2, 114, "Lock", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lock Key
{ 0, 0, 10, 191, "Logo", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Logo
{ 0, 0, 18, 102, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute Key
{ 0, 1, 17, 123, KEY_EN_MEDIA_STOP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Stop Key
{ 0, 1, 18, 126, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous Track Key
{ 0, 1, 19, 124, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play Pause Key
{ 0, 1, 20, 125, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Next Tack Key
}
};
@@ -135,20 +135,20 @@ keyboard_keymap_overlay_values corsair_K70_TKL_cs_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 1, 123, KEY_EN_MEDIA_STOP, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Stop Key into new media keys row
{ 0, 0, 2, 126, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous Track Key
{ 0, 0, 3, 124, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play Pause Key
{ 0, 0, 4, 125, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Next Tack Key
{ 0, 0, 7, 1, "Logo L", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert 'Logo Left'
{ 0, 0, 8, 3, "Logo R", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert 'Logo Right'
{ 0, 0, 11, 128, "Profile", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Profile
{ 0, 0, 12, 113, "Light", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Light key
{ 0, 0, 13, 114, "Lock", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lock Key
{ 0, 0, 14, 102, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute Key
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 1, 123, KEY_EN_MEDIA_STOP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Stop Key into new media keys row
{ 0, 0, 2, 126, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Previous Track Key
{ 0, 0, 3, 124, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Play Pause Key
{ 0, 0, 4, 125, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Next Tack Key
{ 0, 0, 7, 1, "Logo L", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert 'Logo Left'
{ 0, 0, 8, 3, "Logo R", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert 'Logo Right'
{ 0, 0, 11, 128, "Profile", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Profile
{ 0, 0, 12, 113, "Light", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Light key
{ 0, 0, 13, 114, "Lock", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lock Key
{ 0, 0, 14, 102, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute Key
}
};
@@ -162,87 +162,87 @@ keyboard_keymap_overlay_values corsair_k100_layout
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode, |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
//media keys
{ 0, 0, 17, 123, KEY_EN_MEDIA_STOP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 126, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 124, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 125, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 123, KEY_EN_MEDIA_STOP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 126, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 124, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 125, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
//upper row
{ 0, 0, 1, 128, "Profile", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 2, 137, "iCue", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 114, "Lock", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 190, "Logo L", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 191, "Logo M", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 192, "Logo R", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 102, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 1, 128, "Profile", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 2, 137, "iCue", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 114, "Lock", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 190, "Logo L", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 191, "Logo M", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 192, "Logo R", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 102, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
//macro keys
{ 0, 1, 0, 131, "G1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 132, "G2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 133, "G3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 134, "G4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 135, "G5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 136, "G6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 131, "G1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 132, "G2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 133, "G3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 134, "G4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 135, "G5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 136, "G6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
//underglow 44 entries
//underglow upper
{ 0, 0, 0, 138, "Underglow 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 139, "Underglow 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 140, "Underglow 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 141, "Underglow 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 142, "Underglow 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 143, "Underglow 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 144, "Underglow 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 145, "Underglow 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 146, "Underglow 9", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 147, "Underglow 10", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 148, "Underglow 11", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 149, "Underglow 12", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 150, "Underglow 13", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 151, "Underglow 14", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 152, "Underglow 15", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 15, 153, "Underglow 16", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 16, 154, "Underglow 17", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 155, "Underglow 18", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 156, "Underglow 19", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 157, "Underglow 20", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 158, "Underglow 21", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 21, 159, "Underglow 22", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 0, 138, "Underglow 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 139, "Underglow 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 140, "Underglow 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 141, "Underglow 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 142, "Underglow 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 143, "Underglow 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 144, "Underglow 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 145, "Underglow 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 146, "Underglow 9", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 147, "Underglow 10", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 148, "Underglow 11", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 149, "Underglow 12", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 150, "Underglow 13", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 151, "Underglow 14", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 14, 152, "Underglow 15", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 15, 153, "Underglow 16", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 16, 154, "Underglow 17", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 17, 155, "Underglow 18", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 18, 156, "Underglow 19", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 19, 157, "Underglow 20", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 20, 158, "Underglow 21", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 21, 159, "Underglow 22", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
//underglow left
{ 0, 0, 0, 160, "Underglow 23", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 161, "Underglow 24", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 162, "Underglow 25", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 163, "Underglow 26", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 164, "Underglow 27", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 165, "Underglow 28", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 166, "Underglow 29", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 0, 167, "Underglow 30", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 8, 0, 168, "Underglow 31", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 9, 0, 169, "Underglow 32", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 10, 0, 170, "Underglow 33", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 0, 160, "Underglow 23", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 0, 161, "Underglow 24", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 162, "Underglow 25", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 163, "Underglow 26", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 164, "Underglow 27", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 165, "Underglow 28", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 0, 166, "Underglow 29", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 0, 167, "Underglow 30", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 8, 0, 168, "Underglow 31", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 9, 0, 169, "Underglow 32", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 10, 0, 170, "Underglow 33", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
//underglow right
{ 0, 0, 23, 171, "Underglow 34", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 23, 172, "Underglow 35", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 23, 173, "Underglow 36", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 23, 174, "Underglow 37", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 23, 175, "Underglow 38", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 23, 176, "Underglow 39", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 23, 177, "Underglow 40", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 23, 178, "Underglow 41", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 8, 23, 179, "Underglow 42", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 9, 23, 180, "Underglow 43", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 10, 23, 181, "Underglow 44", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 23, 171, "Underglow 34", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 23, 172, "Underglow 35", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 23, 173, "Underglow 36", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 23, 174, "Underglow 37", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 23, 175, "Underglow 38", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 23, 176, "Underglow 39", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 6, 23, 177, "Underglow 40", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 7, 23, 178, "Underglow 41", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 8, 23, 179, "Underglow 42", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 9, 23, 180, "Underglow 43", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 10, 23, 181, "Underglow 44", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
//wheel
{ 0, 0, 0, 182, "Wheel 1", KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 183, "Wheel 2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 184, "Wheel 3", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 185, "Wheel 4", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 186, "Wheel 5", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 187, "Wheel 6", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 188, "Wheel 7", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 189, "Wheel 8", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 0, 182, "Wheel 1", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 183, "Wheel 2", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 184, "Wheel 3", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 185, "Wheel 4", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 186, "Wheel 5", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 187, "Wheel 6", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 188, "Wheel 7", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 189, "Wheel 8", KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
}
};
@@ -411,6 +411,7 @@ void DetectDebugControllers()
led dummy_keyboard_led;
dummy_keyboard_led.name = new_kb.GetKeyNameAt(led_idx);
dummy_keyboard->leds.push_back(dummy_keyboard_led);
dummy_keyboard->led_alt_names.push_back(new_kb.GetKeyAltNameAt(led_idx));
}
/*-----------------------------------------------------------------*\
@@ -444,6 +445,7 @@ void DetectDebugControllers()
dummy_keyboard_led.name = dummy_keyboard_underglow_matrix_zone.name + " LED ";
dummy_keyboard_led.name.append(std::to_string(led_idx));
dummy_keyboard->leds.push_back(dummy_keyboard_led);
dummy_keyboard->led_alt_names.push_back("");
}
}
@@ -475,6 +477,7 @@ void DetectDebugControllers()
dummy_keyboard_led.name = "RGB Strip ";
dummy_keyboard_led.name.append(std::to_string(led_idx));
dummy_keyboard->leds.push_back(dummy_keyboard_led);
dummy_keyboard->led_alt_names.push_back("");
}
}
@@ -352,12 +352,12 @@ REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Gaming OC",
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 V2 Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3060_O12G_LHR_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS KO GeForce RTX 3060 V2 Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, ASUS_SUB_VEN, ASUS_KO_RTX_3060_O12G_V2_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS KO GeForce RTX 3060 Ti V2 Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_KO_RTX3060TI_O8G_V2_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_GDDR6X_DEV,ASUS_SUB_VEN, ASUS_TUF_RTX_3060_TI_O8G, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_GDDR6X_DEV,ASUS_SUB_VEN, ASUS_TUF_RTX_3060TI_O8G, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS KO GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_KO_RTX3060TI_O8G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS KO GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_KO_RTX3060TI_08G_GAMING_2, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060_TI_O8G_OC, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_3060_TI_O8G_OC, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060_TI_O8G_OC_V2, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060TI_O8G_OC, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3060TI_O8G_OC, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060TI_O8G_OC_V2, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Ti V2 OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3060TI_O8G_V2_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3070 OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3070_OC, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3070 Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3070_O8G_GAMING, 0x67);
@@ -416,6 +416,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 4070 Gaming OC",
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 4070 Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4070_O12G_GAMING_3, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 4070 SUPER Gaming", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4070S_12G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 4070 Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_4070_O12G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 4070 SUPER Gaming", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_4070S_12G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 4070 SUPER Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_4070S_O12G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 4070 Ti Gaming", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4070TI_12G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 4070 Ti Gaming", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4070TI_12G_GAMING_88DD, 0x67);
@@ -483,6 +484,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX LC Radeon RX 6950 XT Gaming OC",
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7600 XT O16G Gaming", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI33_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7600XT_O16G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7700 XT Gaming OC", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI32_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7700XT_012G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7800 XT Gaming OC", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI32_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7800XT_O16G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7800 XT Gaming OC", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI32_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7800XT_O16G_GAMING_0606, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7800 XT Gaming White OC", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI32_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7800XT_O16G_WHITE_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7900 XT Gaming OC", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI31_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7900XT_020G_GAMING, 0x67);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF Radeon RX 7900 XTX Gaming OC", DetectENESMBusGPUControllers, AMD_GPU_VEN, AMD_NAVI31_DEV, ASUS_SUB_VEN, ASUS_TUF_RX_7900XTX_O24G_GAMING, 0x67);
@@ -54,6 +54,7 @@ void DetectEVGAAmpereGPUControllers(i2c_smbus_interface* bus, uint8_t address, c
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3060 Ti FTW3 Gaming" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, EVGA_SUB_VEN, EVGA_RTX3060TI_FTW3_GAMING_SUB_DEV, 0x2D);
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3060 Ti FTW3 Ultra" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, EVGA_SUB_VEN, EVGA_RTX3060TI_FTW3_ULTRA_SUB_DEV, 0x2D);
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3060 Ti FTW3 Ultra LHR" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, EVGA_SUB_VEN, EVGA_RTX3060TI_FTW3_ULTRA_KL_SUB_DEV, 0x2D);
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3060 Ti FTW3 Ultra Gaming LHR" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, EVGA_SUB_VEN, EVGA_RTX3060TI_FTW3_ULTRA_GAMING_LHR_SUB_DEV, 0x2D);
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3070 Black Gaming" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, EVGA_SUB_VEN, EVGA_RTX3070_XC3_BLACK_SUB_DEV, 0x2D);
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3070 XC3 Gaming" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, EVGA_SUB_VEN, EVGA_RTX3070_XC3_GAMING_SUB_DEV, 0x2D);
REGISTER_I2C_PCI_DETECTOR("EVGA GeForce RTX 3070 XC3 Ultra" , DetectEVGAAmpereGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, EVGA_SUB_VEN, EVGA_RTX3070_XC3_ULTRA_SUB_DEV, 0x2D);
@@ -34,10 +34,10 @@ static const gpu_pci_device device_list[] =
{ NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 Gaming" },
{ NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_11G_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 11G" },
{ NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_DT_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 DT" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_SC2_GAMING_SUB_DEV, "EVGA GeForce GTX 1080 Ti SC2 Gaming" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_HYBRID_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3 Hybrid" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_KINGPIN_SUB_DEV, "EVGA GeForce GTX 1080 Ti K|NGP|N" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_SC2_GAMING_SUB_DEV, "EVGA GeForce GTX 1080 Ti SC2 Gaming" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_HYBRID_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3 Hybrid" },
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_KINGPIN_SUB_DEV, "EVGA GeForce GTX 1080 Ti K|NGP|N" },
};
/******************************************************************************************\
* *
@@ -348,8 +348,8 @@ void EVisionV2KeyboardController::SetMode(EVisionV2KeyboardPart part, const Evis
Write(EVISION_V2_CMD_WRITE_CONFIG, EVISION_V2_OFFSET_CURRENT_PROFILE, &current_profile, 1);
}
uint16_t offset;
uint8_t size;
uint16_t offset = 0;
uint8_t size = 0;
offset = current_profile * 0x40 + EVISION_V2_OFFSET_FIRST_PROFILE;
@@ -11,7 +11,7 @@
#include <iostream>
#include "ElgatoKeyLightController.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
using json = nlohmann::json;
@@ -14,7 +14,7 @@
#include <thread>
#include <vector>
#include "ElgatoLightStripController.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
#include "LogManager.h"
using json = nlohmann::json;
@@ -102,7 +102,7 @@ void DetectGainwardGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, co
} /* DetectGainwardGPUControllers() */
REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1080 Phoenix", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, GAINWARD_SUB_VEN, GAINWARD_GTX_1080_PHOENIX, 0x08);
REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1080 Ti Phoenix", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, GAINWARD_SUB_VEN, GAINWARD_GTX_1080_TI_PHOENIX, 0x08);
REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1080 Ti Phoenix", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, GAINWARD_SUB_VEN, GAINWARD_GTX_1080TI_PHOENIX, 0x08);
REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1660 SUPER Ghost", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Gainward GeForce RTX 2070 SUPER Phantom", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, GAINWARD_SUB_VEN, NVIDIA_RTX2070S_OC_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Gainward GeForce RTX 2080 Phoenix GS", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, GAINWARD_SUB_VEN, NVIDIA_RTX2080_A_DEV, 0x49);
@@ -30,7 +30,7 @@ bool TestForGalaxGPUController(i2c_smbus_interface* bus, unsigned char address)
unsigned char res = bus->i2c_smbus_read_byte_data(address, 0x00);
unsigned char res2 = bus->i2c_smbus_read_byte_data(address, 0x01);
if((res == 0x27 || res == 0x26) && res2 == 0x10)
if((res == 0x27 || res == 0x26) && (res2 == 0x10 || res2 == 0x20))
{
pass = true;
}
@@ -65,4 +65,4 @@ REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2070 OC", Dete
REGISTER_I2C_PCI_DETECTOR("GALAX GeForce RTX 2070 SUPER EX Gamer Black", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, NVIDIA_SUB_VEN, GALAX_RTX_2070S_EX_GAMER_BLACK_SUB_DEV, 0x23);
REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080_EX_OC_SUB_DEV, 0x23);
REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 SUPER EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080_SUPER_EX_OC_SUB_DEV, 0x23);
REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 Ti EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080_TI_EX_OC_SUB_DEV, 0x23);
REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 Ti EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080TI_EX_OC_SUB_DEV, 0x23);
@@ -105,6 +105,7 @@ void DetectGigabyteRGBFusion2GPUControllers(i2c_smbus_interface* bus, uint8_t i2
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS GeForce RTX 2060 SUPER", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2060S_V1_SUB_DEV_H, 0x50);
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS GeForce RTX 2060 SUPER", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2060S_V1_SUB_DEV_P, 0x50);
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS GeForce RTX 2070", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2070_SUB_DEV, 0x50);
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS GeForce RTX 2070 XTREME", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2070_XTREME_SUB_DEV_H, 0x50);
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS GeForce RTX 2070 XTREME", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2070_XTREME_SUB_DEV_P, 0x50);
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS GeForce RTX 2070 SUPER", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2070S_8G_SUB_DEV_H, 0x50);
@@ -152,6 +153,7 @@ REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti GAMING",
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti GAMING OC", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4070TI_GAMING_OC_12G, 0x71);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti GAMING OC", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4070TI_GAMING_OC_12G_SUB_DEV2, 0x71);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti Eagle OC", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4070TI_EAGLE_OC_SUB_DEV, 0x71);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti Eagle OC Rev 2", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4070TI_EAGLE_OC_V2_SUB_DEV, 0x71);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti Master", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4070TI_MASTER_12G, 0x71);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4070 Ti SUPER GAMING OC", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4070TIS_GAMING_OC_16G_SUB_DEV, 0x71);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 4080 AERO OC", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4080_AERO_OC_SUB_DEV, 0x71);
@@ -140,6 +140,7 @@ REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2060 SUPER Gaming OC",
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2060 SUPER Gaming OC 3X White", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2060S_GAMING_OC_WHITE_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2060 SUPER Gaming OC 3X V2", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2060S_GAMING_OC_3X_V2_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 Gaming OC 8GC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070_GAMING_OC_8GC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 Windforce", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070_WINDFORCE_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 SUPER Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070S_GAMING_OC_SUB_DEV, 0x47);
@@ -148,7 +149,7 @@ REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 SUPER Gaming OC 3X",
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 SUPER Gaming OC 3X White", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070S_GAMING_OC_3X_WHITE_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080_A_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Ti GAMING OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080_TI_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Ti GAMING OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080TI_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 SUPER Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080S_GAMING_OC_SUB_DEV, 0x47);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 3050 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX3050_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3050_GAMING_OC_8GB_SUB_DEV, 0x62);
REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 3060 EAGLE OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060_EAGLE_OC_12GB_SUB_DEV, 0x63);
@@ -41,19 +41,19 @@ keyboard_keymap_overlay_values hyte_keeb_tkl_layout =
}
},
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys - Add additional LEDs for space bar underglow and media keys |
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 5, 4, 109, KEY_EN_SPACE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 5, 110, KEY_EN_SPACE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 7, 112, KEY_EN_SPACE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 8, 113, KEY_EN_SPACE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 0, 77, KEY_EN_MEDIA_STOP, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 78, KEY_EN_MEDIA_PREVIOUS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 2, 79, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 3, 98, KEY_EN_MEDIA_NEXT, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 4, 100, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys - Add additional LEDs for space bar underglow and media keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 5, 4, 109, KEY_EN_SPACE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 5, 110, KEY_EN_SPACE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 7, 112, KEY_EN_SPACE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 8, 113, KEY_EN_SPACE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 0, 77, KEY_EN_MEDIA_STOP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_ROW, },
{ 0, 0, 1, 78, KEY_EN_MEDIA_PREVIOUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 2, 79, KEY_EN_MEDIA_PLAY_PAUSE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 3, 98, KEY_EN_MEDIA_NEXT, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 0, 4, 100, KEY_EN_MEDIA_MUTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@@ -97,8 +97,8 @@ void JGINYUEInternalUSBV2Controller::Init_device()
if(usb_buf[1] != 0x0F)
{
ZoneCount = 0x00;
memset(device_config, 0x00, 8*sizeof(AreaConfigurationV2));
memset (&device_config_Global, 0x00, 8*sizeof(AreaConfigurationV2));
memset(device_config, 0x00, sizeof(device_config));
memset (&device_config_Global, 0x00, sizeof(device_config_Global));
return;
}
unsigned char Zone_Info = usb_buf[4];
@@ -43,7 +43,7 @@ enum
JGINYUE_USB_V2_MODE_CYCLING_RAINING = 0x22,
JGINYUE_USB_V2_MODE_MULTICOLOR_WATER_2 = 0x23,
JGINYUE_USB_V2_MODE_MULTICOLOR_WATER_1 = 0x24,
JGINYUE_USB_V2_MODE_HOURGLASS = 0x25
JGINYUE_USB_V2_MODE_HOURGLASS = 0x25
};
enum
@@ -79,7 +79,7 @@ enum
struct AreaConfigurationV2
{
unsigned char Area_ID;
unsigned char Area_ID;
unsigned char Max_LED_numbers;
unsigned char User_LED_numbers;
unsigned char Direction;
@@ -120,23 +120,18 @@ public:
unsigned char num_LEDs,
unsigned char Area
);
AreaConfigurationV2 device_config[8];
//TODO,When the perzone mode is supported, these parameters will be used to download device configuartion from the device
AreaConfigurationV2 device_config_Global;
//TODO,Can sync its data to other zones,will be used once the perzone mode is supported
bool support_Global_zone;
bool support_Global_zone;
private:
void Init_device();
void Init_Zone(int zone);
unsigned char ZoneCount;
unsigned char SKUID;
unsigned char Major_version;
unsigned char Minor_version;
unsigned char FPS; //0x00 = 120FPS, 0x01 = 60FPS
unsigned char ZoneCount;
hid_device* jy_hid_interface;
serial_port* jy_cdc_interface;
std::string location;
@@ -11,7 +11,7 @@
#include <cstdint>
#include "KasaSmartController.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
#include "hsv.h"
using json = nlohmann::json;
@@ -273,7 +273,7 @@ void KasaSmartController::SetEffect(std::string effect)
is_initialized = false;
return;
}
std::string response;
KasaSmartController::SendCommand(effect, response);
port.tcp_close();
@@ -70,7 +70,10 @@ TestResult TestForFurySignature(i2c_smbus_interface *bus, unsigned int slot_addr
{
res = bus->i2c_smbus_read_word_data(slot_addr, i);
std::this_thread::sleep_for(FURY_DELAY);
if(res >= 0)
LOG_DEBUG("[%s] Testing address %02X register %02X, res=%04X",
FURY_CONTROLLER_NAME, slot_addr, i, res);
// retry when there is an error or the returned value is 0xFFFF
if((res >= 0) && (res < 0xFFFF))
{
break;
}
@@ -81,8 +84,6 @@ TestResult TestForFurySignature(i2c_smbus_interface *bus, unsigned int slot_addr
}
char shifted = (res >> 8) & 0xFF;
LOG_DEBUG("[%s] Testing address %02X register %02X, res=%02X",
FURY_CONTROLLER_NAME, slot_addr, i, shifted);
if(shifted != test_str[i-1])
{
passed = false;
@@ -10,7 +10,7 @@
\*---------------------------------------------------------*/
#include "LIFXController.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
#include "hsv.h"
using json = nlohmann::json;
@@ -681,7 +681,7 @@ REGISTER_HID_DETECTOR_IPU("Logitech G203 Lightsync", Dete
REGISTER_HID_DETECTOR_IP ("Logitech G303 Daedalus Apex", DetectLogitechMouseG303, LOGITECH_VID, LOGITECH_G303_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP ("Logitech G403 HERO", DetectLogitechMouseG403, LOGITECH_VID, LOGITECH_G403_HERO_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP ("Logitech G Pro Gaming Mouse", DetectLogitechMouseGPRO, LOGITECH_VID, LOGITECH_G_PRO_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP ("Logitech G Pro HERO Gaming Mouse", DetectLogitechMouseGPRO, LOGITECH_VID, LOGITECH_G_PRO_HERO_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP ("Logitech G Pro HERO Gaming Mouse", DetectLogitechMouseGPRO, LOGITECH_VID, LOGITECH_G_PRO_HERO_PID, 1, 0xFF00);
/*-------------------------------------------------------------------------------------------------------------------------------------------------*\
| Speakers |
\*-------------------------------------------------------------------------------------------------------------------------------------------------*/
@@ -913,7 +913,6 @@ REGISTER_HID_DETECTOR_IPU("Logitech Powerplay Mat",
\*-------------------------------------------------------------------------------------------------------------------------------------------------*/
REGISTER_HID_DETECTOR_IPU("Logitech G502 Proteus Spectrum Gaming Mouse", DetectLogitechWired, LOGITECH_VID, LOGITECH_G502_PROTEUS_SPECTRUM_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G502 HERO Gaming Mouse", DetectLogitechWired, LOGITECH_VID, LOGITECH_G502_HERO_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G403 Prodigy Gaming Mouse", DetectLogitechWired, LOGITECH_VID, LOGITECH_G403_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G403 Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G403_LIGHTSPEED_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G502 Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G502_LIGHTSPEED_PID, 1, 0xFF00, 2);
@@ -921,7 +920,7 @@ REGISTER_HID_DETECTOR_IPU("Logitech G703 Wireless Gaming Mouse (wired)",
REGISTER_HID_DETECTOR_IPU("Logitech G703 HERO Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G703_HERO_LIGHTSPEED_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G900 Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G900_LIGHTSPEED_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G903 Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G903_LIGHTSPEED_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G903 HERO Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G903_LIGHTSPEED_HERO_PID, 1, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G903 HERO Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G903_LIGHTSPEED_HERO_PID, 2, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G Pro Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G_PRO_WIRELESS_PID, 2, 0xFF00, 2);
REGISTER_HID_DETECTOR_IPU("Logitech G633 Gaming Headset", DetectLogitechWired, LOGITECH_VID, LOGITECH_G633_PID, 3, 0xFF43, 514);
REGISTER_HID_DETECTOR_IPU("Logitech G635 Gaming Headset", DetectLogitechWired, LOGITECH_VID, LOGITECH_G635_PID, 3, 0xFF43, 514);
@@ -749,7 +749,7 @@ uint8_t logitech_device::setMode(uint8_t mode, uint16_t speed, uint8_t zone, uin
set_mode.init(
device_index,
RGB_feature_index,
(fp8070 ? LOGITECH_FP8070_SET_EFFECT : LOGITECH_FP8071_SET_LED_EFFECT)
(fp8070 ? (uint8_t)LOGITECH_FP8070_SET_EFFECT : (uint8_t)LOGITECH_FP8071_SET_LED_EFFECT)
);
set_mode.data[0] = zone;
set_mode.data[1] = mode;
@@ -867,7 +867,7 @@ uint8_t logitech_device::set8071Effects(uint8_t control)
return result;
}
uint8_t logitech_device::set8071TimeoutControl(uint8_t control)
uint8_t logitech_device::set8071TimeoutControl(uint8_t /*control*/)
{
int result = 0;
@@ -37,18 +37,18 @@ void DetectMSIGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const s
} /* DetectMSIGPUControllers() */
/*-----------------------------------------*\
| NVidia GPUs |
| Nvidia GPUs |
\*-----------------------------------------*/
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1070 Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070_DEV, MSI_SUB_VEN, MSI_GTX1070_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 Gaming X 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660_DEV, MSI_SUB_VEN, MSI_GTX1660_GAMING_X_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 Ti Gaming 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660TI_DEV, MSI_SUB_VEN, MSI_GTX1660TI_GAMING_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 Ti Gaming X 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660TI_DEV, MSI_SUB_VEN, MSI_GTX1660TI_GAMING_X_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 SUPER Gaming 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, MSI_SUB_VEN, MSI_GTX1660S_GAMING_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 SUPER Gaming X 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, MSI_SUB_VEN, MSI_GTX1660S_GAMING_X_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 Gaming Z 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, MSI_SUB_VEN, MSI_RTX2060_GAMING_Z_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 Gaming Z 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, MSI_SUB_VEN, MSI_RTX2060_GAMING_Z_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 Gaming Z 6G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, MSI_SUB_VEN, MSI_RTX2060_GAMING_Z_6G_SUB_DEV_2, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660_DEV, MSI_SUB_VEN, MSI_GTX1660_GAMING_X_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 Ti Gaming", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660TI_DEV, MSI_SUB_VEN, MSI_GTX1660TI_GAMING_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 Ti Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660TI_DEV, MSI_SUB_VEN, MSI_GTX1660TI_GAMING_X_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 SUPER Gaming", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, MSI_SUB_VEN, MSI_GTX1660S_GAMING_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce GTX 1660 SUPER Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, MSI_SUB_VEN, MSI_GTX1660S_GAMING_X_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 Gaming Z", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, MSI_SUB_VEN, MSI_RTX2060_GAMING_Z_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 Gaming Z", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, MSI_SUB_VEN, MSI_RTX2060_GAMING_Z_6G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 Gaming Z", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, MSI_SUB_VEN, MSI_RTX2060_GAMING_Z_6G_SUB_DEV_2, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 SUPER Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, MSI_SUB_VEN, MSI_RTX2060S_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2060 SUPER ARMOR OC", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, MSI_SUB_VEN, MSI_RTX2060S_ARMOR_OC_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2070 Gaming Z", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, MSI_SUB_VEN, MSI_RTX2070_GAMING_Z_SUB_DEV, 0x68);
@@ -65,56 +65,57 @@ REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Gaming Trio", Dete
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, MSI_SUB_VEN, MSI_RTX2080_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, MSI_SUB_VEN, MSI_RTX2080_GAMING_X_TRIO_SUB_DEV_2, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Sea Hawk EK X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, MSI_SUB_VEN, MSI_RTX2080_SEA_HAWK_EK_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Duke 8G OC", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, MSI_SUB_VEN, MSI_RTX2080_DUKE_OC_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Duke OC", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, MSI_SUB_VEN, MSI_RTX2080_DUKE_OC_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 SUPER Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, MSI_SUB_VEN, MSI_RTX2080S_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, MSI_SUB_VEN, MSI_RTX2080TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Ti Gaming Z Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, MSI_SUB_VEN, MSI_RTX2080TI_GAMING_Z_TRIO_SUB_DEV, 0X68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Ti 11G Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, MSI_SUB_VEN, MSI_RTX2080TI_11G_GAMING_X_TRIO_SUB_DEV,0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, MSI_SUB_VEN, MSI_RTX2080TI_11G_GAMING_X_TRIO_SUB_DEV,0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 2080 Ti Sea Hawk EK X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, MSI_SUB_VEN, MSI_RTX2080TI_SEA_HAWK_EK_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3050 Gaming X 8G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3050_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X 12G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_12G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X 12G LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_12G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X 12G (GA104)", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_12G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 12G Gaming X Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 12G Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 12G Gaming Z Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti 8GB Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, MSI_SUB_VEN, MSI_RTX3060TI_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti 8GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti 8GB Gaming X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, MSI_SUB_VEN, MSI_RTX3060TI_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti 8GB Gaming X Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti 8GB SUPER 3X OC", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_GDDR6X_DEV,MSI_SUB_VEN, MSI_RTX3060TI_SUPER_3X_OC_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti 8GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_GDDR6X_DEV,MSI_SUB_VEN, MSI_RTX3060TI_GAMING_X_TRIO_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Gaming Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Suprim", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Suprim LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Suprim X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 8GB Suprim X GODZILLA LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_X_GODZILLA_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Ti 8GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, MSI_SUB_VEN, MSI_RTX3070TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Ti Suprim X 8G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, MSI_SUB_VEN, MSI_RTX3070TI_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 10GB Gaming Z Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, MSI_SUB_VEN, MSI_RTX3080_GAMING_Z_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 10GB Gaming Z Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_GAMING_Z_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 10GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, MSI_SUB_VEN, MSI_RTX3080_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Suprim X 10G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, MSI_SUB_VEN, MSI_RTX3080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Suprim X 10G LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Suprim X 12G LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_12G_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3050 Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3050_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_12G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_12G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X (GA104)", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, MSI_SUB_VEN, MSI_RTX3060_GAMING_X_12G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Gaming Z Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti Gaming X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, MSI_SUB_VEN, MSI_RTX3060TI_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti Gaming X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, MSI_SUB_VEN, MSI_RTX3060TI_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti Gaming X Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti SUPER 3X OC", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_GDDR6X_DEV,MSI_SUB_VEN, MSI_RTX3060TI_SUPER_3X_OC_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3060 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_GDDR6X_DEV,MSI_SUB_VEN, MSI_RTX3060TI_GAMING_X_TRIO_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Gaming Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, MSI_SUB_VEN, MSI_RTX3070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Suprim", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Suprim LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Suprim X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Suprim X GODZILLA LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, MSI_SUB_VEN, MSI_RTX3070_SUPRIM_X_GODZILLA_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, MSI_SUB_VEN, MSI_RTX3070TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3070 Ti Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, MSI_SUB_VEN, MSI_RTX3070TI_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Gaming Z Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, MSI_SUB_VEN, MSI_RTX3080_GAMING_Z_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Gaming Z Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_GAMING_Z_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, MSI_SUB_VEN, MSI_RTX3080_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, MSI_SUB_VEN, MSI_RTX3080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Suprim X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 12GB Suprim X LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_12G_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 12GB Gaming Z Trio LHR", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_12G_LHR_DEV, MSI_SUB_VEN, MSI_RTX3080_12G_GAMING_Z_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Ti Gaming X Trio 12G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, MSI_SUB_VEN, MSI_RTX3080TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Ti Suprim X 12G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, MSI_SUB_VEN, MSI_RTX3080TI_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 24GB Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Suprim 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_SUPRIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Suprim X 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Ti Suprim X 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, MSI_SUB_VEN, MSI_RTX3090TI_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Ti Gaming X Trio 24G", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, MSI_SUB_VEN, MSI_RTX3090TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, MSI_SUB_VEN, MSI_RTX3080TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3080 Ti Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, MSI_SUB_VEN, MSI_RTX3080TI_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Suprim", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_SUPRIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, MSI_SUB_VEN, MSI_RTX3090_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Ti Suprim X", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, MSI_SUB_VEN, MSI_RTX3090TI_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 3090 Ti Gaming X Trio", DetectMSIGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, MSI_SUB_VEN, MSI_RTX3090TI_GAMING_X_TRIO_SUB_DEV, 0x68);
/*-----------------------------------------*\
| AMD GPUs |
\*-----------------------------------------*/
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6600 XT Gaming X", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI23_DEV, MSI_SUB_VEN, MSI_RX6600XT_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6650 XT Gaming X", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI23_DEV1, MSI_SUB_VEN, MSI_RX6650XT_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6700 XT Gaming X", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI22_DEV, MSI_SUB_VEN, MSI_RX6700XT_GAMING_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6750 XT Gaming X Trio 12G", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI22_DEV, MSI_SUB_VEN, MSI_RX6750XT_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6750 XT Gaming X Trio", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI22_DEV, MSI_SUB_VEN, MSI_RX6750XT_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6800 Gaming Z Trio v1", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, MSI_SUB_VEN, MSI_RX6800_GAMING_Z_TRIO_V1_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6800 Gaming X Trio", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, MSI_SUB_VEN, MSI_RX6800_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI Radeon RX 6800 XT Gaming X Trio", DetectMSIGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, MSI_SUB_VEN, MSI_RX6800XT_GAMING_X_TRIO_SUB_DEV, 0x68);
@@ -39,31 +39,32 @@ void DetectMSIGPUv2Controllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const
} /* DetectMSIGPUv2Controllers() */
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 8GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060_DEV, MSI_SUB_VEN, MSI_RTX4060_GAMING_X_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 Ti 8GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060_DEV, MSI_SUB_VEN, MSI_RTX4060_GAMING_X_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 Ti Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_8G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 Ti 16GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_16G_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_16G_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 Ti 16GB Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_16G_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_16G_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 12GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 SUPER 12GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 SUPER 12GB Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti 12GB Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti 12GB Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti 12GB Suprim X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_SUPRIM_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER 16GB Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER 16GB Gaming Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TIS_GAMING_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER 16GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TIS_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER 16GB Gaming White X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TIS_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER 16GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER 16GB Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER 16GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER 16GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Suprim Liquid X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_LIQUID_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 SUPER Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 SUPER Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, MSI_SUB_VEN, MSI_RTX4070S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti Suprim X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_SUPRIM_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER Gaming Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TIS_GAMING_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TIS_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 Ti SUPER Gaming White X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TIS_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER Gaming X Slim White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_SLIM_WHITE_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 SUPER Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, MSI_SUB_VEN, MSI_RTX4080S_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_TRIO_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_SLIM_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 Suprim Liquid X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_LIQUID_X_SUB_DEV, 0x68);
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_X_SUB_DEV, 0x68);
@@ -147,23 +147,37 @@ void RGBController_MSIMysticLight185::SetupZones()
zone new_zone;
new_zone.name = zd->name;
new_zone.flags = 0;
int maxLeds = (int)controller->GetMaxDirectLeds(zd->zone_type);
/*-------------------------------------------------*\
| This is a fixed size zone |
| Either this is a board which only supports zone |
| control or this is not an ARGB header zone |
\*-------------------------------------------------*/
if((controller->GetSupportedDirectMode() == MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED)
|| ((zd->zone_type != MSI_ZONE_J_RAINBOW_1) && (zd->zone_type != MSI_ZONE_J_RAINBOW_2) && (zd->zone_type != MSI_ZONE_J_RAINBOW_3) && (zd->zone_type != MSI_ZONE_J_CORSAIR)))
if(((zd->zone_type != MSI_ZONE_J_RAINBOW_1)
&& (zd->zone_type != MSI_ZONE_J_RAINBOW_2)
&& (zd->zone_type != MSI_ZONE_J_RAINBOW_3)
&& (zd->zone_type != MSI_ZONE_J_CORSAIR)))
{
new_zone.leds_min = maxLeds;
new_zone.leds_max = maxLeds;
new_zone.leds_count = maxLeds;
}
/*--------------------------------------------------\
| This is a resizable zone on a per-LED board |
| This is a resizable zone on a board that does not |
| support per-LED direct mode |
\*-------------------------------------------------*/
else if(controller->GetSupportedDirectMode() == MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED)
{
new_zone.leds_min = 0;
new_zone.leds_max = 30;//maxLeds;
new_zone.leds_count = 0;
last_resizable_zone = zd->zone_type;
new_zone.flags |= ZONE_FLAG_RESIZE_EFFECTS_ONLY;
}
/*--------------------------------------------------\
| This is a resizable zone on a board that does |
| support per-LED direct mode |
\*-------------------------------------------------*/
else
{
@@ -176,7 +190,7 @@ void RGBController_MSIMysticLight185::SetupZones()
/*-------------------------------------------------*\
| Determine zone type based on max number of LEDs |
\*-------------------------------------------------*/
if(new_zone.leds_max == 1)
if((new_zone.leds_max == 1) || (new_zone.flags & ZONE_FLAG_RESIZE_EFFECTS_ONLY))
{
new_zone.type = ZONE_TYPE_SINGLE;
}
@@ -199,16 +213,28 @@ void RGBController_MSIMysticLight185::SetupZones()
{
controller->SetCycleCount(zone_description[zone_idx]->zone_type, zones[zone_idx].leds_count);
for(std::size_t led_idx = 0; led_idx < zones[zone_idx].leds_count; ++led_idx)
if((zones[zone_idx].flags & ZONE_FLAG_RESIZE_EFFECTS_ONLY) == 0)
{
for(std::size_t led_idx = 0; led_idx < zones[zone_idx].leds_count; ++led_idx)
{
led new_led;
new_led.name = zones[zone_idx].name;
if(zones[zone_idx].leds_count > 1)
{
new_led.name.append(" LED " + std::to_string(led_idx + 1));
}
new_led.value = zone_description[zone_idx]->zone_type;
leds.push_back(new_led);
}
}
else if(zones[zone_idx].leds_count > 0)
{
led new_led;
new_led.name = zones[zone_idx].name + " LED ";
if(zones[zone_idx].leds_count > 1)
{
new_led.name.append(std::to_string(led_idx + 1));
}
new_led.name = zones[zone_idx].name;
new_led.value = zone_description[zone_idx]->zone_type;
leds.push_back(new_led);
@@ -34,22 +34,26 @@ layout_values mintaka_offset_values =
},
{
{ KEYBOARD_LAYOUT_ISO_QWERTY, {
{ 0, 1, 11, 0, KEY_EN_QUOTE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 12, 0, KEY_ES_OPEN_QUESTION_MARK, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 1, 11, 0, KEY_EN_QUOTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 12, 0, KEY_ES_OPEN_QUESTION_MARK, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_ES_TILDE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_EN_PLUS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_ES_TILDE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_EN_PLUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 10, 0, KEY_ES_ENIE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_EN_LEFT_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 12, 0, KEY_EN_RIGHT_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 10, 0, KEY_ES_ENIE, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_EN_LEFT_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 12, 0, KEY_EN_RIGHT_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 11, 0, KEY_NORD_HYPHEN, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 11, 0, KEY_NORD_HYPHEN, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 11, 0, KEY_EN_MENU, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 12, 0, KEY_EN_RIGHT_CONTROL, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 13, 0, KEY_EN_RIGHT_FUNCTION, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 11, 0, KEY_EN_MENU, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 12, 0, KEY_EN_RIGHT_CONTROL, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 5, 13, 0, KEY_EN_RIGHT_FUNCTION, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
}}
}
};
@@ -42,6 +42,7 @@ typedef struct
static const nv_gpu_pci_device device_list[] =
{
{NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "Palit GeForce RTX 2060" },
{NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, NVIDIA_VEN, NVIDIA_RTX2060_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 2060 FE" },
{NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, NVIDIA_VEN, NVIDIA_RTX2060S_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 2060 SUPER FE" },
{NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, NVIDIA_VEN, NVIDIA_RTX2070_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 2070 FE" },
@@ -49,11 +50,13 @@ static const nv_gpu_pci_device device_list[] =
{NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, NVIDIA_VEN, NVIDIA_RTX2080_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 2080 FE" },
{NVIDIA_VEN, NVIDIA_RTX2080S_DEV, NVIDIA_VEN, NVIDIA_RTX2080S_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 2080 SUPER FE" },
{NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, NVIDIA_VEN, NVIDIA_RTX2080TI_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 2080 Ti FE" },
{NVIDIA_VEN, NVIDIA_TITANRTX_DEV, NVIDIA_VEN, NVIDIA_TITANRTX_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA TITAN RTX" },
{NVIDIA_VEN, NVIDIA_RTX3050_DEV, NVIDIA_VEN, GAINWARD_RTX3050_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Gainward GeForce RTX 3050 LHR" },
{NVIDIA_VEN, NVIDIA_RTX3060_8G_DEV, NVIDIA_VEN, NVIDIA_RTX3060_8G_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Gainward GeForce RTX 3060 Pegasus" },
{NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Palit GeForce RTX 3060 LHR" },
{NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, PNY_SUB_VEN, PNY_RTX_3060_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 XLR8 REVEL EPIC-X" },
{NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, PNY_SUB_VEN, PNY_RTX_3060_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 XLR8 REVEL EPIC-X" },
{NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Palit GeForce RTX 3060 LHR (GA104)" },
{NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Palit GeForce RTX 3060 LHR" },
{NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, PNY_SUB_VEN, PNY_RTX_3060TI_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 Ti XLR8 REVEL EPIC-X" },
{NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, NVIDIA_VEN, PNY_RTX_3060TI_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 Ti XLR8 REVEL EPIC-X" },
{NVIDIA_VEN, NVIDIA_RTX3060TI_V1_LHR_DEV, NVIDIA_VEN, NVIDIA_RTX3060TI_V1_LHR_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "NVIDIA GeForce RTX 3060 Ti V1 LHR" },
@@ -73,6 +76,7 @@ static const nv_gpu_pci_device device_list[] =
{NVIDIA_VEN, NVIDIA_RTX4080S_DEV, NVIDIA_VEN, NVIDIA_RTX4080S_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 4080 SUPER FE" },
{NVIDIA_VEN, NVIDIA_RTX4090_DEV, NVIDIA_VEN, NVIDIA_RTX4090_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 4090 FE" },
{NVIDIA_VEN, NVIDIA_RTX4090_DEV, NVIDIA_VEN, NVIDIA_RTX4090_FE_SUB_DEV2, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 4090 FE" },
{NVIDIA_VEN, NVIDIA_RTX5090_DEV, NVIDIA_VEN, NVIDIA_RTX5090_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA GeForce RTX 5090 FE" },
};
void DetectNVIDIAIllumGPUs()
@@ -105,7 +109,7 @@ void DetectNVIDIAIllumGPUs()
pci_subsystem_vendor == device_list[dev_idx].pci_subsystem_vendor &&
pci_subsystem_device == device_list[dev_idx].pci_subsystem_device)
{
LOG_DEBUG("[%s] NVidia NvAPI Illumination GPU found", device_list[dev_idx].name);
LOG_DEBUG("[%s] Nvidia NvAPI Illumination GPU found", device_list[dev_idx].name);
switch(device_list[dev_idx].gpu_rgb_version)
{
case NVIDIA_ILLUMINATION_V1:
@@ -125,4 +129,4 @@ void DetectNVIDIAIllumGPUs()
}
}
REGISTER_DETECTOR("NVidia NvAPI Illumination", DetectNVIDIAIllumGPUs);
REGISTER_DETECTOR("Nvidia NvAPI Illumination", DetectNVIDIAIllumGPUs);
@@ -228,6 +228,14 @@ void NZXTHue2Controller::UpdateDeviceList()
num_leds_in_device = 8;
break;
case 0x1D: //F360 RGB Core Fan Case Version (360mm)
num_leds_in_device = 24;
break;
case 0x1E: //Kraken Elite Ring
num_leds_in_device = 24;
break;
default:
break;
}
@@ -14,25 +14,26 @@
#include "NZXTHue2Controller.h"
#include "RGBController_NZXTHue2.h"
#define NZXT_VID 0x1E71
#define NZXT_HUE_2_PID 0x2001
#define NZXT_HUE_2_AMBIENT_PID 0x2002
#define NZXT_MOTHERBOARD_DEVICE_PID 0x2005
#define NZXT_MOTHERBOARD_DEVICE_2_PID 0x200B
#define NZXT_SMART_DEVICE_V2_PID 0x2006
#define NZXT_KRAKEN_X3_SERIES_PID 0x2007
#define NZXT_KRAKEN_X3_SERIES_RGB_PID 0x2014
#define NZXT_RGB_FAN_CONTROLLER_PID 0x2009
#define NZXT_RGB_FAN_CONTROLLER2_PID 0x2010
#define NZXT_RGB_FAN_CONTROLLER3_PID 0x200E
#define NZXT_RGB_FAN_CONTROLLER4_PID 0x2011
#define NZXT_RGB_FAN_CONTROLLER5_PID 0x2019
#define NZXT_RGB_FAN_CONTROLLER6_PID 0x2020
#define NZXT_RGB_FAN_CONTROLLER7_PID 0x201F
#define NZXT_RGB_CONTROLLER_1_PID 0x2012
#define NZXT_RGB_CONTROLLER_2_PID 0x2021
#define NZXT_SMART_DEVICE_V2_1_PID 0x200D
#define NZXT_SMART_DEVICE_V2_2_PID 0x200F
#define NZXT_VID 0x1E71
#define NZXT_HUE_2_PID 0x2001
#define NZXT_HUE_2_AMBIENT_PID 0x2002
#define NZXT_MOTHERBOARD_DEVICE_PID 0x2005
#define NZXT_MOTHERBOARD_DEVICE_2_PID 0x200B
#define NZXT_SMART_DEVICE_V2_PID 0x2006
#define NZXT_KRAKEN_X3_SERIES_PID 0x2007
#define NZXT_KRAKEN_X3_SERIES_RGB_PID 0x2014
#define NZXT_KRAKEN_2024_ELITE_SERIES_RGB_PID 0x3012
#define NZXT_RGB_FAN_CONTROLLER_PID 0x2009
#define NZXT_RGB_FAN_CONTROLLER2_PID 0x2010
#define NZXT_RGB_FAN_CONTROLLER3_PID 0x200E
#define NZXT_RGB_FAN_CONTROLLER4_PID 0x2011
#define NZXT_RGB_FAN_CONTROLLER5_PID 0x2019
#define NZXT_RGB_FAN_CONTROLLER6_PID 0x2020
#define NZXT_RGB_FAN_CONTROLLER7_PID 0x201F
#define NZXT_RGB_CONTROLLER_1_PID 0x2012
#define NZXT_RGB_CONTROLLER_2_PID 0x2021
#define NZXT_SMART_DEVICE_V2_1_PID 0x200D
#define NZXT_SMART_DEVICE_V2_2_PID 0x200F
static void spawn_hue(hid_device_info* info, const std::string& name, int rgb_channels, int fan_channels)
{
@@ -73,6 +74,11 @@ void DetectNZXTKrakenX3(hid_device_info* info, const std::string& name)
spawn_hue(info, name, 3, 0);
}
void DetectNZXTKrakenElite(hid_device_info* info, const std::string& name)
{
spawn_hue(info, name, 2, 2);
}
void DetectNZXTFanController(hid_device_info* info, const std::string& name)
{
spawn_hue(info, name, 2, 3);
@@ -88,21 +94,22 @@ void DetectNZXTRGBController(hid_device_info* info, const std::string& name)
spawn_hue(info, name, 3, 0);
}
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER2_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER3_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER4_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER5_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER6_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER7_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2", DetectNZXTHue2, NZXT_VID, NZXT_HUE_2_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2 Ambient", DetectNZXTHue2Ambient, NZXT_VID, NZXT_HUE_2_AMBIENT_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_2_PID);
REGISTER_HID_DETECTOR("NZXT Kraken X3 Series", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X3_SERIES_PID);
REGISTER_HID_DETECTOR("NZXT Kraken X3 Series RGB", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X3_SERIES_RGB_PID);
REGISTER_HID_DETECTOR("NZXT RGB Controller", DetectNZXTRGBController, NZXT_VID, NZXT_RGB_CONTROLLER_1_PID);
REGISTER_HID_DETECTOR("NZXT RGB Controller", DetectNZXTRGBController, NZXT_VID, NZXT_RGB_CONTROLLER_2_PID);
REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_PID);
REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_1_PID);
REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_2_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER2_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController, NZXT_VID, NZXT_RGB_FAN_CONTROLLER3_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER4_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER5_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER6_PID);
REGISTER_HID_DETECTOR("NZXT RGB & Fan Controller", DetectNZXTFanController6Channel, NZXT_VID, NZXT_RGB_FAN_CONTROLLER7_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2", DetectNZXTHue2, NZXT_VID, NZXT_HUE_2_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2 Ambient", DetectNZXTHue2Ambient, NZXT_VID, NZXT_HUE_2_AMBIENT_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_PID);
REGISTER_HID_DETECTOR("NZXT Hue 2 Motherboard", DetectNZXTHue2Motherboard, NZXT_VID, NZXT_MOTHERBOARD_DEVICE_2_PID);
REGISTER_HID_DETECTOR("NZXT Kraken X3 Series", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X3_SERIES_PID);
REGISTER_HID_DETECTOR("NZXT Kraken X3 Series RGB", DetectNZXTKrakenX3, NZXT_VID, NZXT_KRAKEN_X3_SERIES_RGB_PID);
REGISTER_HID_DETECTOR("NZXT Kraken 2024 ELITE Series RGB", DetectNZXTKrakenElite, NZXT_VID, NZXT_KRAKEN_2024_ELITE_SERIES_RGB_PID);
REGISTER_HID_DETECTOR("NZXT RGB Controller", DetectNZXTRGBController, NZXT_VID, NZXT_RGB_CONTROLLER_1_PID);
REGISTER_HID_DETECTOR("NZXT RGB Controller", DetectNZXTRGBController, NZXT_VID, NZXT_RGB_CONTROLLER_2_PID);
REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_PID);
REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_1_PID);
REGISTER_HID_DETECTOR("NZXT Smart Device V2", DetectNZXTSmartDeviceV2, NZXT_VID, NZXT_SMART_DEVICE_V2_2_PID);
@@ -332,6 +332,14 @@ void RGBController_NZXTHue2::SetupZones()
device_name = "F120 Core fan case version (120mm)";
break;
case 0x1D: //F360 Core fan case version (360mm)
device_name = "F360 Core fan case version (360mm)";
break;
case 0x1E: //Kraken Elite Ring
device_name = "Kraken Elite Ring";
break;
default:
break;
}
@@ -12,7 +12,7 @@
#include "RGBController_Nanoleaf.h"
#include "ResourceManager.h"
#include "LogManager.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
using json = nlohmann::json;
@@ -14,7 +14,7 @@
#include "RGBController_NvidiaESA.h"
/**------------------------------------------------------------------*\
@name NVidia ESA
@name Nvidia ESA
@category Case
@type USB
@save :x:
@@ -41,34 +41,38 @@ void DetectPNYGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const s
ResourceManager::get()->RegisterRGBController(rgb_controller);
} /* DetectPNYGPUControllers() */
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 2060 XLR8 OC EDITION", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, PNY_SUB_VEN, PNY_RTX_2060_XLR8_OC_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 3060 XLR8 Revel EPIC-X", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, PNY_SUB_VEN, PNY_RTX_3060_XLR8_REVEL_EPIC_X_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 3070 XLR8 Revel EPIC-X", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, PNY_SUB_VEN, PNY_RTX_3070_XLR8_REVEL_EPIC_X_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 3070 XLR8 Revel EPIC-X LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, PNY_SUB_VEN, PNY_RTX_3070_XLR8_REVEL_EPIC_X_LHR_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 3080 XLR8 Revel EPIC-X", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, PNY_SUB_VEN, PNY_RTX_3080_XLR8_REVEL_EPIC_X_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 3080 Ti XLR8 Revel EPIC-X", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, PNY_SUB_VEN, PNY_RTX_3080TI_XLR8_REVEL_EPIC_X_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 3090 XLR8 Revel EPIC-X", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, PNY_SUB_VEN, PNY_RTX_3090_XLR8_REVEL_EPIC_X_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("PNY GeForce RTX 2060 XLR8 OC EDITION", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, PNY_SUB_VEN, PNY_RTX_2060_XLR8_OC_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 2070 SUPER Jetstream", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, NVIDIA_SUB_VEN, NVIDIA_RTX2070S_OC_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3060", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, PALIT_SUB_VEN, PALIT_RTX3060_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3060 LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3060_LHR_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3060 Ti", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, PALIT_SUB_VEN, PALIT_RTX3060TI_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3060 Ti LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, PALIT_SUB_VEN, NVIDIA_RTX3060TI_LHR_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3060 Ti Dual", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, NVIDIA_SUB_VEN, PALIT_RTX3060TI_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3070", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, PALIT_SUB_VEN, PALIT_RTX3070_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3070 LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3070_LHR_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3070 Ti GamingPro", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, PALIT_SUB_VEN, PALIT_RTX3070TI_GAMING_PRO_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3070 Gamerock LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3070_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3070 Ti", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, PALIT_SUB_VEN, PALIT_RTX3070TI_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3070 Ti GamingPro", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, PALIT_SUB_VEN, PALIT_RTX3070TI_GAMING_PRO_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, PALIT_SUB_VEN, PALIT_RTX3080_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3080_LHR_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 Gamerock", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, PALIT_SUB_VEN, PALIT_RTX3080_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 Gamerock LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3080_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 LHR", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3080_LHR_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 GamingPro 12G", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_12G_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3080_GAMINGPRO_12G_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 12GB GamingPro", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_12G_LHR_DEV, PALIT_SUB_VEN, PALIT_RTX3080_GAMINGPRO_12G_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 Ti", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, PALIT_SUB_VEN, PALIT_RTX3080TI_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3080 Ti Gamerock", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, PALIT_SUB_VEN, PALIT_RTX3080TI_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3090", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, PALIT_SUB_VEN, PALIT_RTX3090_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3090 Gamerock", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, PALIT_SUB_VEN, PALIT_RTX3090_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 3060 Ti Dual", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, NVIDIA_SUB_VEN, PALIT_RTX3060TI_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 4070 Ti", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, PALIT_SUB_VEN, PALIT_RTX4070TI_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 4070 Ti Gamerock", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, PALIT_SUB_VEN, PALIT_RTX4070TI_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 4070 Ti SUPER GamingPro", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, PALIT_SUB_VEN, PALIT_RTX4080_GAMINGPRO_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 4080 GamingPro", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, PALIT_SUB_VEN, PALIT_RTX4080_GAMINGPRO_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 4080 SUPER GamingPro", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080S_DEV, PALIT_SUB_VEN, PALIT_RTX4080_GAMINGPRO_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("Palit GeForce RTX 4090 Gamerock", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, PALIT_SUB_VEN, PALIT_RTX4090_GAMEROCK_SUB_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("NVIDIA GeForce RTX 2080 SUPER", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, NVIDIA_SUB_VEN, NVIDIA_RTX2080S_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("NVIDIA GeForce RTX 2060 SUPER", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, NVIDIA_SUB_VEN, NVIDIA_RTX2060_TU106_DEV, 0x49);
REGISTER_I2C_PCI_DETECTOR("NVIDIA GeForce RTX 2080 SUPER", DetectPNYGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, NVIDIA_SUB_VEN, NVIDIA_RTX2080S_DEV, 0x49);
@@ -24,7 +24,7 @@
#include "PhilipsHueEntertainmentController.h"
#include "RGBController_PhilipsHue.h"
#include "RGBController_PhilipsHueEntertainment.h"
#include "SettingsManager.h"
#include "PhilipsHueSettingsHandler.h"
/******************************************************************************************\
* *
@@ -36,7 +36,7 @@
void DetectPhilipsHueControllers()
{
json hue_settings;
PhilipsHueSettingsHandler hue_settings;
/*-------------------------------------------------*\
| Create an HTTP handler |
@@ -47,11 +47,6 @@ void DetectPhilipsHueControllers()
using SystemHttpHandler = hueplusplus::LinHttpHandler;
#endif
/*-------------------------------------------------*\
| Get Philips Hue settings from settings manager |
\*-------------------------------------------------*/
hue_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("PhilipsHueDevices");
/*-------------------------------------------------*\
| Create a finder and find bridges |
\*-------------------------------------------------*/
@@ -62,24 +57,14 @@ void DetectPhilipsHueControllers()
| If no bridges were detected, manually add bridge |
| IP and MAC (need to get these from file) |
\*-------------------------------------------------*/
if(bridges.empty())
if(hue_settings.GetBridgeCount() > 0)
{
if(hue_settings.contains("bridges"))
{
hueplusplus::BridgeFinder::BridgeIdentification ident;
hueplusplus::BridgeFinder::BridgeIdentification ident;
if(hue_settings["bridges"][0].contains("ip"))
{
ident.ip = hue_settings["bridges"][0]["ip"];
}
ident.ip = hue_settings.GetBridgeIP(0);
ident.mac = hue_settings.GetBridgeMAC(0);
if(hue_settings["bridges"][0].contains("mac"))
{
ident.mac = hue_settings["bridges"][0]["mac"];
}
bridges.push_back(ident);
}
bridges.push_back(ident);
}
/*-------------------------------------------------*\
@@ -95,22 +80,22 @@ void DetectPhilipsHueControllers()
/*-------------------------------------------------*\
| Check if a saved username exists |
\*-------------------------------------------------*/
if(hue_settings.contains("bridges"))
if(hue_settings.GetBridgeCount() > 0)
{
/*-------------------------------------------------*\
| Add the username if it exists |
\*-------------------------------------------------*/
if(hue_settings["bridges"][0].contains("username"))
if(hue_settings.BridgeHasUsername(0))
{
finder.addUsername(bridges[0].mac, hue_settings["bridges"][0]["username"]);
finder.addUsername(bridges[0].mac, hue_settings.GetBridgeUsername(0));
}
/*-------------------------------------------------*\
| Add the client key if it exists |
\*-------------------------------------------------*/
if(hue_settings["bridges"][0].contains("clientkey"))
if(hue_settings.BridgeHasClientKey(0))
{
finder.addClientKey(bridges[0].mac, hue_settings["bridges"][0]["clientkey"]);
finder.addClientKey(bridges[0].mac, hue_settings.GetBridgeClientKey(0));
}
}
@@ -134,11 +119,11 @@ void DetectPhilipsHueControllers()
bool use_entertainment = false;
bool auto_connect = false;
if(hue_settings.contains("bridges"))
if(hue_settings.GetBridgeCount() > 0)
{
if(hue_settings["bridges"][0].contains("username"))
if(hue_settings.BridgeHasUsername(0))
{
if(hue_settings["bridges"][0]["username"] != bridge.getUsername())
if(hue_settings.GetBridgeUsername(0) != bridge.getUsername())
{
save_settings = true;
}
@@ -148,9 +133,9 @@ void DetectPhilipsHueControllers()
save_settings = true;
}
if(hue_settings["bridges"][0].contains("clientkey"))
if(hue_settings.BridgeHasClientKey(0))
{
if(hue_settings["bridges"][0]["clientkey"] != bridge.getClientKey())
if(hue_settings.GetBridgeClientKey(0) != bridge.getClientKey())
{
use_entertainment = true;
save_settings = true;
@@ -167,28 +152,18 @@ void DetectPhilipsHueControllers()
\*-------------------------------------------------*/
if(save_settings)
{
hue_settings["bridges"][0]["username"] = bridge.getUsername();
hue_settings["bridges"][0]["clientkey"] = bridge.getClientKey();
hue_settings["bridges"][0]["entertainment"] = use_entertainment;
hue_settings["bridges"][0]["autoconnect"] = auto_connect;
ResourceManager::get()->GetSettingsManager()->SetSettings("PhilipsHueDevices", hue_settings);
ResourceManager::get()->GetSettingsManager()->SaveSettings();
hue_settings.SetBridgeUsername(0, bridge.getUsername());
hue_settings.SetBridgeClientKey(0, bridge.getClientKey());
hue_settings.SetBridgeUseEntertainment(0, use_entertainment);
hue_settings.SetBridgeAutoconnect(0, auto_connect);
hue_settings.SaveSettings();
}
/*-------------------------------------------------*\
| Get entertainment mode settings |
| Get entertainment mode settings |
\*-------------------------------------------------*/
if(hue_settings["bridges"][0].contains("entertainment"))
{
use_entertainment = hue_settings["bridges"][0]["entertainment"];
}
if(hue_settings["bridges"][0].contains("autoconnect"))
{
auto_connect = hue_settings["bridges"][0]["autoconnect"];
}
use_entertainment = hue_settings.GetBridgeUseEntertainment(0);
auto_connect = hue_settings.GetBridgeAutoconnect(0);
/*-------------------------------------------------*\
| Get all groups from the bridge |
@@ -0,0 +1,151 @@
#include "PhilipsHueSettingsHandler.h"
#include "ResourceManager.h"
#include "SettingsManager.h"
#define HUE_SETTINGS ((hue_settings_type *)hue_settings)->hue_settings
typedef struct
{
json hue_settings;
} hue_settings_type;
PhilipsHueSettingsHandler::PhilipsHueSettingsHandler()
{
/*-------------------------------------------------*\
| Create an object to hold the hue settings json |
| This cannot be a class member as json must not |
| be included in the header file, so it is held as |
| a void pointer instead. |
\*-------------------------------------------------*/
hue_settings = (void *)(new hue_settings_type);
/*-------------------------------------------------*\
| Get Philips Hue settings from settings manager |
\*-------------------------------------------------*/
HUE_SETTINGS = ResourceManager::get()->GetSettingsManager()->GetSettings("PhilipsHueDevices");
}
PhilipsHueSettingsHandler::~PhilipsHueSettingsHandler()
{
delete (hue_settings_type *)hue_settings;
}
std::size_t PhilipsHueSettingsHandler::GetBridgeCount()
{
if(HUE_SETTINGS.contains("bridges"))
{
return(HUE_SETTINGS["bridges"].size());
}
else
{
return(0);
}
}
std::string PhilipsHueSettingsHandler::GetBridgeIP(unsigned int bridge_idx)
{
if(HUE_SETTINGS["bridges"][bridge_idx].contains("ip"))
{
return(HUE_SETTINGS["bridges"][bridge_idx]["ip"]);
}
else
{
return("");
}
}
std::string PhilipsHueSettingsHandler::GetBridgeMAC(unsigned int bridge_idx)
{
if(HUE_SETTINGS["bridges"][bridge_idx].contains("mac"))
{
return(HUE_SETTINGS["bridges"][bridge_idx]["mac"]);
}
else
{
return("");
}
}
std::string PhilipsHueSettingsHandler::GetBridgeUsername(unsigned int bridge_idx)
{
if(HUE_SETTINGS["bridges"][bridge_idx].contains("username"))
{
return(HUE_SETTINGS["bridges"][bridge_idx]["username"]);
}
else
{
return("");
}
}
std::string PhilipsHueSettingsHandler::GetBridgeClientKey(unsigned int bridge_idx)
{
if(HUE_SETTINGS["bridges"][bridge_idx].contains("clientkey"))
{
return(HUE_SETTINGS["bridges"][bridge_idx]["clientkey"]);
}
else
{
return("");
}
}
bool PhilipsHueSettingsHandler::GetBridgeAutoconnect(unsigned int bridge_idx)
{
if(HUE_SETTINGS["bridges"][bridge_idx].contains("autoconnect"))
{
return(HUE_SETTINGS["bridges"][bridge_idx]["autoconnect"]);
}
else
{
return(false);
}
}
bool PhilipsHueSettingsHandler::GetBridgeUseEntertainment(unsigned int bridge_idx)
{
if(HUE_SETTINGS["bridges"][bridge_idx].contains("entertainment"))
{
return(HUE_SETTINGS["bridges"][bridge_idx]["entertainment"]);
}
else
{
return(false);
}
}
bool PhilipsHueSettingsHandler::BridgeHasUsername(unsigned int bridge_idx)
{
return(HUE_SETTINGS["bridges"][bridge_idx].contains("username"));
}
bool PhilipsHueSettingsHandler::BridgeHasClientKey(unsigned int bridge_idx)
{
return(HUE_SETTINGS["bridges"][bridge_idx].contains("clientkey"));
}
void PhilipsHueSettingsHandler::SetBridgeUsername(unsigned int bridge_idx, std::string username)
{
HUE_SETTINGS["bridges"][bridge_idx]["username"] = username;
}
void PhilipsHueSettingsHandler::SetBridgeClientKey(unsigned int bridge_idx, std::string clientkey)
{
HUE_SETTINGS["bridges"][bridge_idx]["clientkey"] = clientkey;
}
void PhilipsHueSettingsHandler::SetBridgeAutoconnect(unsigned int bridge_idx, bool auto_connect)
{
HUE_SETTINGS["bridges"][bridge_idx]["autoconnect"] = auto_connect;
}
void PhilipsHueSettingsHandler::SetBridgeUseEntertainment(unsigned int bridge_idx, bool use_entertainment)
{
HUE_SETTINGS["bridges"][bridge_idx]["entertainment"] = use_entertainment;
}
void PhilipsHueSettingsHandler::SaveSettings()
{
ResourceManager::get()->GetSettingsManager()->SetSettings("PhilipsHueDevices", HUE_SETTINGS);
ResourceManager::get()->GetSettingsManager()->SaveSettings();
}
@@ -0,0 +1,47 @@
/*---------------------------------------------------------*\
| PhilipsHueSettingsHandler.h |
| |
| Settings Handler for Philips Hue |
| Due to conflict in jsoh.hpp library, hueplusplus and |
| SettingsManager should not be included in the same file |
| so handle settings in a separate class. |
| |
| Adam Honse ([email protected]) 17 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <cstddef>
#include <string>
class PhilipsHueSettingsHandler
{
public:
PhilipsHueSettingsHandler();
~PhilipsHueSettingsHandler();
std::size_t GetBridgeCount();
std::string GetBridgeIP(unsigned int bridge_idx);
std::string GetBridgeMAC(unsigned int bridge_idx);
std::string GetBridgeUsername(unsigned int bridge_idx);
std::string GetBridgeClientKey(unsigned int bridge_idx);
bool GetBridgeAutoconnect(unsigned int bridge_idx);
bool GetBridgeUseEntertainment(unsigned int bridge_idx);
bool BridgeHasUsername(unsigned int bridge_idx);
bool BridgeHasClientKey(unsigned int bridge_idx);
void SetBridgeUsername(unsigned int bridge_idx, std::string username);
void SetBridgeClientKey(unsigned int bridge_idx, std::string clientkey);
void SetBridgeAutoconnect(unsigned int bridge_ip, bool auto_connect);
void SetBridgeUseEntertainment(unsigned int bridge_idx, bool use_entertainment);
void SaveSettings();
private:
void * hue_settings;
};
@@ -10,7 +10,7 @@
\*---------------------------------------------------------*/
#include "PhilipsWizController.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
using json = nlohmann::json;
using namespace std::chrono_literals;
@@ -130,7 +130,7 @@ void PhilipsWizController::SetColor(unsigned char red, unsigned char green, unsi
command["params"]["w"] = 0;
}
/*-----------------------------------------------------------------*\
| Fill in the setPilot command with RGB and brightness information. |
| The bulb will not respond to 0, 0, 0, so if all channels are zero,|
@@ -173,7 +173,7 @@ void PhilipsWizController::SetScene(int scene, unsigned char brightness)
void PhilipsWizController::ReceiveThreadFunction()
{
char recv_buf[1024];
char recv_buf[1025];
while(ReceiveThreadRun.load())
{
@@ -154,6 +154,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
case RAZER_HUNTSMAN_V2_ANALOG_PID:
case RAZER_HUNTSMAN_V2_TKL_PID:
case RAZER_HUNTSMAN_V2_PID:
case RAZER_HUNTSMAN_V3_PRO_PID:
case RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID:
case RAZER_ORNATA_CHROMA_PID:
case RAZER_ORNATA_CHROMA_V2_PID:
@@ -446,6 +447,7 @@ bool RazerController::SupportsWave()
case RAZER_HUNTSMAN_V2_ANALOG_PID:
case RAZER_HUNTSMAN_V2_TKL_PID:
case RAZER_HUNTSMAN_V2_PID:
case RAZER_HUNTSMAN_V3_PRO_PID:
case RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID:
case RAZER_ORBWEAVER_CHROMA_PID:
case RAZER_TARTARUS_PRO_PID:
@@ -189,6 +189,7 @@ REGISTER_HID_DETECTOR_IPU("Razer Huntsman Tournament Edition", Det
REGISTER_HID_DETECTOR_IPU("Razer Huntsman V2 Analog", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V2_ANALOG_PID, 0x03, 0x0C, 0x01);
REGISTER_HID_DETECTOR_IPU("Razer Huntsman V2 TKL", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V2_TKL_PID, 0x03, 0x0C, 0x01);
REGISTER_HID_DETECTOR_IPU("Razer Huntsman V2", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V2_PID, 0x03, 0x0C, 0x01);
REGISTER_HID_DETECTOR_IPU("Razer Huntsman V3 Pro", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V3_PRO_PID, 0x03, 0x0C, 0x01);
REGISTER_HID_DETECTOR_IPU("Razer Huntsman V3 Pro TKL White", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID, 0x03, 0x0C, 0x01);
REGISTER_HID_DETECTOR_IPU("Razer Ornata Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_CHROMA_PID, 0x02, 0x01, 0x02);
REGISTER_HID_DETECTOR_IPU("Razer Ornata Chroma V2", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_CHROMA_V2_PID, 0x02, 0x01, 0x02);
File diff suppressed because it is too large Load Diff
@@ -114,6 +114,7 @@
#define RAZER_HUNTSMAN_V2_ANALOG_PID 0x0266
#define RAZER_HUNTSMAN_V2_TKL_PID 0x026B
#define RAZER_HUNTSMAN_V2_PID 0x026C
#define RAZER_HUNTSMAN_V3_PRO_PID 0x02A6
#define RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID 0x02A7
#define RAZER_ORBWEAVER_CHROMA_PID 0x0207
#define RAZER_ORNATA_CHROMA_PID 0x021E
@@ -92,10 +92,10 @@ void RGBController_SkyloongGK104Pro::SetupZones()
new_kb.ChangeKeys(
{
{ 0, 4, 12, 0, KEY_EN_RIGHT_SHIFT, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT },
{ 0, 5, 4, 114, "Key: Left Space", KEYBOARD_OPCODE_SWAP_ONLY },
{ 0, 5, 8, 118, "Key: Right Space", KEYBOARD_OPCODE_SWAP_ONLY }
{ 0, 4, 12, 0, KEY_EN_RIGHT_SHIFT, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT },
{ 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT },
{ 0, 5, 4, 114, "Key: Left Space", KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY },
{ 0, 5, 8, 118, "Key: Right Space", KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY }
}
);
@@ -48,7 +48,7 @@ void DetectSonyDualSenseControllers(hid_device_info* info, const std::string&)
}
}
REGISTER_HID_DETECTOR("Sony PlayStation DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V1_PID);
REGISTER_HID_DETECTOR("Sony PlayStation DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V2_PID);
REGISTER_HID_DETECTOR("Sony PlayStation DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_RECEIVER_PID);
REGISTER_HID_DETECTOR("Sony PlayStation DualSense", DetectSonyDualSenseControllers, SONY_VID, SONY_DUALSENSE_PID);
REGISTER_HID_DETECTOR("Sony DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V1_PID);
REGISTER_HID_DETECTOR("Sony DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V2_PID);
REGISTER_HID_DETECTOR("Sony DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_RECEIVER_PID);
REGISTER_HID_DETECTOR("Sony DualSense", DetectSonyDualSenseControllers, SONY_VID, SONY_DUALSENSE_PID);
@@ -114,6 +114,7 @@
#define STEELSERIES_APEX_M750_PID 0x0616
#define STEELSERIES_APEX_OG_PID 0x1202
#define STEELSERIES_APEX_350_PID 0x1206
#define STEELSERIES_APEX_PRO3_PID 0x1640
void DetectSteelSeriesAerox3(hid_device_info* info, const std::string& name)
{
@@ -459,3 +460,4 @@ REGISTER_HID_DETECTOR_I ("SteelSeries Apex Pro TKL 2023", Dete
REGISTER_HID_DETECTOR_I ("SteelSeries Apex M750", DetectSteelSeriesApexM, STEELSERIES_VID, STEELSERIES_APEX_M750_PID, 2 );
REGISTER_HID_DETECTOR_I ("SteelSeries Apex (OG)/Apex Fnatic", DetectSteelSeriesApexOld, STEELSERIES_VID, STEELSERIES_APEX_OG_PID, 0 );
REGISTER_HID_DETECTOR_I ("SteelSeries Apex 350", DetectSteelSeriesApexOld, STEELSERIES_VID, STEELSERIES_APEX_350_PID, 0 );
REGISTER_HID_DETECTOR_I ("SteelSeries Apex Pro 3", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_PRO3_PID, 1 );
@@ -42,6 +42,7 @@ static std::vector<keyboard_led> additional_mm_leds =
17, // col
KV(1,0), // value
KEY_EN_MEDIA_VOLUME_UP, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
},
{
@@ -50,6 +51,7 @@ static std::vector<keyboard_led> additional_mm_leds =
18, // col
KV(1,1), // value
KEY_EN_MEDIA_VOLUME_DOWN, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
},
{
@@ -58,6 +60,7 @@ static std::vector<keyboard_led> additional_mm_leds =
19, // col
KV(1,2), // value
KEY_EN_MEDIA_MUTE, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
},
{
@@ -66,6 +69,7 @@ static std::vector<keyboard_led> additional_mm_leds =
20, // col
KV(1,3), // value
"Key: Cylinder?!", // name; TODO: no idea what the symbol meant, was a cylinder..
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
}
};
@@ -86,6 +90,7 @@ static layout_values winbond_gaming_keyboard_full_layouts =
12, // col
KV(4,7), // value
KEY_EN_POUND, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_SWAP_ONLY // opcode
},
{
@@ -94,6 +99,7 @@ static layout_values winbond_gaming_keyboard_full_layouts =
1, // col
KV(4,17), // value
KEY_EN_ISO_BACK_SLASH, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_SWAP_ONLY // opcode
},
}
@@ -109,6 +115,7 @@ static layout_values winbond_gaming_keyboard_full_layouts =
13, // col
KV(1,17), // value
KEY_JP_YEN, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
}
}
@@ -135,6 +142,7 @@ static layout_values winbond_gaming_keyboard_tkl_layouts =
12, // col
KV(4,7), // value
KEY_EN_POUND, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_SWAP_ONLY // opcode
},
{
@@ -143,6 +151,7 @@ static layout_values winbond_gaming_keyboard_tkl_layouts =
1, // col
KV(4,17), // value
KEY_EN_ISO_BACK_SLASH, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_SWAP_ONLY // opcode
},
}
@@ -158,6 +167,7 @@ static layout_values winbond_gaming_keyboard_tkl_layouts =
13, // col
KV(1,17), // value
KEY_JP_YEN, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
}
}
@@ -184,6 +194,7 @@ static layout_values winbond_gaming_keyboard_60_layouts =
12, // col
KV(4,7), // value
KEY_EN_POUND, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_SWAP_ONLY // opcode
},
{
@@ -192,6 +203,7 @@ static layout_values winbond_gaming_keyboard_60_layouts =
1, // col
KV(4,17), // value
KEY_EN_ISO_BACK_SLASH, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_SWAP_ONLY // opcode
},
}
@@ -207,6 +219,7 @@ static layout_values winbond_gaming_keyboard_60_layouts =
13, // col
KV(1,17), // value
KEY_JP_YEN, // name
KEY_EN_UNUSED, // translated name
KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT // opcode
}
}
@@ -10,7 +10,7 @@
\*---------------------------------------------------------*/
#include "YeelightController.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
using json = nlohmann::json;
+7 -6
View File
@@ -6,12 +6,13 @@ This document details the process to compile OpenRGB from source on supported op
* You will need the **Microsoft Visual 2019 C++ runtime** installed. You can get it [here](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)
* To build the application yourself on Windows:
1. Download the latest [Visual Studio Community Edition](https://visualstudio.microsoft.com/thank-you-for-downloading-visual-studio-for-cplusplus/?sku=Community) and [Qt Creator](https://www.qt.io/download-thank-you).
2. When [installing the QT toolset](https://gitlab.com/OpenRGBDevelopers/OpenRGB-Wiki/-/blob/stable/Downloading%20Qt%20and%20building%20OpenRGB.md) select the latest revision of Qt 5.15.x as OpenRGB is not yet compatible with QT6.
3. Optionally [install Git](https://git-scm.com/download) if you intend to [contribute your changes](https://gitlab.com/CalcProgrammer1/OpenRGB/-/blob/master/CONTRIBUTING.md) to the mainline codebase.
4. Open the OpenRGB.pro project in Qt Creator.
5. Use the MSVC compiler kit, either 32- or 64-bit, to build the application.
6. Run the project from Qt Creator. If you want to use your custom build standalone, download the latest matching Release package and replace the OpenRGB.exe in it with your new build.
1. Download and install [PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows). Note that it's not the same as Windows Powershell.
2. Download the latest [Visual Studio Community Edition](https://visualstudio.microsoft.com/thank-you-for-downloading-visual-studio-for-cplusplus/?sku=Community) and [Qt Creator](https://www.qt.io/download-thank-you).
3. When [installing the QT toolset](https://gitlab.com/OpenRGBDevelopers/OpenRGB-Wiki/-/blob/stable/Downloading%20Qt%20and%20building%20OpenRGB.md) select the latest revision of Qt 5.15.x as OpenRGB is not yet compatible with QT6.
4. Optionally [install Git](https://git-scm.com/download) if you intend to [contribute your changes](https://gitlab.com/CalcProgrammer1/OpenRGB/-/blob/master/CONTRIBUTING.md) to the mainline codebase.
5. Open the OpenRGB.pro project in Qt Creator.
6. Use the MSVC compiler kit, either 32- or 64-bit, to build the application.
7. Run the project from Qt Creator. If you want to use your custom build standalone, download the latest matching Release package and replace the OpenRGB.exe in it with your new build.
## Linux
+66 -33
View File
@@ -6,13 +6,14 @@ The protocol mimics the [RGBController API](The-RGBController-API) closely. It
# Protocol Versions
| Protocol Version | OpenRGB Release | Description |
| ---------------- | --------------- | --------------------------------------------- |
| 0 | 0.3 | Initial (unversioned) protocol |
| 1 | 0.5 | Add versioning, add vendor string |
| 2 | 0.6 | Add profile controls |
| 3 | 0.7 | Add brightness field to modes, add SaveMode() |
| 4 | 0.9 | Add segments field to zones, plugin interface |
| Protocol Version | OpenRGB Release | Description |
| ---------------- | --------------- | -------------------------------------------------------------------------------------------------------------- |
| 0 | 0.3 | Initial (unversioned) protocol |
| 1 | 0.5 | Add versioning, add vendor string |
| 2 | 0.6 | Add profile controls |
| 3 | 0.7 | Add brightness field to modes, add SaveMode() |
| 4 | 0.9 | Add segments field to zones, plugin interface |
| 5 | 1.0 | Add zone flags, controller flags, effects-only zones, alternative LED names, add ClearSegments and AddSegments |
\* Denotes unreleased version, reflects status of current pipeline
@@ -57,6 +58,8 @@ The following IDs represent different SDK commands. Each ID packet has a certai
| 200 | [NET_PACKET_ID_REQUEST_PLUGIN_LIST](#net_packet_id_request_plugin_list) | Request plugin list | 4 |
| 201 | [NET_PACKET_ID_PLUGIN_SPECIFIC](#net_packet_id_plugin_specific) | Plugin specific | 4 |
| 1000 | [NET_PACKET_ID_RGBCONTROLLER_RESIZEZONE](#net_packet_id_rgbcontroller_resizezone) | RGBController::ResizeZone() | 0 |
| 1001 | [NET_PACKET_ID_RGBCONTROLLER_CLEARSEGMENTS](#net_packet_id_rgbcontroller_clearsegments) | RGBController::ClearSegments() | 5 |
| 1002 | [NET_PACKET_ID_RGBCONTROLLER_ADDSEGMENT](#net_packet_id_rgbcontroller_addsegment) | RGBController::AddSegment() | 5 |
| 1050 | [NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS](#net_packet_id_rgbcontroller_updateleds) | RGBController::UpdateLEDs() | 0 |
| 1051 | [NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS](#net_packet_id_rgbcontroller_updatezoneleds) | RGBController::UpdateZoneLEDs() | 0 |
| 1052 | [NET_PACKET_ID_RGBCONTROLLER_UPDATESINGLELED](#net_packet_id_rgbcontroller_updatesingleled) | RGBController::UpdateSingleLED() | 0 |
@@ -90,31 +93,34 @@ NOTE: Before sending this request, the client should request the protocol versio
The server responds to this request with a large data block. The format of the block is shown below. Portions of this block are omitted if the requested protocol level is below the listed value. The receiver is expected to parse this data block using the same protocol version sent in the request (or protocol 0 if the request is sent with no data).
| Size | Format | Name | Protocol Version | Description |
| ------------------- | ------------------------- | ------------------- | ---------------- | ---------------------------------------------------------------------------- |
| 4 | unsigned int | data_size | 0 | Size of all data in packet |
| 4 | int | type | 0 | RGBController type field value |
| 2 | unsigned short | name_len | 0 | Length of RGBController name field string, including null termination |
| name_len | char[name_len] | name | 0 | RGBController name field string value, including null termination |
| 2 | unsigned short | vendor_len | 1 | Length of RGBController vendor field string, including null termination |
| vendor_len | char[vendor_len] | vendor | 1 | RGBController vendor field string value, including null termination |
| 2 | unsigned short | description_len | 0 | Length of RGBController description field string, including null termination |
| description_len | char[description_len] | description | 0 | RGBController description field string value, including null termination |
| 2 | unsigned short | version_len | 0 | Length of RGBController version field string, including null termination |
| version_len | char[version_len] | version | 0 | RGBController version field string value, including null termination |
| 2 | unsigned short | serial_len | 0 | Length of RGBController serial field string, including null termination |
| serial_len | char[serial_len] | serial | 0 | RGBController serial field string value, including null termination |
| 2 | unsigned short | location_len | 0 | Length of RGBController location field string, including null termination |
| location_len | char[location_len] | location | 0 | RGBController location field string value, including null termination |
| 2 | unsigned short | num_modes | 0 | Number of modes in RGBController |
| 4 | int | active_mode | 0 | RGBController active_mode field value |
| Variable | Mode Data[num_modes] | modes | 0 | See [Mode Data](#mode-data) block format table. Repeat num_modes times |
| 2 | unsigned short | num_zones | 0 | Number of zones in RGBController |
| Variable | Zone Data[num_zones] | zones | 0 | See [Zone Data](#zone-data) block format table. Repeat num_zones times |
| 2 | unsigned short | num_leds | 0 | Number of LEDs in RGBController |
| Variable | LED Data[num_leds] | leds | 0 | See [LED Data](#led-data) block format table. Repeat num_leds times |
| 2 | unsigned short | num_colors | 0 | Number of colors in RGBController |
| 4 * num_colors | RGBColor[num_colors] | colors | 0 | RGBController colors field values |
| Size | Format | Name | Protocol Version | Description |
| ------------------- | ------------------------------------- | ------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------ |
| 4 | unsigned int | data_size | 0 | Size of all data in packet |
| 4 | int | type | 0 | RGBController type field value |
| 2 | unsigned short | name_len | 0 | Length of RGBController name field string, including null termination |
| name_len | char[name_len] | name | 0 | RGBController name field string value, including null termination |
| 2 | unsigned short | vendor_len | 1 | Length of RGBController vendor field string, including null termination |
| vendor_len | char[vendor_len] | vendor | 1 | RGBController vendor field string value, including null termination |
| 2 | unsigned short | description_len | 0 | Length of RGBController description field string, including null termination |
| description_len | char[description_len] | description | 0 | RGBController description field string value, including null termination |
| 2 | unsigned short | version_len | 0 | Length of RGBController version field string, including null termination |
| version_len | char[version_len] | version | 0 | RGBController version field string value, including null termination |
| 2 | unsigned short | serial_len | 0 | Length of RGBController serial field string, including null termination |
| serial_len | char[serial_len] | serial | 0 | RGBController serial field string value, including null termination |
| 2 | unsigned short | location_len | 0 | Length of RGBController location field string, including null termination |
| location_len | char[location_len] | location | 0 | RGBController location field string value, including null termination |
| 2 | unsigned short | num_modes | 0 | Number of modes in RGBController |
| 4 | int | active_mode | 0 | RGBController active_mode field value |
| Variable | Mode Data[num_modes] | modes | 0 | See [Mode Data](#mode-data) block format table. Repeat num_modes times |
| 2 | unsigned short | num_zones | 0 | Number of zones in RGBController |
| Variable | Zone Data[num_zones] | zones | 0 | See [Zone Data](#zone-data) block format table. Repeat num_zones times |
| 2 | unsigned short | num_leds | 0 | Number of LEDs in RGBController |
| Variable | LED Data[num_leds] | leds | 0 | See [LED Data](#led-data) block format table. Repeat num_leds times |
| 2 | unsigned short | num_colors | 0 | Number of colors in RGBController |
| 4 * num_colors | RGBColor[num_colors] | colors | 0 | RGBController colors field values |
| 2 | unsigned short | num_led_alt_names | 5 | Number of LED alternate name strings |
| Variable | LED Alternate Name[num_led_alt_names] | led_alt_names | 5 | See [LED Alternate Name Data](#led-alternate-names-data) block format table. Repeat num_led_alt_names times |
| 4 | unsigned int | flags | 5 | RGBController flags field value |
## Mode Data
@@ -157,6 +163,7 @@ The Zone Data block represents one entry in the `RGBController::zones` vector.
| (zone_matrix_len - 8)* | unsigned int[zone_matrix_len - 8] | zone_matrix_data | 0 | Zone matrix_map data (*only if matrix_map exists) |
| 2 | unsigned short | num_segments | 4 | Number of segments in zone |
| Variable | Segment Data[num_segments] | segments | 4 | See [Segment Data](#segment-data) block format table. Repeat num_segments times |
| 4 | unsigned int | zone_flags | 5 | Zone flags value |
## Segment Data
@@ -174,13 +181,21 @@ The Segment Data block represents one entry in the `RGBController::zones::segmen
The LED Data block represents one entry in the `RGBController::leds` vector.
| Size | Format | Name | Protocol Version | Description |
| ------------------- | ------------------------- | ------------------- | ---------------- | ------------------------------------------------------ |
| 2 | unsigned short | led_name_len | 0 | Length of LED name string, including null termination |
| led_name_len | char[led_name_len] | led_name | 0 | LED name string value, including null termination |
| 4 | unsigned int | led_value | 0 | LED value field value |
## LED Alternate Name Data
The LED Alternate Name Data block represents one entry in the `RGBController::led_alt_names` vector. This data block was introduced in protocol version 5.
| Size | Format | Name | Protocol Version | Description |
| ---------------- | ---------------------- | ---------------- | ---------------- | --------------------------------------------------------------- |
| 2 | unsigned short | led_alt_name_len | 5 | Length of LED alternate name string, including null termination |
| led_alt_name_len | char[led_alt_name_len] | led_alt_name | 5 | LED alternate name string value, including null termination |
## NET_PACKET_ID_REQUEST_PROTOCOL_VERSION
### Request [Size: 4]
@@ -300,6 +315,24 @@ The client uses this ID to call the ResizeZone() function of an RGBController de
| 4 | int | zone_idx | Zone index to resize |
| 4 | int | new_size | New size of the zone |
## NET_PACKET_ID_RGBCONTROLLER_CLEARSEGMENTS
### Client Only [Size: 4]
The client uses this ID to call the ClearSegments() function of an RGBController device. The packet contains the index of the zone to clear segments on, type int (size 4). The `pkt_dev_idx` of this request's header indicates which controller you are calling ClearSegments() on.
## NET_PACKET_ID_RGBCONTROLLER_ADDSEGMENT
### Client Only [Size: Variable]
The client uses this ID to call the AddSegment() function of an RGBController device. The packet contains a data block. The format of the block is shown below. The `pkt_dev_idx` of this request's header indicates which controller you are calling AddSegment() on.
| Size | Format | Name | Description |
| ---------------- | ---------------------- | ---------------- | --------------------------------------------------------- |
| 4 | unsigned int | data_size | Size of all data in packet |
| 4 | unsigned int | zone_idx | Zone index to add segment to |
| Variable | Segment Data | segment | See [Segment Data](#segment-data) block format table. |
## NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS
### Client Only [Size: Variable]
+1 -1
View File
@@ -14,7 +14,7 @@ USB access permissions vary based on the type of device and the operating system
## Linux
* USB devices require [udev rules](Documentation/UdevRules.md) to access as a normal user.
* USB devices require [udev rules](/Documentation/UdevRules.md) to access as a normal user.
* Alternatively you can run OpenRGB as root to detect all USB devices. (Not recommended)
* USB based Gigabyte AORUS motherboards may also have an ACPI conflict. Please [add a kernel parameter](#kernel-parameters) to resolve this conflict.
+256 -196
View File
@@ -56,172 +56,173 @@ const char* LOG_MSG_MISSING_OPCODE = "[%s] Error: Opcode %d not found for %
static const std::vector<keyboard_led> keyboard_zone_main =
{
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 1, 0, 0, KEY_EN_BACK_TICK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 1, 0, KEY_EN_1, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 2, 0, KEY_EN_2, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 3, 0, KEY_EN_3, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 4, 0, KEY_EN_4, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 5, 0, KEY_EN_5, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 6, 0, KEY_EN_6, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 7, 0, KEY_EN_7, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 8, 0, KEY_EN_8, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 9, 0, KEY_EN_9, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 10, 0, KEY_EN_0, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 11, 0, KEY_EN_MINUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 12, 0, KEY_EN_EQUALS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 13, 0, KEY_EN_BACKSPACE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 0, KEY_EN_TAB, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 1, 0, KEY_EN_Q, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 2, 0, KEY_EN_W, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 3, 0, KEY_EN_E, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 4, 0, KEY_EN_R, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 5, 0, KEY_EN_T, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 6, 0, KEY_EN_Y, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 7, 0, KEY_EN_U, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 8, 0, KEY_EN_I, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 9, 0, KEY_EN_O, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 10, 0, KEY_EN_P, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 11, 0, KEY_EN_LEFT_BRACKET, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 12, 0, KEY_EN_RIGHT_BRACKET, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 13, 0, KEY_EN_ANSI_BACK_SLASH, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 0, KEY_EN_CAPS_LOCK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 1, 0, KEY_EN_A, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 2, 0, KEY_EN_S, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 3, 0, KEY_EN_D, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 4, 0, KEY_EN_F, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 5, 0, KEY_EN_G, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 6, 0, KEY_EN_H, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 7, 0, KEY_EN_J, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 8, 0, KEY_EN_K, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 9, 0, KEY_EN_L, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 10, 0, KEY_EN_SEMICOLON, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 11, 0, KEY_EN_QUOTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 12, 0, KEY_EN_POUND, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT },
{ 0, 3, 13, 0, KEY_EN_ANSI_ENTER, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 0, KEY_EN_LEFT_SHIFT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 2, 0, KEY_EN_Z, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 3, 0, KEY_EN_X, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 4, 0, KEY_EN_C, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 5, 0, KEY_EN_V, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 6, 0, KEY_EN_B, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 7, 0, KEY_EN_N, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 8, 0, KEY_EN_M, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 9, 0, KEY_EN_COMMA, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 10, 0, KEY_EN_PERIOD, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 11, 0, KEY_EN_FORWARD_SLASH, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 13, 0, KEY_EN_RIGHT_SHIFT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 0, KEY_EN_LEFT_CONTROL, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 1, 0, KEY_EN_LEFT_WINDOWS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 2, 0, KEY_EN_LEFT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 6, 0, KEY_EN_SPACE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 10, 0, KEY_EN_RIGHT_ALT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 11, 0, KEY_EN_RIGHT_FUNCTION, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 12, 0, KEY_EN_MENU, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 13, 0, KEY_EN_RIGHT_CONTROL, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
/*-----------------------------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-----------------------------------------------------------------------------------------------------------------------------*/
{ 0, 1, 0, 0, KEY_EN_BACK_TICK, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 1, 0, KEY_EN_1, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 2, 0, KEY_EN_2, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 3, 0, KEY_EN_3, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 4, 0, KEY_EN_4, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 5, 0, KEY_EN_5, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 6, 0, KEY_EN_6, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 7, 0, KEY_EN_7, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 8, 0, KEY_EN_8, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 9, 0, KEY_EN_9, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 10, 0, KEY_EN_0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 11, 0, KEY_EN_MINUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 12, 0, KEY_EN_EQUALS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 13, 0, KEY_EN_BACKSPACE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 0, 0, KEY_EN_TAB, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 1, 0, KEY_EN_Q, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 2, 0, KEY_EN_W, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 3, 0, KEY_EN_E, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 4, 0, KEY_EN_R, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 5, 0, KEY_EN_T, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 6, 0, KEY_EN_Y, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 7, 0, KEY_EN_U, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 8, 0, KEY_EN_I, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 9, 0, KEY_EN_O, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 10, 0, KEY_EN_P, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 11, 0, KEY_EN_LEFT_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 12, 0, KEY_EN_RIGHT_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 13, 0, KEY_EN_ANSI_BACK_SLASH, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 0, 0, KEY_EN_CAPS_LOCK, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 1, 0, KEY_EN_A, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 2, 0, KEY_EN_S, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 3, 0, KEY_EN_D, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 4, 0, KEY_EN_F, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 5, 0, KEY_EN_G, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 6, 0, KEY_EN_H, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 7, 0, KEY_EN_J, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 8, 0, KEY_EN_K, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 9, 0, KEY_EN_L, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 10, 0, KEY_EN_SEMICOLON, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 11, 0, KEY_EN_QUOTE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 12, 0, KEY_EN_POUND, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT },
{ 0, 3, 13, 0, KEY_EN_ANSI_ENTER, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 0, 0, KEY_EN_LEFT_SHIFT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 1, 0, KEY_EN_ISO_BACK_SLASH, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 2, 0, KEY_EN_Z, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 3, 0, KEY_EN_X, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 4, 0, KEY_EN_C, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 5, 0, KEY_EN_V, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 6, 0, KEY_EN_B, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 7, 0, KEY_EN_N, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 8, 0, KEY_EN_M, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 9, 0, KEY_EN_COMMA, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 10, 0, KEY_EN_PERIOD, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 11, 0, KEY_EN_FORWARD_SLASH, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 13, 0, KEY_EN_RIGHT_SHIFT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 0, 0, KEY_EN_LEFT_CONTROL, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 1, 0, KEY_EN_LEFT_WINDOWS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 2, 0, KEY_EN_LEFT_ALT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 6, 0, KEY_EN_SPACE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 10, 0, KEY_EN_RIGHT_ALT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 11, 0, KEY_EN_RIGHT_FUNCTION, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 12, 0, KEY_EN_MENU, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 13, 0, KEY_EN_RIGHT_CONTROL, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
static const std::vector<keyboard_led> keyboard_zone_fn_row =
{
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_ESCAPE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 0, KEY_EN_F1, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 0, KEY_EN_F2, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 0, KEY_EN_F3, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 0, KEY_EN_F4, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 0, KEY_EN_F5, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 0, KEY_EN_F6, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 0, KEY_EN_F7, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 0, KEY_EN_F8, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 0, KEY_EN_F9, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 0, KEY_EN_F10, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 0, KEY_EN_F11, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 0, KEY_EN_F12, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
/*-----------------------------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-----------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 0, 0, KEY_EN_ESCAPE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 2, 0, KEY_EN_F1, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 3, 0, KEY_EN_F2, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 4, 0, KEY_EN_F3, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 5, 0, KEY_EN_F4, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 6, 0, KEY_EN_F5, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 7, 0, KEY_EN_F6, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 8, 0, KEY_EN_F7, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 9, 0, KEY_EN_F8, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 10, 0, KEY_EN_F9, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 11, 0, KEY_EN_F10, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 12, 0, KEY_EN_F11, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 13, 0, KEY_EN_F12, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
static const std::vector<keyboard_led> keyboard_zone_extras =
{
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 0, 14, 0, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 15, 0, KEY_EN_SCROLL_LOCK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 16, 0, KEY_EN_PAUSE_BREAK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 14, 0, KEY_EN_INSERT, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 15, 0, KEY_EN_HOME, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 0, KEY_EN_PAGE_UP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 14, 0, KEY_EN_DELETE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 15, 0, KEY_EN_END, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 0, KEY_EN_PAGE_DOWN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 15, 0, KEY_EN_UP_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 14, 0, KEY_EN_LEFT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 0, KEY_EN_RIGHT_ARROW, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
/*-----------------------------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-----------------------------------------------------------------------------------------------------------------------------*/
{ 0, 0, 14, 0, KEY_EN_PRINT_SCREEN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 15, 0, KEY_EN_SCROLL_LOCK, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 0, 16, 0, KEY_EN_PAUSE_BREAK, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 14, 0, KEY_EN_INSERT, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 15, 0, KEY_EN_HOME, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 16, 0, KEY_EN_PAGE_UP, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 14, 0, KEY_EN_DELETE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 15, 0, KEY_EN_END, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 16, 0, KEY_EN_PAGE_DOWN, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 15, 0, KEY_EN_UP_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 14, 0, KEY_EN_LEFT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 15, 0, KEY_EN_DOWN_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 16, 0, KEY_EN_RIGHT_ARROW, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
static const std::vector<keyboard_led> keyboard_zone_numpad =
{
/*---------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Key, OpCode, |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 1, 17, 0, KEY_EN_NUMPAD_LOCK, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 18, 0, KEY_EN_NUMPAD_DIVIDE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 19, 0, KEY_EN_NUMPAD_TIMES, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 20, 0, KEY_EN_NUMPAD_MINUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 17, 0, KEY_EN_NUMPAD_7, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 18, 0, KEY_EN_NUMPAD_8, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 19, 0, KEY_EN_NUMPAD_9, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 20, 0, KEY_EN_NUMPAD_PLUS, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 17, 0, KEY_EN_NUMPAD_4, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 18, 0, KEY_EN_NUMPAD_5, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 19, 0, KEY_EN_NUMPAD_6, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 17, 0, KEY_EN_NUMPAD_1, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 18, 0, KEY_EN_NUMPAD_2, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 19, 0, KEY_EN_NUMPAD_3, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 20, 0, KEY_EN_NUMPAD_ENTER, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 18, 0, KEY_EN_NUMPAD_0, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 19, 0, KEY_EN_NUMPAD_PERIOD, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
/*-----------------------------------------------------------------------------------------------------------------------------*\
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-----------------------------------------------------------------------------------------------------------------------------*/
{ 0, 1, 17, 0, KEY_EN_NUMPAD_LOCK, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 18, 0, KEY_EN_NUMPAD_DIVIDE, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 19, 0, KEY_EN_NUMPAD_TIMES, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 1, 20, 0, KEY_EN_NUMPAD_MINUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 17, 0, KEY_EN_NUMPAD_7, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 18, 0, KEY_EN_NUMPAD_8, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 19, 0, KEY_EN_NUMPAD_9, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 2, 20, 0, KEY_EN_NUMPAD_PLUS, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 17, 0, KEY_EN_NUMPAD_4, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 18, 0, KEY_EN_NUMPAD_5, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 3, 19, 0, KEY_EN_NUMPAD_6, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 17, 0, KEY_EN_NUMPAD_1, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 18, 0, KEY_EN_NUMPAD_2, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 19, 0, KEY_EN_NUMPAD_3, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 4, 20, 0, KEY_EN_NUMPAD_ENTER, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 18, 0, KEY_EN_NUMPAD_0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
{ 0, 5, 19, 0, KEY_EN_NUMPAD_PERIOD, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, },
};
keyboard_keymap_overlay iso_azerty
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_FR_ASTERIX, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 0, 0, KEY_FR_SUPER_2, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 1, 0, KEY_FR_AMPERSAND, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 2, 0, KEY_FR_ACUTE_E, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 3, 0, KEY_FR_DOUBLEQUOTE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 4, 0, KEY_EN_QUOTE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 5, 0, KEY_FR_LEFT_PARENTHESIS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 6, 0, KEY_EN_MINUS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 7, 0, KEY_FR_GRAVE_E, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 8, 0, KEY_FR_UNDERSCORE, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 9, 0, KEY_FR_CEDILLA_C, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 10, 0, KEY_FR_GRAVE_A, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 11, 0, KEY_FR_RIGHT_PARENTHESIS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 1, 0, KEY_EN_A, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 2, 0, KEY_EN_Z, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_JP_CHEVRON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_FR_DOLLAR, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 1, 0, KEY_EN_Q, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 10, 0, KEY_EN_M, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_FR_GRAVE_U, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 2, 0, KEY_EN_W, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 8, 0, KEY_EN_COMMA, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 9, 0, KEY_EN_SEMICOLON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 10, 0, KEY_JP_COLON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 11, 0, KEY_FR_EXCLAIMATION, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_UNUSED, KEY_FR_ASTERIX, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEY_FR_SUPER_2, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 1, 0, KEY_EN_UNUSED, KEY_FR_AMPERSAND, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 2, 0, KEY_EN_UNUSED, KEY_FR_ACUTE_E, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 3, 0, KEY_EN_UNUSED, KEY_FR_DOUBLEQUOTE, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 4, 0, KEY_EN_UNUSED, KEY_EN_QUOTE, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 5, 0, KEY_EN_UNUSED, KEY_FR_LEFT_PARENTHESIS, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 6, 0, KEY_EN_UNUSED, KEY_EN_MINUS, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 7, 0, KEY_EN_UNUSED, KEY_FR_GRAVE_E, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 8, 0, KEY_EN_UNUSED, KEY_FR_UNDERSCORE, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 9, 0, KEY_EN_UNUSED, KEY_FR_CEDILLA_C, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 10, 0, KEY_EN_UNUSED, KEY_FR_GRAVE_A, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 11, 0, KEY_EN_UNUSED, KEY_FR_RIGHT_PARENTHESIS, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 1, 0, KEY_EN_UNUSED, KEY_EN_A, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 2, 0, KEY_EN_UNUSED, KEY_EN_Z, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 11, 0, KEY_EN_UNUSED, KEY_JP_CHEVRON, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 12, 0, KEY_EN_UNUSED, KEY_FR_DOLLAR, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 3, 1, 0, KEY_EN_UNUSED, KEY_EN_Q, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 3, 10, 0, KEY_EN_UNUSED, KEY_EN_M, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 3, 11, 0, KEY_EN_UNUSED, KEY_FR_GRAVE_U, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 2, 0, KEY_EN_UNUSED, KEY_EN_W, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 8, 0, KEY_EN_UNUSED, KEY_EN_COMMA, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 9, 0, KEY_EN_UNUSED, KEY_EN_SEMICOLON, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 10, 0, KEY_EN_UNUSED, KEY_JP_COLON, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 11, 0, KEY_EN_UNUSED, KEY_FR_EXCLAIMATION, KEYBOARD_OPCODE_ADD_ALT_NAME, },
}
};
@@ -229,11 +230,12 @@ keyboard_keymap_overlay ansi_qwerty
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@@ -241,10 +243,11 @@ keyboard_keymap_overlay iso_qwerty
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
}
};
@@ -252,22 +255,23 @@ keyboard_keymap_overlay iso_qwertz
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_POUND, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 1, 0, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 0, 0, KEY_JP_CHEVRON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 11, 0, KEY_DE_ESZETT, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 12, 0, KEY_EN_BACK_TICK, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 6, 0, KEY_EN_Z, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_DE_DIAERESIS_U, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_EN_PLUS, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 10, 0, KEY_DE_DIAERESIS_O, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_DE_DIAERESIS_A, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 2, 0, KEY_EN_Y, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 11, 0, KEY_EN_MINUS, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_UNUSED, KEY_EN_POUND, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 1, 0, KEY_EN_UNUSED, KEY_NORD_ANGLE_BRACKET, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 0, 0, KEY_EN_UNUSED, KEY_JP_CHEVRON, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 11, 0, KEY_EN_UNUSED, KEY_DE_ESZETT, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 12, 0, KEY_EN_UNUSED, KEY_EN_BACK_TICK, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 6, 0, KEY_EN_UNUSED, KEY_EN_Z, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 11, 0, KEY_EN_UNUSED, KEY_DE_DIAERESIS_U, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 12, 0, KEY_EN_UNUSED, KEY_EN_PLUS, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 3, 10, 0, KEY_EN_UNUSED, KEY_DE_DIAERESIS_O, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 3, 11, 0, KEY_EN_UNUSED, KEY_DE_DIAERESIS_A, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 2, 0, KEY_EN_UNUSED, KEY_EN_Y, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 11, 0, KEY_EN_UNUSED, KEY_EN_MINUS, KEYBOARD_OPCODE_ADD_ALT_NAME, },
}
};
@@ -275,16 +279,17 @@ keyboard_keymap_overlay jis
{
KEYBOARD_SIZE_FULL,
{
/*---------------------------------------------------------------------------------------------------------*\
| Edit Keys |
\*---------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_RIGHT_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 4, 12, 0, KEY_EN_BACK_SLASH, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 1, 12, 0, KEY_JP_CHEVRON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 11, 0, KEY_JP_AT, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 12, 0, KEY_EN_LEFT_BRACKET, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 3, 11, 0, KEY_JP_COLON, KEYBOARD_OPCODE_SWAP_ONLY, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, },
/*-------------------------------------------------------------------------------------------------------------------------------------*\
| Edit Keys |
| Zone, Row, Column, Value, Name, Alternate Name, OpCode |
\*-------------------------------------------------------------------------------------------------------------------------------------*/
{ 0, 3, 12, 0, KEY_EN_RIGHT_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 4, 12, 0, KEY_EN_BACK_SLASH, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 1, 12, 0, KEY_JP_CHEVRON, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 11, 0, KEY_JP_AT, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 12, 0, KEY_EN_LEFT_BRACKET, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 3, 11, 0, KEY_JP_COLON, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
{ 0, 2, 13, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_ADD_ALT_NAME, },
}
};
@@ -368,20 +373,20 @@ KeyboardLayoutManager::KeyboardLayoutManager(KEYBOARD_LAYOUT layout, KEYBOARD_SI
| Non-English, non-QWERTY layouts are disabled |
| until proper translation feature is implemented |
\*-------------------------------------------------*/
// case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_AZERTY:
// ChangeKeys(iso_azerty);
// tmp_name = KEYBOARD_NAME_AZERTY;
// break;
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_AZERTY:
ChangeKeys(iso_azerty);
tmp_name = KEYBOARD_NAME_AZERTY;
break;
// case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_QWERTZ:
// ChangeKeys(iso_qwertz);
// tmp_name = KEYBOARD_NAME_QWERTZ;
// break;
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_QWERTZ:
ChangeKeys(iso_qwertz);
tmp_name = KEYBOARD_NAME_QWERTZ;
break;
// case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_JIS:
// ChangeKeys(jis);
// tmp_name = KEYBOARD_NAME_JIS;
// break;
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_JIS:
ChangeKeys(jis);
tmp_name = KEYBOARD_NAME_JIS;
break;
}
/*---------------------------------------------------------------------*\
@@ -496,6 +501,10 @@ void KeyboardLayoutManager::OpCodeSwitch(key_set change_keys)
RemoveRow(change_keys[chg_key_idx].row);
break;
case KEYBOARD_OPCODE_ADD_ALT_NAME:
AddAltName(change_keys[chg_key_idx]);
break;
default:
LOG_DEBUG(LOG_MSG_MISSING_OPCODE, KLM_CLASS_NAME, change_keys[chg_key_idx].opcode,
change_keys[chg_key_idx].name, change_keys[chg_key_idx].row, change_keys[chg_key_idx].col);
@@ -836,8 +845,36 @@ void KeyboardLayoutManager::RemoveRow(uint8_t rmv_row)
}
}
std::string KeyboardLayoutManager::GetName()
void KeyboardLayoutManager::AddAltName(keyboard_led key)
{
/*---------------------------------------------------------------------*\
| Get the edit point |
\*---------------------------------------------------------------------*/
unsigned int edit_row = key.row;
unsigned int edit_col = key.col;
const char* edit_alt_name = key.alt_name;
/*---------------------------------------------------------------------*\
| Otherwise, loop through and find the edit location |
\*---------------------------------------------------------------------*/
for(unsigned int key_idx = 0; key_idx < keymap.size(); key_idx++)
{
/*---------------------------------------------------------------------*\
| If the row and column are identical, we've found the edit location |
\*---------------------------------------------------------------------*/
if((edit_row == keymap[key_idx].row) && (edit_col == keymap[key_idx].col))
{
/*---------------------------------------------------------------------*\
| Update the entry at this position with the new translated name |
\*---------------------------------------------------------------------*/
LOG_DEBUG("[%s] Adding alternate name %s to %s @ %02d, %02d", KLM_CLASS_NAME, edit_alt_name, keymap[key_idx].name, keymap[key_idx].row, keymap[key_idx].col);
keymap[key_idx].alt_name = edit_alt_name;
break;
}
}
}
std::string KeyboardLayoutManager::GetName()
{
return name;
}
@@ -903,6 +940,29 @@ unsigned int KeyboardLayoutManager::GetKeyValueAt(unsigned int row, unsigned int
return -1;
}
std::string KeyboardLayoutManager::GetKeyAltNameAt(unsigned int key_idx)
{
if(key_idx < keymap.size())
{
return keymap[key_idx].alt_name;
}
return KEY_EN_UNUSED;
}
std::string KeyboardLayoutManager::GetKeyAltNameAt(unsigned int row, unsigned int col)
{
for(std::vector<keyboard_led>::iterator key = keymap.begin(); key != keymap.end(); ++key)
{
if(key->row == row && key->col == col)
{
return key->alt_name;
}
}
return KEY_EN_UNUSED;
}
unsigned int KeyboardLayoutManager::GetRowCount()
{
return rows;
@@ -67,6 +67,7 @@ enum KEYBOARD_OPCODE
KEYBOARD_OPCODE_INS_SHFT_ADJACENT = 3,
KEYBOARD_OPCODE_INSERT_ROW = 4,
KEYBOARD_OPCODE_REMOVE_ROW = 5,
KEYBOARD_OPCODE_ADD_ALT_NAME = 6,
};
typedef struct
@@ -76,6 +77,7 @@ typedef struct
std::uint8_t col;
unsigned int value;
const char* name;
const char* alt_name;
KEYBOARD_OPCODE opcode;
} keyboard_led;
@@ -120,6 +122,8 @@ public:
unsigned int GetKeyCount();
std::string GetKeyNameAt(unsigned int key_idx);
std::string GetKeyNameAt(unsigned int row, unsigned int col);
std::string GetKeyAltNameAt(unsigned int key_idx);
std::string GetKeyAltNameAt(unsigned int row, unsigned int col);
unsigned int GetKeyValueAt(unsigned int key_idx);
unsigned int GetKeyValueAt(unsigned int row, unsigned int col);
@@ -141,6 +145,7 @@ private:
void SwapKeys(std::vector<keyboard_led> keys);
void RemoveKey(keyboard_led keys);
void RemoveRow(std::uint8_t row);
void AddAltName(keyboard_led key);
KEYBOARD_LAYOUT layout;
KEYBOARD_SIZE physical_size;
+121 -7
View File
@@ -9,6 +9,7 @@
#include "LogManager.h"
#include <regex>
#include <stdarg.h>
#include <iostream>
#include <iomanip>
@@ -18,6 +19,9 @@
const char* LogManager::log_codes[] = {"FATAL:", "ERROR:", "Warning:", "Info:", "Verbose:", "Debug:", "Trace:", "Dialog:"};
const char* TimestampPattern = "%04d%02d%02d_%02d%02d%02d";
const char* TimestampRegex = "[0-9]{8}_[0-9]{6}"; // relies on the structure of the template above
LogManager::LogManager()
{
base_clock = std::chrono::steady_clock::now();
@@ -56,21 +60,41 @@ unsigned int LogManager::getLoglevel()
void LogManager::configure(json config, const filesystem::path& defaultDir)
{
std::lock_guard<std::mutex> grd(entry_mutex);
std::lock_guard<std::recursive_mutex> grd(entry_mutex);
/*-------------------------------------------------*\
| If the log is not open, create a new log file |
\*-------------------------------------------------*/
if(!log_stream.is_open())
{
/*----------------------------------------------------*\
| If a limit is declared in the config for the maximum |
| number of log files, respect the limit |
| Log rotation will remove the files matching the |
| current "logfile", starting with the oldest ones |
| (according to the timestamp in their filename) |
| i.e. with the lexicographically smallest filename |
| 0 or less equals no limit (default) |
\*----------------------------------------------------*/
int loglimit = 0;
if(config.contains("file_count_limit") && config["file_count_limit"].is_number_integer())
{
loglimit = config["file_count_limit"];
}
if(config.contains("log_file"))
{
log_file_enabled = config["log_file"];
}
/*-----------------------------------------*\
| Default template for the logfile name |
| The # symbol is replaced with a timestamp |
\*-----------------------------------------*/
std::string logtempl = "OpenRGB_#.log";
if(log_file_enabled)
{
std::string logname = "OpenRGB_#.log";
/*-------------------------------------------------*\
| If the logfile is defined in the configuration, |
@@ -84,11 +108,10 @@ void LogManager::configure(json config, const filesystem::path& defaultDir)
std::string tmpname = config["logfile"];
if(!tmpname.empty())
{
logname = tmpname;
logtempl = tmpname;
}
}
}
/*-------------------------------------------------*\
| If the # symbol is found in the log file name, |
| replace it with a timestamp |
@@ -96,8 +119,9 @@ void LogManager::configure(json config, const filesystem::path& defaultDir)
time_t t = time(0);
struct tm* tmp = localtime(&t);
char time_string[64];
snprintf(time_string, 64, "%04d%02d%02d_%02d%02d%02d", 1900 + tmp->tm_year, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
snprintf(time_string, 64, TimestampPattern, 1900 + tmp->tm_year, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
std::string logname = logtempl;
size_t oct = logname.find("#");
if(oct != logname.npos)
{
@@ -114,6 +138,12 @@ void LogManager::configure(json config, const filesystem::path& defaultDir)
}
filesystem::create_directories(p.parent_path());
/*----------------------------------------------*\
| "Log rotation": remove old log files exceeding |
| the current configured limit |
\*----------------------------------------------*/
rotate_logs(p.parent_path(), filesystem::u8path(logtempl).filename(), loglimit);
/*-------------------------------------------------*\
| Open the logfile |
\*-------------------------------------------------*/
@@ -200,7 +230,7 @@ void LogManager::_flush()
void LogManager::flush()
{
std::lock_guard<std::mutex> grd(entry_mutex);
std::lock_guard<std::recursive_mutex> grd(entry_mutex);
_flush();
}
@@ -298,7 +328,7 @@ void LogManager::append(const char* filename, int line, unsigned int level, cons
va_list va;
va_start(va, fmt);
std::lock_guard<std::mutex> grd(entry_mutex);
std::lock_guard<std::recursive_mutex> grd(entry_mutex);
_append(filename, line, level, fmt, va);
va_end(va);
@@ -367,3 +397,87 @@ void LogManager::UnregisterDialogShowCallback(LogDialogShowCallback callback, vo
}
}
}
void LogManager::rotate_logs(const filesystem::path& folder, const filesystem::path& templ, int max_count)
{
if(max_count < 1)
{
return;
}
std::string templ2 = templ.filename().generic_u8string();
// Process the templ2 into a usable regex
// The # symbol is replaced with a timestamp regex
// Any regex-unfriendly symbols are escaped with a backslash
std::string regex_templ = "^";
for(size_t i = 0; i < templ2.size(); ++i)
{
switch(templ2[i])
{
// Symbols that have special meanings in regex'es need backslash escaping
case '.':
case '^':
case '$':
case '(':
case ')':
case '{':
case '}':
case '+':
case '[':
case ']':
case '*':
case '-':
case '\\': // Should have been filtered out by the filesystem processing, but... who knows
regex_templ.push_back('\\');
regex_templ.push_back(templ2[i]);
break;
// The # symbol is reserved for the timestamp and thus is replaced with the timestamp regex template
case '#':
regex_templ.append(TimestampRegex);
break;
default:
regex_templ.push_back(templ2[i]);
break;
}
}
regex_templ.push_back('$');
std::regex r(regex_templ);
std::vector<filesystem::path> valid_paths;
std::filesystem::directory_iterator it(folder);
for(; it != filesystem::end(it); ++it)
{
if(it->is_regular_file())
{
std::string fname = it->path().filename().u8string();
if(std::regex_match(fname, r))
{
valid_paths.push_back(it->path());
}
}
}
std::sort(valid_paths.begin(), valid_paths.end());
size_t remove_count = valid_paths.size() - max_count + 1; // NOTE: the "1" extra file to remove creates space for the one we're about to create
if(remove_count > valid_paths.size()) // for max_count <= 0 and to prevent any possible errors in the above logic
{
remove_count = valid_paths.size();
}
for(size_t i = 0; i < remove_count; ++i)
{
std::error_code ec; // Uses error code to force the `remove` call to be `noexcept`
if(filesystem::remove(valid_paths[i], ec))
{
LOG_VERBOSE("[LogManager] Removed log file [%s] during rotation", valid_paths[i].u8string().c_str());
}
else
{
LOG_WARNING("[LogManager] Failed to remove log file [%s] during rotation: %s", valid_paths[i].u8string().c_str(), ec.message().c_str());
}
}
}
+5 -3
View File
@@ -15,7 +15,7 @@
#include <vector>
#include <queue>
#include <memory>
#include "json.hpp"
#include <nlohmann/json.hpp>
#include "filesystem.h"
/*-------------------------------------------------*\
@@ -60,7 +60,7 @@ private:
LogManager(const LogManager&) = delete;
LogManager(LogManager&&) = delete;
~LogManager();
std::mutex entry_mutex;
std::recursive_mutex entry_mutex;
std::mutex section_mutex;
std::ofstream log_stream;
@@ -78,7 +78,7 @@ private:
// Logfile max level
unsigned int loglevel = LL_INFO;
// Verbosity (stdout) max level
unsigned int verbosity = LL_WARNING;
@@ -91,6 +91,8 @@ private:
// A non-guarded flush()
void _flush();
void rotate_logs(const filesystem::path& folder, const filesystem::path& templ, int max_count);
public:
static LogManager* get();
void configure(json config, const filesystem::path & defaultDir);
+41
View File
@@ -593,6 +593,12 @@ void NetworkClient::ProcessReply_ControllerData(unsigned int data_size, char * d
new_controller->ReadDeviceDescription((unsigned char *)data, GetProtocolVersion());
/*-----------------------------------------------------*\
| Mark this controller as remote owned |
\*-----------------------------------------------------*/
new_controller->flags &= ~CONTROLLER_FLAG_LOCAL;
new_controller->flags |= CONTROLLER_FLAG_REMOTE;
ControllerListMutex.lock();
if(dev_idx >= server_controllers.size())
@@ -609,6 +615,8 @@ void NetworkClient::ProcessReply_ControllerData(unsigned int data_size, char * d
for(unsigned int i = 0; i < server_controllers[dev_idx]->zones.size(); i++)
{
server_controllers[dev_idx]->zones[i].leds_count = new_controller->zones[i].leds_count;
server_controllers[dev_idx]->zones[i].segments.clear();
server_controllers[dev_idx]->zones[i].segments = new_controller->zones[i].segments;
}
server_controllers[dev_idx]->SetupColors();
@@ -754,6 +762,39 @@ void NetworkClient::SendRequest_ProtocolVersion()
send_in_progress.unlock();
}
void NetworkClient::SendRequest_RGBController_ClearSegments(unsigned int dev_idx, int zone)
{
if(change_in_progress)
{
return;
}
NetPacketHeader request_hdr;
int request_data[1];
InitNetPacketHeader(&request_hdr, dev_idx, NET_PACKET_ID_RGBCONTROLLER_CLEARSEGMENTS, sizeof(request_data));
request_data[0] = zone;
send(client_sock, (char *)&request_hdr, sizeof(NetPacketHeader), MSG_NOSIGNAL);
send(client_sock, (char *)&request_data, sizeof(request_data), MSG_NOSIGNAL);
}
void NetworkClient::SendRequest_RGBController_AddSegment(unsigned int dev_idx, unsigned char * data, unsigned int size)
{
if(change_in_progress)
{
return;
}
NetPacketHeader request_hdr;
InitNetPacketHeader(&request_hdr, dev_idx, NET_PACKET_ID_RGBCONTROLLER_ADDSEGMENT, size);
send(client_sock, (char *)&request_hdr, sizeof(NetPacketHeader), MSG_NOSIGNAL);
send(client_sock, (char *)data, size, 0);
}
void NetworkClient::SendRequest_RGBController_ResizeZone(unsigned int dev_idx, int zone, int new_size)
{
if(change_in_progress)
+3 -1
View File
@@ -48,7 +48,7 @@ public:
void ListenThreadFunction();
void WaitOnControllerData();
void ProcessReply_ControllerCount(unsigned int data_size, char * data);
void ProcessReply_ControllerData(unsigned int data_size, char * data, unsigned int dev_idx);
void ProcessReply_ProtocolVersion(unsigned int data_size, char * data);
@@ -61,6 +61,8 @@ public:
void SendRequest_ControllerData(unsigned int dev_idx);
void SendRequest_ProtocolVersion();
void SendRequest_RGBController_ClearSegments(unsigned int dev_idx, int zone);
void SendRequest_RGBController_AddSegment(unsigned int dev_idx, unsigned char * data, unsigned int size);
void SendRequest_RGBController_ResizeZone(unsigned int dev_idx, int zone, int new_size);
void SendRequest_RGBController_UpdateLEDs(unsigned int dev_idx, unsigned char * data, unsigned int size);
+5 -1
View File
@@ -19,8 +19,10 @@
| 2: Add profile controls (Release 0.6) |
| 3: Add brightness field to modes (Release 0.7) |
| 4: Add segments field to zones, network plugins (Release 0.9) |
| 5: Zone flags, controller flags, resizable effects-only zones |
(Release 1.0) |
\*---------------------------------------------------------------------*/
#define OPENRGB_SDK_PROTOCOL_VERSION 4
#define OPENRGB_SDK_PROTOCOL_VERSION 5
/*-----------------------------------------------------*\
| Default Interface to bind to. |
@@ -73,6 +75,8 @@ enum
| RGBController class functions |
\*----------------------------------------------------------------------------------------------------------*/
NET_PACKET_ID_RGBCONTROLLER_RESIZEZONE = 1000, /* RGBController::ResizeZone() */
NET_PACKET_ID_RGBCONTROLLER_CLEARSEGMENTS = 1001, /* RGBController::ClearSegments() */
NET_PACKET_ID_RGBCONTROLLER_ADDSEGMENT = 1002, /* RGBController::AddSegment() */
NET_PACKET_ID_RGBCONTROLLER_UPDATELEDS = 1050, /* RGBController::UpdateLEDs() */
NET_PACKET_ID_RGBCONTROLLER_UPDATEZONELEDS = 1051, /* RGBController::UpdateZoneLEDs() */
+35
View File
@@ -932,6 +932,41 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo * client_info)
}
break;
}
break;
case NET_PACKET_ID_RGBCONTROLLER_CLEARSEGMENTS:
if(data == NULL)
{
break;
}
if((header.pkt_dev_idx < controllers.size()) && (header.pkt_size == sizeof(int)))
{
int zone;
memcpy(&zone, data, sizeof(int));
controllers[header.pkt_dev_idx]->ClearSegments(zone);
profile_manager->SaveProfile("sizes", true);
}
break;
case NET_PACKET_ID_RGBCONTROLLER_ADDSEGMENT:
{
/*---------------------------------------------------------*\
| Verify the segment description size (first 4 bytes of |
| data) matches the packet size in the header |
\*---------------------------------------------------------*/
if(header.pkt_size == *((unsigned int*)data))
{
if(header.pkt_dev_idx < controllers.size())
{
controllers[header.pkt_dev_idx]->SetSegmentDescription((unsigned char *)data);
profile_manager->SaveProfile("sizes", true);
}
}
}
break;
}
delete[] data;
+95 -141
View File
@@ -26,11 +26,45 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#-----------------------------------------------------------------------------------------------#
MAJOR = 0
MINOR = 9
REVISION = 1
VERSION = $$MAJOR"."$$MINOR$$REVISION
SUFFIX = 1.0rc1
SHORTHASH = $$system("git rev-parse --short=7 HEAD")
LASTTAG = "release_"$$MAJOR"."$$MINOR
COMMAND = "git rev-list --count "$$LASTTAG"..HEAD"
COMMITS = $$system($$COMMAND)
VERSION_NUM = $$MAJOR"."$$MINOR"."$$COMMITS
VERSION_STR = $$MAJOR"."$$MINOR
VERSION_DEB = $$VERSION_NUM
VERSION_WIX = $$VERSION_NUM
VERSION_AUR = $$VERSION_NUM
VERSION_RPM = $$VERSION_NUM
equals(SUFFIX, "git") {
VERSION_STR = $$VERSION_STR"+ ("$$SUFFIX$$COMMITS")"
VERSION_DEB = $$VERSION_DEB"~git"$$SHORTHASH
VERSION_AUR = $$VERSION_AUR".g"$$SHORTHASH
VERSION_RPM = $$VERSION_RPM"^git"$$SHORTHASH
} else {
!isEmpty(SUFFIX) {
VERSION_STR = $$VERSION_STR"+ ("$$SUFFIX")"
VERSION_DEB = $$VERSION_DEB"~"$$SUFFIX
VERSION_AUR = $$VERSION_AUR"."$$SUFFIX
VERSION_RPM = $$VERSION_RPM"^"$$SUFFIX
}
}
TARGET = OpenRGB
TEMPLATE = app
message("VERSION_NUM: "$$VERSION_NUM)
message("VERSION_STR: "$$VERSION_STR)
message("VERSION_SFX: "$$SUFFIX)
message("VERSION_DEB: "$$VERSION_DEB)
message("VERSION_WIX: "$$VERSION_WIX)
message("VERSION_AUR: "$$VERSION_AUR)
message("VERSION_RPM: "$$VERSION_RPM)
#-----------------------------------------------------------------------------------------------#
# Automatically generated build information #
#-----------------------------------------------------------------------------------------------#
@@ -40,10 +74,17 @@ freebsd:BUILDDATE = $$system(date -j -R -r "${SOURCE_DATE_EPOCH:-$(date +%
macx:BUILDDATE = $$system(date -j -R -r "${SOURCE_DATE_EPOCH:-$(date +%s)}")
GIT_COMMIT_ID = $$system(git log -n 1 --pretty=format:"%H")
GIT_COMMIT_DATE = $$system(git log -n 1 --pretty=format:"%ci")
GIT_BRANCH = $$system(git branch --show-current)
unix {
GIT_BRANCH = $$system(sh scripts/git-get-branch.sh)
}
else {
GIT_BRANCH = $$system(pwsh scripts/git-get-branch.ps1)
}
message("GIT_BRANCH: "$$GIT_BRANCH)
DEFINES += \
VERSION_STRING=\\"\"\"$$VERSION\\"\"\" \
VERSION_STRING=\\"\"\"$$VERSION_STR\\"\"\" \
BUILDDATE_STRING=\\"\"\"$$BUILDDATE\\"\"\" \
GIT_COMMIT_ID=\\"\"\"$$GIT_COMMIT_ID\\"\"\" \
GIT_COMMIT_DATE=\\"\"\"$$GIT_COMMIT_DATE\\"\"\" \
@@ -102,8 +143,8 @@ INCLUDEPATH +=
$$GUI_INCLUDES \
dependencies/ColorWheel \
dependencies/CRCpp/ \
dependencies/hueplusplus-1.1.0/include \
dependencies/hueplusplus-1.1.0/include/hueplusplus \
dependencies/hueplusplus-1.2.0/include \
dependencies/hueplusplus-1.2.0/include/hueplusplus \
dependencies/httplib \
dependencies/json/ \
dependencies/mdns \
@@ -129,7 +170,7 @@ HEADERS +=
$$CONTROLLER_H \
Colors.h \
dependencies/ColorWheel/ColorWheel.h \
dependencies/json/json.hpp \
dependencies/json/nlohmann/json.hpp \
LogManager.h \
NetworkClient.h \
NetworkProtocol.h \
@@ -138,6 +179,7 @@ HEADERS +=
PluginManager.h \
ProfileManager.h \
ResourceManager.h \
ResourceManagerInterface.h \
SettingsManager.h \
Detector.h \
DeviceDetector.h \
@@ -168,35 +210,35 @@ SOURCES +=
$$GUI_CPP \
$$CONTROLLER_CPP \
dependencies/ColorWheel/ColorWheel.cpp \
dependencies/hueplusplus-1.1.0/src/Action.cpp \
dependencies/hueplusplus-1.1.0/src/APICache.cpp \
dependencies/hueplusplus-1.1.0/src/BaseDevice.cpp \
dependencies/hueplusplus-1.1.0/src/BaseHttpHandler.cpp \
dependencies/hueplusplus-1.1.0/src/Bridge.cpp \
dependencies/hueplusplus-1.1.0/src/BridgeConfig.cpp \
dependencies/hueplusplus-1.1.0/src/CLIPSensors.cpp \
dependencies/hueplusplus-1.1.0/src/ColorUnits.cpp \
dependencies/hueplusplus-1.1.0/src/EntertainmentMode.cpp \
dependencies/hueplusplus-1.1.0/src/ExtendedColorHueStrategy.cpp \
dependencies/hueplusplus-1.1.0/src/ExtendedColorTemperatureStrategy.cpp \
dependencies/hueplusplus-1.1.0/src/Group.cpp \
dependencies/hueplusplus-1.1.0/src/HueCommandAPI.cpp \
dependencies/hueplusplus-1.1.0/src/HueDeviceTypes.cpp \
dependencies/hueplusplus-1.1.0/src/HueException.cpp \
dependencies/hueplusplus-1.1.0/src/Light.cpp \
dependencies/hueplusplus-1.1.0/src/ModelPictures.cpp \
dependencies/hueplusplus-1.1.0/src/NewDeviceList.cpp \
dependencies/hueplusplus-1.1.0/src/Scene.cpp \
dependencies/hueplusplus-1.1.0/src/Schedule.cpp \
dependencies/hueplusplus-1.1.0/src/Sensor.cpp \
dependencies/hueplusplus-1.1.0/src/SimpleBrightnessStrategy.cpp \
dependencies/hueplusplus-1.1.0/src/SimpleColorHueStrategy.cpp \
dependencies/hueplusplus-1.1.0/src/SimpleColorTemperatureStrategy.cpp \
dependencies/hueplusplus-1.1.0/src/StateTransaction.cpp \
dependencies/hueplusplus-1.1.0/src/TimePattern.cpp \
dependencies/hueplusplus-1.1.0/src/UPnP.cpp \
dependencies/hueplusplus-1.1.0/src/Utils.cpp \
dependencies/hueplusplus-1.1.0/src/ZLLSensors.cpp \
dependencies/hueplusplus-1.2.0/src/Action.cpp \
dependencies/hueplusplus-1.2.0/src/APICache.cpp \
dependencies/hueplusplus-1.2.0/src/BaseDevice.cpp \
dependencies/hueplusplus-1.2.0/src/BaseHttpHandler.cpp \
dependencies/hueplusplus-1.2.0/src/Bridge.cpp \
dependencies/hueplusplus-1.2.0/src/BridgeConfig.cpp \
dependencies/hueplusplus-1.2.0/src/CLIPSensors.cpp \
dependencies/hueplusplus-1.2.0/src/ColorUnits.cpp \
dependencies/hueplusplus-1.2.0/src/EntertainmentMode.cpp \
dependencies/hueplusplus-1.2.0/src/ExtendedColorHueStrategy.cpp \
dependencies/hueplusplus-1.2.0/src/ExtendedColorTemperatureStrategy.cpp \
dependencies/hueplusplus-1.2.0/src/Group.cpp \
dependencies/hueplusplus-1.2.0/src/HueCommandAPI.cpp \
dependencies/hueplusplus-1.2.0/src/HueDeviceTypes.cpp \
dependencies/hueplusplus-1.2.0/src/HueException.cpp \
dependencies/hueplusplus-1.2.0/src/Light.cpp \
dependencies/hueplusplus-1.2.0/src/ModelPictures.cpp \
dependencies/hueplusplus-1.2.0/src/NewDeviceList.cpp \
dependencies/hueplusplus-1.2.0/src/Scene.cpp \
dependencies/hueplusplus-1.2.0/src/Schedule.cpp \
dependencies/hueplusplus-1.2.0/src/Sensor.cpp \
dependencies/hueplusplus-1.2.0/src/SimpleBrightnessStrategy.cpp \
dependencies/hueplusplus-1.2.0/src/SimpleColorHueStrategy.cpp \
dependencies/hueplusplus-1.2.0/src/SimpleColorTemperatureStrategy.cpp \
dependencies/hueplusplus-1.2.0/src/StateTransaction.cpp \
dependencies/hueplusplus-1.2.0/src/TimePattern.cpp \
dependencies/hueplusplus-1.2.0/src/UPnP.cpp \
dependencies/hueplusplus-1.2.0/src/Utils.cpp \
dependencies/hueplusplus-1.2.0/src/ZLLSensors.cpp \
main.cpp \
cli.cpp \
dmiinfo/dmiinfo.cpp \
@@ -258,6 +300,7 @@ unix {
#-----------------------------------------------------------------------------------------------#
TRANSLATIONS += \
qt/i18n/OpenRGB_de_DE.ts \
qt/i18n/OpenRGB_el_GR.ts \
qt/i18n/OpenRGB_en_US.ts \
qt/i18n/OpenRGB_en_AU.ts \
qt/i18n/OpenRGB_en_GB.ts \
@@ -265,6 +308,7 @@ TRANSLATIONS +=
qt/i18n/OpenRGB_fr_FR.ts \
qt/i18n/OpenRGB_hr_HR.ts \
qt/i18n/OpenRGB_it_IT.ts \
qt/i18n/OpenRGB_ja_JP.ts \
qt/i18n/OpenRGB_ko_KR.ts \
qt/i18n/OpenRGB_ms_MY.ts \
qt/i18n/OpenRGB_pl_PL.ts \
@@ -282,110 +326,14 @@ win32:INCLUDEPATH +=
dependencies/hidapi-win/include \
dependencies/winring0/include \
dependencies/libusb-1.0.27/include \
dependencies/mbedtls-2.28.8/include \
dependencies/mbedtls-3.2.1/include \
dependencies/NVFC \
wmi/ \
win32:SOURCES += $$CONTROLLER_CPP_WINDOWS
win32:SOURCES += \
dependencies/hueplusplus-1.1.0/src/WinHttpHandler.cpp \
dependencies/mbedtls-2.28.8/library/aes.c \
dependencies/mbedtls-2.28.8/library/aesni.c \
dependencies/mbedtls-2.28.8/library/arc4.c \
dependencies/mbedtls-2.28.8/library/aria.c \
dependencies/mbedtls-2.28.8/library/asn1parse.c \
dependencies/mbedtls-2.28.8/library/asn1write.c \
dependencies/mbedtls-2.28.8/library/base64.c \
dependencies/mbedtls-2.28.8/library/bignum.c \
dependencies/mbedtls-2.28.8/library/blowfish.c \
dependencies/mbedtls-2.28.8/library/camellia.c \
dependencies/mbedtls-2.28.8/library/ccm.c \
dependencies/mbedtls-2.28.8/library/certs.c \
dependencies/mbedtls-2.28.8/library/chacha20.c \
dependencies/mbedtls-2.28.8/library/chachapoly.c \
dependencies/mbedtls-2.28.8/library/cipher.c \
dependencies/mbedtls-2.28.8/library/cipher_wrap.c \
dependencies/mbedtls-2.28.8/library/cmac.c \
dependencies/mbedtls-2.28.8/library/constant_time.c \
dependencies/mbedtls-2.28.8/library/ctr_drbg.c \
dependencies/mbedtls-2.28.8/library/debug.c \
dependencies/mbedtls-2.28.8/library/des.c \
dependencies/mbedtls-2.28.8/library/dhm.c \
dependencies/mbedtls-2.28.8/library/ecdh.c \
dependencies/mbedtls-2.28.8/library/ecdsa.c \
dependencies/mbedtls-2.28.8/library/ecjpake.c \
dependencies/mbedtls-2.28.8/library/ecp.c \
dependencies/mbedtls-2.28.8/library/ecp_curves.c \
dependencies/mbedtls-2.28.8/library/entropy.c \
dependencies/mbedtls-2.28.8/library/entropy_poll.c \
dependencies/mbedtls-2.28.8/library/error.c \
dependencies/mbedtls-2.28.8/library/gcm.c \
dependencies/mbedtls-2.28.8/library/havege.c \
dependencies/mbedtls-2.28.8/library/hkdf.c \
dependencies/mbedtls-2.28.8/library/hmac_drbg.c \
dependencies/mbedtls-2.28.8/library/md2.c \
dependencies/mbedtls-2.28.8/library/md4.c \
dependencies/mbedtls-2.28.8/library/md5.c \
dependencies/mbedtls-2.28.8/library/md.c \
dependencies/mbedtls-2.28.8/library/memory_buffer_alloc.c \
dependencies/mbedtls-2.28.8/library/mps_reader.c \
dependencies/mbedtls-2.28.8/library/mps_trace.c \
dependencies/mbedtls-2.28.8/library/net_sockets.c \
dependencies/mbedtls-2.28.8/library/nist_kw.c \
dependencies/mbedtls-2.28.8/library/oid.c \
dependencies/mbedtls-2.28.8/library/padlock.c \
dependencies/mbedtls-2.28.8/library/pem.c \
dependencies/mbedtls-2.28.8/library/pk.c \
dependencies/mbedtls-2.28.8/library/pkcs11.c \
dependencies/mbedtls-2.28.8/library/pkcs12.c \
dependencies/mbedtls-2.28.8/library/pkcs5.c \
dependencies/mbedtls-2.28.8/library/pkparse.c \
dependencies/mbedtls-2.28.8/library/pk_wrap.c \
dependencies/mbedtls-2.28.8/library/pkwrite.c \
dependencies/mbedtls-2.28.8/library/platform.c \
dependencies/mbedtls-2.28.8/library/platform_util.c \
dependencies/mbedtls-2.28.8/library/poly1305.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_aead.c \
dependencies/mbedtls-2.28.8/library/psa_crypto.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_cipher.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_client.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_driver_wrappers.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_ecp.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_hash.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_mac.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_rsa.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_se.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_slot_management.c \
dependencies/mbedtls-2.28.8/library/psa_crypto_storage.c \
dependencies/mbedtls-2.28.8/library/psa_its_file.c \
dependencies/mbedtls-2.28.8/library/ripemd160.c \
dependencies/mbedtls-2.28.8/library/rsa.c \
dependencies/mbedtls-2.28.8/library/rsa_internal.c \
dependencies/mbedtls-2.28.8/library/sha1.c \
dependencies/mbedtls-2.28.8/library/sha256.c \
dependencies/mbedtls-2.28.8/library/sha512.c \
dependencies/mbedtls-2.28.8/library/ssl_cache.c \
dependencies/mbedtls-2.28.8/library/ssl_ciphersuites.c \
dependencies/mbedtls-2.28.8/library/ssl_cli.c \
dependencies/mbedtls-2.28.8/library/ssl_cookie.c \
dependencies/mbedtls-2.28.8/library/ssl_msg.c \
dependencies/mbedtls-2.28.8/library/ssl_srv.c \
dependencies/mbedtls-2.28.8/library/ssl_ticket.c \
dependencies/mbedtls-2.28.8/library/ssl_tls13_keys.c \
dependencies/mbedtls-2.28.8/library/ssl_tls.c \
dependencies/mbedtls-2.28.8/library/threading.c \
dependencies/mbedtls-2.28.8/library/timing.c \
dependencies/mbedtls-2.28.8/library/version.c \
dependencies/mbedtls-2.28.8/library/version_features.c \
dependencies/mbedtls-2.28.8/library/x509.c \
dependencies/mbedtls-2.28.8/library/x509_create.c \
dependencies/mbedtls-2.28.8/library/x509_crl.c \
dependencies/mbedtls-2.28.8/library/x509_crt.c \
dependencies/mbedtls-2.28.8/library/x509_csr.c \
dependencies/mbedtls-2.28.8/library/x509write_crt.c \
dependencies/mbedtls-2.28.8/library/x509write_csr.c \
dependencies/mbedtls-2.28.8/library/xtea.c \
dependencies/hueplusplus-1.2.0/src/WinHttpHandler.cpp \
dependencies/NVFC/nvapi.cpp \
i2c_smbus/i2c_smbus_amdadl.cpp \
i2c_smbus/i2c_smbus_i801.cpp \
@@ -421,6 +369,7 @@ win32:contains(QMAKE_TARGET.arch, x86_64) {
-L"$$PWD/dependencies/winring0/x64/" -lWinRing0x64 \
-L"$$PWD/dependencies/libusb-1.0.27/VS2019/MS64/dll" -llibusb-1.0 \
-L"$$PWD/dependencies/hidapi-win/x64/" -lhidapi \
-L"$$PWD/dependencies/mbedtls-3.2.1/lib/x64/" -lmbedcrypto -lmbedtls -lmbedx509 \
}
win32:contains(QMAKE_TARGET.arch, x86) {
@@ -430,6 +379,7 @@ win32:contains(QMAKE_TARGET.arch, x86) {
-L"$$PWD/dependencies/winring0/Win32/" -lWinRing0 \
-L"$$PWD/dependencies/libusb-1.0.27/VS2019/MS32/dll" -llibusb-1.0 \
-L"$$PWD/dependencies/hidapi-win/x86/" -lhidapi \
-L"$$PWD/dependencies/mbedtls-3.2.1/lib/x86/" -lmbedcrypto -lmbedtls -lmbedx509 \
}
win32:DEFINES -= \
@@ -513,10 +463,10 @@ contains(QMAKE_PLATFORM, linux) {
INCLUDEPATH += \
dependencies/NVFC \
/usr/include/mbedtls2/ \
/usr/include/mbedtls/ \
LIBS += \
-L/usr/lib/mbedtls2/ \
-L/usr/lib/mbedtls/ \
-lmbedx509 \
-lmbedtls \
-lmbedcrypto \
@@ -557,7 +507,7 @@ contains(QMAKE_PLATFORM, linux) {
SOURCES += $$CONTROLLER_CPP_LINUX
SOURCES += \
dependencies/hueplusplus-1.1.0/src/LinHttpHandler.cpp \
dependencies/hueplusplus-1.2.0/src/LinHttpHandler.cpp \
dependencies/NVFC/nvapi.cpp \
i2c_smbus/i2c_smbus_linux.cpp \
scsiapi/scsiapi_linux.c \
@@ -683,7 +633,7 @@ contains(QMAKE_PLATFORM, freebsd) {
SOURCES += $$CONTROLLER_CPP_FREEBSD
SOURCES += \
dependencies/hueplusplus-1.1.0/src/LinHttpHandler.cpp \
dependencies/hueplusplus-1.2.0/src/LinHttpHandler.cpp \
serial_port/find_usb_serial_port_linux.cpp \
AutoStart/AutoStart-FreeBSD.cpp \
SuspendResume/SuspendResume_Linux_FreeBSD.cpp \
@@ -751,7 +701,7 @@ macx {
HEADERS += $$CONTROLLER_H_MACOS
SOURCES += \
dependencies/hueplusplus-1.1.0/src/LinHttpHandler.cpp \
dependencies/hueplusplus-1.2.0/src/LinHttpHandler.cpp \
serial_port/find_usb_serial_port_macos.cpp \
AutoStart/AutoStart-MacOS.cpp \
qt/macutils.mm \
@@ -759,8 +709,8 @@ macx {
SOURCES += $$CONTROLLER_CPP_MACOS
# Use mbedtls v2 instead of latest
MBEDTLS_PREFIX = $$system(brew --prefix mbedtls@2)
# Use mbedtls
MBEDTLS_PREFIX = $$system(brew --prefix mbedtls)
INCLUDEPATH += \
$$MBEDTLS_PREFIX/include \
@@ -804,11 +754,15 @@ macx:contains(QMAKE_HOST.arch, x86_64) {
SOURCES += \
i2c_smbus/i2c_smbus_i801.cpp \
i2c_smbus/i2c_smbus_nct6775.cpp \
i2c_smbus/i2c_smbus_piix4.cpp \
scsiapi/scsiapi_macos.c \
HEADERS += \
dependencies/macUSPCIO/macUSPCIOAccess.h \
i2c_smbus/i2c_smbus_i801.h \
i2c_smbus/i2c_smbus_nct6775.h \
i2c_smbus/i2c_smbus_piix4.h \
LIBS += \
-L/usr/local/lib \
+4 -3
View File
@@ -15,7 +15,7 @@
#include <QtPlugin>
#include <QLabel>
#include <QMenu>
#include "ResourceManager.h"
#include "ResourceManagerInterface.h"
#define OpenRGBPluginInterface_IID "com.OpenRGBPluginInterface"
@@ -25,8 +25,9 @@
| 1: OpenRGB 0.61 First versioned API, introduced with plugin settings changes |
| 2: OpenRGB 0.7 First released versioned API, callback unregister functions in ResourceManager |
| 3: OpenRGB 0.9 Use filesystem::path for paths, Added segments |
| 4: OpenRGB 1.0 Resizable effects-only zones, zone flags |
\*-----------------------------------------------------------------------------------------------------*/
#define OPENRGB_PLUGIN_API_VERSION 3
#define OPENRGB_PLUGIN_API_VERSION 4
/*-----------------------------------------------------------------------------------------------------*\
| Plugin Tab Location Values |
@@ -76,7 +77,7 @@ public:
/*-------------------------------------------------------------------------------------------------*\
| Plugin Functionality |
\*-------------------------------------------------------------------------------------------------*/
virtual void Load(bool dark_theme, ResourceManager* resource_manager_ptr) = 0;
virtual void Load(ResourceManagerInterface* resource_manager_ptr) = 0;
virtual QWidget* GetWidget() = 0;
virtual QMenu* GetTrayMenu() = 0;
virtual void Unload() = 0;
+56 -8
View File
@@ -12,6 +12,11 @@
#include "PluginManager.h"
#include "OpenRGBThemeManager.h"
#include "SettingsManager.h"
#include "ResourceManager.h"
#ifdef _WIN32
#include <Windows.h>
#endif
PluginManager::PluginManager()
{
@@ -64,6 +69,24 @@ void PluginManager::ScanAndLoadPlugins()
\*---------------------------------------------------------*/
ScanAndLoadPluginsFrom(OPENRGB_SYSTEM_PLUGIN_DIRECTORY, true);
#endif
#ifdef _WIN32
/*---------------------------------------------------------*\
| Get the exe folder plugins directory (Windows) |
| |
| On Windows, system plugins are located in a folder called |
| "plugins" inside the folder where the OpenRGB.exe file is |
| installed. Typically, C:\Program Files\OpenRGB but other |
| install paths are allowed. |
\*---------------------------------------------------------*/
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
filesystem::path exe_dir(path);
exe_dir = exe_dir.remove_filename() / plugins_path;
ScanAndLoadPluginsFrom(exe_dir, true);
#endif
}
void PluginManager::ScanAndLoadPluginsFrom(const filesystem::path & plugins_dir, bool is_system)
@@ -105,6 +128,38 @@ void PluginManager::AddPlugin(const filesystem::path& path, bool is_system)
unsigned int plugin_idx;
/*---------------------------------------------------------------------*\
| Open plugin settings |
\*---------------------------------------------------------------------*/
json plugin_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Plugins");
/*---------------------------------------------------------------------*\
| Check if this plugin is on the remove list |
\*---------------------------------------------------------------------*/
if(plugin_settings.contains("plugins_remove"))
{
for(unsigned int plugin_remove_idx = 0; plugin_remove_idx < plugin_settings["plugins_remove"].size(); plugin_remove_idx++)
{
LOG_WARNING("[PluginManager] Checking remove %d, %s", plugin_remove_idx, to_string(plugin_settings["plugins_remove"][plugin_remove_idx]).c_str());
if(plugin_settings["plugins_remove"][plugin_remove_idx] == path.generic_u8string())
{
/*---------------------------------------------------------*\
| Delete the plugin file |
\*---------------------------------------------------------*/
filesystem::remove(path);
}
/*-----------------------------------------------------------------*\
| Erase the plugin from the remove list |
\*-----------------------------------------------------------------*/
plugin_settings["plugins_remove"].erase(plugin_remove_idx);
ResourceManager::get()->GetSettingsManager()->SetSettings("Plugins", plugin_settings);
ResourceManager::get()->GetSettingsManager()->SaveSettings();
}
}
/*---------------------------------------------------------------------*\
| Search active plugins to see if this path already exists |
\*---------------------------------------------------------------------*/
@@ -160,11 +215,6 @@ void PluginManager::AddPlugin(const filesystem::path& path, bool is_system)
bool found = false;
unsigned int plugin_ct = 0;
/*-----------------------------------------------------*\
| Open plugin list and check if plugin is in the list |
\*-----------------------------------------------------*/
json plugin_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Plugins");
if(plugin_settings.contains("plugins"))
{
plugin_ct = (unsigned int)plugin_settings["plugins"].size();
@@ -374,8 +424,6 @@ void PluginManager::LoadPlugin(OpenRGBPluginEntry* plugin_entry)
QObject* instance = plugin_entry->loader->instance();
bool dark_theme = OpenRGBThemeManager::IsDarkTheme();
if(instance)
{
OpenRGBPluginInterface* plugin = qobject_cast<OpenRGBPluginInterface*>(instance);
@@ -386,7 +434,7 @@ void PluginManager::LoadPlugin(OpenRGBPluginEntry* plugin_entry)
{
plugin_entry->plugin = plugin;
plugin->Load(dark_theme, ResourceManager::get());
plugin->Load(ResourceManager::get());
/*-------------------------------------------------*\
| Call the Add Plugin callback |
+18 -3
View File
@@ -83,6 +83,16 @@ bool ProfileManager::SaveProfile(std::string profile_name, bool sizes)
\*---------------------------------------------------------*/
for(std::size_t controller_index = 0; controller_index < controllers.size(); controller_index++)
{
/*-----------------------------------------------------*\
| Ignore remote and virtual controllers when saving |
| sizes |
\*-----------------------------------------------------*/
if(sizes && (controllers[controller_index]->flags & CONTROLLER_FLAG_REMOTE
|| controllers[controller_index]->flags & CONTROLLER_FLAG_VIRTUAL))
{
break;
}
unsigned char *controller_data = controllers[controller_index]->GetDeviceDescription(profile_version);
unsigned int controller_size;
@@ -291,14 +301,19 @@ bool ProfileManager::LoadDeviceFromListWithOptions
&&(temp_controller->zones[zone_idx].leds_min == load_controller->zones[zone_idx].leds_min )
&&(temp_controller->zones[zone_idx].leds_max == load_controller->zones[zone_idx].leds_max ))
{
if (temp_controller->zones[zone_idx].leds_count != load_controller->zones[zone_idx].leds_count)
if(temp_controller->zones[zone_idx].leds_count != load_controller->zones[zone_idx].leds_count)
{
load_controller->ResizeZone((int)zone_idx, temp_controller->zones[zone_idx].leds_count);
}
for(std::size_t segment_idx = 0; segment_idx < temp_controller->zones[zone_idx].segments.size(); segment_idx++)
if(temp_controller->zones[zone_idx].segments.size() != load_controller->zones[zone_idx].segments.size())
{
load_controller->zones[zone_idx].segments.push_back(temp_controller->zones[zone_idx].segments[segment_idx]);
load_controller->zones[zone_idx].segments.clear();
for(std::size_t segment_idx = 0; segment_idx < temp_controller->zones[zone_idx].segments.size(); segment_idx++)
{
load_controller->zones[zone_idx].segments.push_back(temp_controller->zones[zone_idx].segments[segment_idx]);
}
}
}
}
+452 -27
View File
@@ -37,8 +37,28 @@ mode::~mode()
colors.clear();
}
zone::zone()
{
name = "";
type = 0;
leds = NULL;
colors = NULL;
start_idx = 0;
leds_count = 0;
leds_min = 0;
leds_max = 0;
matrix_map = NULL;
flags = 0;
}
zone::~zone()
{
}
RGBController::RGBController()
{
flags = 0;
DeviceThreadRunning = true;
DeviceCallThread = new std::thread(&RGBController::DeviceCallThreadFunction, this);
}
@@ -55,6 +75,59 @@ RGBController::~RGBController()
modes.clear();
}
std::string RGBController::GetName()
{
return(name);
}
std::string RGBController::GetVendor()
{
return(vendor);
}
std::string RGBController::GetDescription()
{
return(description);
}
std::string RGBController::GetVersion()
{
return(version);
}
std::string RGBController::GetSerial()
{
return(serial);
}
std::string RGBController::GetLocation()
{
return(location);
}
std::string RGBController::GetModeName(unsigned int mode)
{
return(modes[mode].name);
}
std::string RGBController::GetZoneName(unsigned int zone)
{
return(zones[zone].name);
}
std::string RGBController::GetLEDName(unsigned int led)
{
if(led < led_alt_names.size())
{
if(led_alt_names[led] != "")
{
return(led_alt_names[led]);
}
}
return(leds[led].name);
}
unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_version)
{
unsigned int data_ptr = 0;
@@ -73,6 +146,7 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
unsigned short num_zones = (unsigned short)zones.size();
unsigned short num_leds = (unsigned short)leds.size();
unsigned short num_colors = (unsigned short)colors.size();
unsigned short num_led_alt_names= (unsigned short)led_alt_names.size();
unsigned short *mode_name_len = new unsigned short[num_modes];
unsigned short *zone_name_len = new unsigned short[num_zones];
@@ -144,7 +218,7 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
}
else
{
zone_matrix_len[zone_index] = (unsigned short)(2 * sizeof(unsigned int)) + (zones[zone_index].matrix_map->height * zones[zone_index].matrix_map->width * sizeof(unsigned int));
zone_matrix_len[zone_index] = (unsigned short)((2 * sizeof(unsigned int)) + (zones[zone_index].matrix_map->height * zones[zone_index].matrix_map->width * sizeof(unsigned int)));
}
data_size += sizeof(zone_matrix_len[zone_index]);
@@ -174,6 +248,14 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
data_size += sizeof(zones[zone_index].segments[segment_index].leds_count);
}
}
/*---------------------------------------------------------*\
| Zone flags |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
data_size += sizeof(unsigned int);
}
}
data_size += sizeof(num_leds);
@@ -187,6 +269,34 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
data_size += sizeof(leds[led_index].value);
}
/*---------------------------------------------------------*\
| LED alternate names |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
/*-----------------------------------------------------*\
| Number of LED alternate names |
\*-----------------------------------------------------*/
data_size += sizeof(num_led_alt_names);
/*-----------------------------------------------------*\
| LED alternate name strings |
\*-----------------------------------------------------*/
for(std::size_t led_idx = 0; led_idx < led_alt_names.size(); led_idx++)
{
data_size += sizeof(unsigned short);
data_size += strlen(led_alt_names[led_idx].c_str()) + 1;
}
}
/*---------------------------------------------------------*\
| Controller flags |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
data_size += sizeof(flags);
}
data_size += sizeof(num_colors);
data_size += num_colors * sizeof(RGBColor);
@@ -412,22 +522,56 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
data_ptr += sizeof(zones[zone_index].type);
/*---------------------------------------------------------*\
| Copy in zone minimum LED count (data) |
| Check for resizable effects-only zone. For protocol |
| versions that do not support this feature, we have to |
| overwrite the leds_min/max/count parameters to 1 so that |
| the zone appears a fixed size to older clients. |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].leds_min, sizeof(zones[zone_index].leds_min));
data_ptr += sizeof(zones[zone_index].leds_min);
if((zones[zone_index].flags & ZONE_FLAG_RESIZE_EFFECTS_ONLY) && (protocol_version < 5))
{
/*---------------------------------------------------------*\
| Create a temporary variable to hold the fixed value of 1 |
\*---------------------------------------------------------*/
unsigned int tmp_size = 1;
/*---------------------------------------------------------*\
| Copy in zone maximum LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].leds_max, sizeof(zones[zone_index].leds_max));
data_ptr += sizeof(zones[zone_index].leds_max);
/*---------------------------------------------------------*\
| Copy in temporary minimum LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &tmp_size, sizeof(tmp_size));
data_ptr += sizeof(tmp_size);
/*---------------------------------------------------------*\
| Copy in zone LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].leds_count, sizeof(zones[zone_index].leds_count));
data_ptr += sizeof(zones[zone_index].leds_count);
/*---------------------------------------------------------*\
| Copy in temporary maximum LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &tmp_size, sizeof(tmp_size));
data_ptr += sizeof(tmp_size);
/*---------------------------------------------------------*\
| Copy in temporary LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &tmp_size, sizeof(tmp_size));
data_ptr += sizeof(tmp_size);
}
else
{
/*---------------------------------------------------------*\
| Copy in zone minimum LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].leds_min, sizeof(zones[zone_index].leds_min));
data_ptr += sizeof(zones[zone_index].leds_min);
/*---------------------------------------------------------*\
| Copy in zone maximum LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].leds_max, sizeof(zones[zone_index].leds_max));
data_ptr += sizeof(zones[zone_index].leds_max);
/*---------------------------------------------------------*\
| Copy in zone LED count (data) |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].leds_count, sizeof(zones[zone_index].leds_count));
data_ptr += sizeof(zones[zone_index].leds_count);
}
/*---------------------------------------------------------*\
| Copy in size of zone matrix |
@@ -504,12 +648,24 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
data_ptr += sizeof(zones[zone_index].segments[segment_index].start_idx);
/*---------------------------------------------------------*\
| Segment LED count data |
| Segment LED count data |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].segments[segment_index].leds_count, sizeof(zones[zone_index].segments[segment_index].leds_count));
data_ptr += sizeof(zones[zone_index].segments[segment_index].leds_count);
}
}
/*---------------------------------------------------------*\
| Copy in zone flags |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
/*---------------------------------------------------------*\
| Zone flags |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zones[zone_index].flags, sizeof(zones[zone_index].flags));
data_ptr += sizeof(zones[zone_index].flags);
}
}
/*---------------------------------------------------------*\
@@ -558,6 +714,41 @@ unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_versio
data_ptr += sizeof(colors[color_index]);
}
/*---------------------------------------------------------*\
| LED alternate names data |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
/*---------------------------------------------------------*\
| Number of LED alternate name strings |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &num_led_alt_names, sizeof(num_led_alt_names));
data_ptr += sizeof(num_led_alt_names);
for(std::size_t led_idx = 0; led_idx < led_alt_names.size(); led_idx++)
{
/*---------------------------------------------------------*\
| Copy in LED alternate name (size+data) |
\*---------------------------------------------------------*/
unsigned short string_length = strlen(led_alt_names[led_idx].c_str()) + 1;
memcpy(&data_buf[data_ptr], &string_length, sizeof(string_length));
data_ptr += sizeof(string_length);
strcpy((char *)&data_buf[data_ptr], led_alt_names[led_idx].c_str());
data_ptr += string_length;
}
}
/*---------------------------------------------------------*\
| Controller flags data |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
memcpy(&data_buf[data_ptr], &flags, sizeof(flags));
data_ptr += sizeof(flags);
}
delete[] mode_name_len;
delete[] zone_name_len;
delete[] led_name_len;
@@ -918,6 +1109,16 @@ void RGBController::ReadDeviceDescription(unsigned char* data_buf, unsigned int
new_zone.segments.push_back(new_segment);
}
}
/*---------------------------------------------------------*\
| Copy in zone flags |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
memcpy(&new_zone.flags, &data_buf[data_ptr], sizeof(new_zone.flags));
data_ptr += sizeof(new_zone.flags);
}
zones.push_back(new_zone);
}
@@ -977,6 +1178,43 @@ void RGBController::ReadDeviceDescription(unsigned char* data_buf, unsigned int
colors.push_back(new_color);
}
/*---------------------------------------------------------*\
| Copy in LED alternate names data |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
/*---------------------------------------------------------*\
| Copy in number of LED alternate names |
\*---------------------------------------------------------*/
unsigned short num_led_alt_names;
memcpy(&num_led_alt_names, &data_buf[data_ptr], sizeof(num_led_alt_names));
data_ptr += sizeof(num_led_alt_names);
for(int led_idx = 0; led_idx < num_led_alt_names; led_idx++)
{
unsigned short string_length = 0;
/*---------------------------------------------------------*\
| Copy in LED alternate name string (size+data) |
\*---------------------------------------------------------*/
memcpy(&string_length, &data_buf[data_ptr], sizeof(string_length));
data_ptr += sizeof(string_length);
led_alt_names.push_back((char *)&data_buf[data_ptr]);
data_ptr += string_length;
}
}
/*---------------------------------------------------------*\
| Copy in controller flags data |
\*---------------------------------------------------------*/
if(protocol_version >= 5)
{
memcpy(&flags, &data_buf[data_ptr], sizeof(flags));
data_ptr += sizeof(flags);
}
/*---------------------------------------------------------*\
| Setup colors |
\*---------------------------------------------------------*/
@@ -1512,9 +1750,152 @@ void RGBController::SetSingleLEDColorDescription(unsigned char* data_buf)
memcpy(&colors[led_idx], &data_buf[sizeof(led_idx)], sizeof(RGBColor));
}
unsigned char * RGBController::GetSegmentDescription(int zone, segment new_segment)
{
unsigned int data_ptr = 0;
unsigned int data_size = 0;
/*---------------------------------------------------------*\
| Length of data size |
\*---------------------------------------------------------*/
data_size += sizeof(data_size);
/*---------------------------------------------------------*\
| Length of zone index |
\*---------------------------------------------------------*/
data_size += sizeof(zone);
/*---------------------------------------------------------*\
| Length of segment name string |
\*---------------------------------------------------------*/
data_size += sizeof(unsigned short);
/*---------------------------------------------------------*\
| Segment name string data |
\*---------------------------------------------------------*/
data_size += strlen(new_segment.name.c_str()) + 1;
data_size += sizeof(new_segment.type);
data_size += sizeof(new_segment.start_idx);
data_size += sizeof(new_segment.leds_count);
/*---------------------------------------------------------*\
| Create data buffer |
\*---------------------------------------------------------*/
unsigned char *data_buf = new unsigned char[data_size];
/*---------------------------------------------------------*\
| Copy in data size |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &data_size, sizeof(data_size));
data_ptr += sizeof(data_size);
/*---------------------------------------------------------*\
| Copy in zone index |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &zone, sizeof(zone));
data_ptr += sizeof(zone);
/*---------------------------------------------------------*\
| Length of segment name string |
\*---------------------------------------------------------*/
unsigned short segment_name_length = strlen(new_segment.name.c_str()) + 1;
memcpy(&data_buf[data_ptr], &segment_name_length, sizeof(segment_name_length));
data_ptr += sizeof(segment_name_length);
/*---------------------------------------------------------*\
| Segment name string data |
\*---------------------------------------------------------*/
strcpy((char *)&data_buf[data_ptr], new_segment.name.c_str());
data_ptr += segment_name_length;
/*---------------------------------------------------------*\
| Segment type data |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &new_segment.type, sizeof(new_segment.type));
data_ptr += sizeof(new_segment.type);
/*---------------------------------------------------------*\
| Segment start index data |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &new_segment.start_idx, sizeof(new_segment.start_idx));
data_ptr += sizeof(new_segment.start_idx);
/*---------------------------------------------------------*\
| Segment LED count data |
\*---------------------------------------------------------*/
memcpy(&data_buf[data_ptr], &new_segment.leds_count, sizeof(new_segment.leds_count));
data_ptr += sizeof(new_segment.leds_count);
return(data_buf);
}
void RGBController::SetSegmentDescription(unsigned char* data_buf)
{
unsigned int data_ptr = sizeof(unsigned int);
/*---------------------------------------------------------*\
| Copy in zone index |
\*---------------------------------------------------------*/
unsigned int zone_idx;
memcpy(&zone_idx, &data_buf[data_ptr], sizeof(zone_idx));
data_ptr += sizeof(zone_idx);
/*---------------------------------------------------------*\
| Length of segment name string |
\*---------------------------------------------------------*/
unsigned short segment_name_length;
memcpy(&segment_name_length, &data_buf[data_ptr], sizeof(segment_name_length));
data_ptr += sizeof(segment_name_length);
/*---------------------------------------------------------*\
| Segment name string data |
\*---------------------------------------------------------*/
char * segment_name = new char[segment_name_length];
memcpy(segment_name, &data_buf[data_ptr], segment_name_length);
data_ptr += segment_name_length;
/*---------------------------------------------------------*\
| Segment type data |
\*---------------------------------------------------------*/
zone_type segment_type;
memcpy(&segment_type, &data_buf[data_ptr], sizeof(segment_type));
data_ptr += sizeof(segment_type);
/*---------------------------------------------------------*\
| Segment start index data |
\*---------------------------------------------------------*/
unsigned int segment_start_idx;
memcpy(&segment_start_idx, &data_buf[data_ptr], sizeof(segment_start_idx));
data_ptr += sizeof(segment_start_idx);
/*---------------------------------------------------------*\
| Segment LED count data |
\*---------------------------------------------------------*/
unsigned int segment_leds_count;
memcpy(&segment_leds_count, &data_buf[data_ptr], sizeof(segment_leds_count));
data_ptr += sizeof(segment_leds_count);
/*---------------------------------------------------------*\
| Add new segment |
\*---------------------------------------------------------*/
segment new_segment;
new_segment.name = segment_name;
new_segment.type = segment_type;
new_segment.start_idx = segment_start_idx;
new_segment.leds_count = segment_leds_count;
AddSegment(zone_idx, new_segment);
delete[] segment_name;
}
void RGBController::SetupColors()
{
unsigned int total_led_count;
unsigned int zone_led_count;
/*---------------------------------------------------------*\
| Determine total number of LEDs on the device |
@@ -1523,7 +1904,7 @@ void RGBController::SetupColors()
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
total_led_count += zones[zone_idx].leds_count;
total_led_count += GetLEDsInZone(zone_idx);
}
/*---------------------------------------------------------*\
@@ -1538,9 +1919,10 @@ void RGBController::SetupColors()
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
zones[zone_idx].start_idx=total_led_count;
zones[zone_idx].start_idx = total_led_count;
zone_led_count = GetLEDsInZone(zone_idx);
if((colors.size() > 0) && (zones[zone_idx].leds_count > 0))
if((colors.size() > 0) && (zone_led_count > 0))
{
zones[zone_idx].colors = &colors[total_led_count];
}
@@ -1549,7 +1931,7 @@ void RGBController::SetupColors()
zones[zone_idx].colors = NULL;
}
if((leds.size() > 0) && (zones[zone_idx].leds_count > 0))
if((leds.size() > 0) && (zone_led_count > 0))
{
zones[zone_idx].leds = &leds[total_led_count];
}
@@ -1559,10 +1941,25 @@ void RGBController::SetupColors()
}
total_led_count += zones[zone_idx].leds_count;
total_led_count += zone_led_count;
}
}
unsigned int RGBController::GetLEDsInZone(unsigned int zone)
{
unsigned int leds_count = zones[zone].leds_count;
if(zones[zone].flags & ZONE_FLAG_RESIZE_EFFECTS_ONLY)
{
if(leds_count > 1)
{
leds_count = 1;
}
}
return(leds_count);
}
RGBColor RGBController::GetLED(unsigned int led)
{
if(led < colors.size())
@@ -1593,7 +1990,7 @@ void RGBController::SetAllLEDs(RGBColor color)
void RGBController::SetAllZoneLEDs(int zone, RGBColor color)
{
for (std::size_t color_idx = 0; color_idx < zones[zone].leds_count; color_idx++)
for (std::size_t color_idx = 0; color_idx < GetLEDsInZone(zone); color_idx++)
{
zones[zone].colors[color_idx] = color;
}
@@ -1720,13 +2117,29 @@ void RGBController::DeviceCallThreadFunction()
{
if(CallFlag_UpdateMode.load() == true)
{
DeviceUpdateMode();
CallFlag_UpdateMode = false;
if(flags & CONTROLLER_FLAG_RESET_BEFORE_UPDATE)
{
CallFlag_UpdateMode = false;
DeviceUpdateMode();
}
else
{
DeviceUpdateMode();
CallFlag_UpdateMode = false;
}
}
if(CallFlag_UpdateLEDs.load() == true)
{
DeviceUpdateLEDs();
CallFlag_UpdateLEDs = false;
if(flags & CONTROLLER_FLAG_RESET_BEFORE_UPDATE)
{
CallFlag_UpdateLEDs = false;
DeviceUpdateLEDs();
}
else
{
DeviceUpdateLEDs();
CallFlag_UpdateLEDs = false;
}
}
else
{
@@ -1742,6 +2155,16 @@ void RGBController::DeviceSaveMode()
\*-------------------------------------------------*/
}
void RGBController::ClearSegments(int zone)
{
zones[zone].segments.clear();
}
void RGBController::AddSegment(int zone, segment new_segment)
{
zones[zone].segments.push_back(new_segment);
}
std::string device_type_to_str(device_type type)
{
switch(type)
@@ -1772,12 +2195,14 @@ std::string device_type_to_str(device_type type)
return "Light";
case DEVICE_TYPE_SPEAKER:
return "Speaker";
case DEVICE_TYPE_STORAGE:
return "Storage";
case DEVICE_TYPE_VIRTUAL:
return "Virtual";
case DEVICE_TYPE_STORAGE:
return "Storage";
case DEVICE_TYPE_CASE:
return "Case";
case DEVICE_TYPE_MICROPHONE:
return "Microphone";
case DEVICE_TYPE_ACCESSORY:
return "Accessory";
case DEVICE_TYPE_KEYPAD:
+69 -3
View File
@@ -116,6 +116,15 @@ typedef struct
unsigned int value; /* Device-specific LED value */
} led;
/*------------------------------------------------------------------*\
| Zone Flags |
\*------------------------------------------------------------------*/
enum
{
ZONE_FLAG_RESIZE_EFFECTS_ONLY = (1 << 0), /* Zone is resizable, but only for */
/* effects - treat as single LED */
};
/*------------------------------------------------------------------*\
| Zone Types |
\*------------------------------------------------------------------*/
@@ -150,10 +159,11 @@ typedef struct
} segment;
/*------------------------------------------------------------------*\
| Zone Struct |
| Zone Class |
\*------------------------------------------------------------------*/
typedef struct
class zone
{
public:
std::string name; /* Zone name */
zone_type type; /* Zone type */
led * leds; /* List of LEDs in zone */
@@ -164,7 +174,14 @@ typedef struct
unsigned int leds_max; /* Maximum number of LEDs */
matrix_map_type * matrix_map; /* Matrix map pointer */
std::vector<segment> segments; /* Segments in zone */
} zone;
unsigned int flags; /* Zone flags bitfield */
/*--------------------------------------------------------------*\
| Zone Constructor / Destructor |
\*--------------------------------------------------------------*/
zone();
~zone();
};
/*------------------------------------------------------------------*\
| Device Types |
@@ -198,6 +215,19 @@ enum
DEVICE_TYPE_UNKNOWN,
};
/*------------------------------------------------------------------*\
| Controller Flags |
\*------------------------------------------------------------------*/
enum
{
CONTROLLER_FLAG_LOCAL = (1 << 0), /* Device is local to this instance */
CONTROLLER_FLAG_REMOTE = (1 << 1), /* Device is on a remote instance */
CONTROLLER_FLAG_VIRTUAL = (1 << 2), /* Device is a virtual device */
CONTROLLER_FLAG_RESET_BEFORE_UPDATE = (1 << 8), /* Device resets update flag before */
/* calling update function */
};
/*------------------------------------------------------------------*\
| RGBController Callback Types |
\*------------------------------------------------------------------*/
@@ -210,6 +240,18 @@ class RGBControllerInterface
public:
virtual void SetupColors() = 0;
virtual unsigned int GetLEDsInZone(unsigned int zone) = 0;
virtual std::string GetName() = 0;
virtual std::string GetVendor() = 0;
virtual std::string GetDescription() = 0;
virtual std::string GetVersion() = 0;
virtual std::string GetSerial() = 0;
virtual std::string GetLocation() = 0;
virtual std::string GetModeName(unsigned int mode) = 0;
virtual std::string GetZoneName(unsigned int zone) = 0;
virtual std::string GetLEDName(unsigned int led) = 0;
virtual RGBColor GetLED(unsigned int led) = 0;
virtual void SetLED(unsigned int led, RGBColor color) = 0;
virtual void SetAllLEDs(RGBColor color) = 0;
@@ -247,6 +289,9 @@ public:
virtual void DeviceCallThreadFunction() = 0;
virtual void ClearSegments(int zone) = 0;
virtual void AddSegment(int zone, segment new_segment) = 0;
/*---------------------------------------------------------*\
| Functions to be implemented in device implementation |
\*---------------------------------------------------------*/
@@ -279,6 +324,9 @@ public:
std::vector<RGBColor> colors; /* Color buffer */
device_type type; /* device type */
int active_mode = 0;/* active mode */
std::vector<std::string>
led_alt_names; /* alternate LED names */
unsigned int flags; /* controller flags */
/*---------------------------------------------------------*\
| RGBController base class constructor |
@@ -291,6 +339,18 @@ public:
\*---------------------------------------------------------*/
void SetupColors();
unsigned int GetLEDsInZone(unsigned int zone);
std::string GetName();
std::string GetVendor();
std::string GetDescription();
std::string GetVersion();
std::string GetSerial();
std::string GetLocation();
std::string GetModeName(unsigned int mode);
std::string GetZoneName(unsigned int zone);
std::string GetLEDName(unsigned int led);
RGBColor GetLED(unsigned int led);
void SetLED(unsigned int led, RGBColor color);
void SetAllLEDs(RGBColor color);
@@ -314,6 +374,9 @@ public:
unsigned char * GetSingleLEDColorDescription(int led);
void SetSingleLEDColorDescription(unsigned char* data_buf);
unsigned char * GetSegmentDescription(int zone, segment new_segment);
void SetSegmentDescription(unsigned char* data_buf);
void RegisterUpdateCallback(RGBControllerCallback new_callback, void * new_callback_arg);
void UnregisterUpdateCallback(void * callback_arg);
void ClearCallbacks();
@@ -328,6 +391,9 @@ public:
void DeviceCallThreadFunction();
void ClearSegments(int zone);
void AddSegment(int zone, segment new_segment);
/*---------------------------------------------------------*\
| Functions to be implemented in device implementation |
\*---------------------------------------------------------*/
+23
View File
@@ -25,6 +25,29 @@ void RGBController_Network::SetupZones()
//Don't send anything, this function should only process on host
}
void RGBController_Network::ClearSegments(int zone)
{
client->SendRequest_RGBController_ClearSegments(dev_idx, zone);
client->SendRequest_ControllerData(dev_idx);
client->WaitOnControllerData();
}
void RGBController_Network::AddSegment(int zone, segment new_segment)
{
unsigned char * data = GetSegmentDescription(zone, new_segment);
unsigned int size;
memcpy(&size, &data[0], sizeof(unsigned int));
client->SendRequest_RGBController_AddSegment(dev_idx, data, size);
delete[] data;
client->SendRequest_ControllerData(dev_idx);
client->WaitOnControllerData();
}
void RGBController_Network::ResizeZone(int zone, int new_size)
{
client->SendRequest_RGBController_ResizeZone(dev_idx, zone, new_size);
+2
View File
@@ -22,6 +22,8 @@ public:
void SetupZones();
void ClearSegments(int zone);
void AddSegment(int zone, segment new_segment);
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
+50 -31
View File
@@ -30,6 +30,42 @@
#include "filesystem.h"
#include "StringUtils.h"
/*-------------------------------------------------------------------------*\
| Translation Strings |
\*-------------------------------------------------------------------------*/
const char* I2C_ERR_WIN = QT_TRANSLATE_NOOP("ResourceManager",
"<h2>Some internal devices may not be detected:</h2>"
"<p>One or more I2C or SMBus interfaces failed to initialize.</p>"
"<p><b>RGB DRAM modules, some motherboards' onboard RGB lighting, and RGB Graphics Cards, will not be available in OpenRGB</b> without I2C or SMBus.</p>"
"<h4>How to fix this:</h4>"
"<p>On Windows, this is usually caused by a failure to load the WinRing0 driver.</p>"
"<p>You must run OpenRGB as administrator at least once to allow WinRing0 to set up.</p>"
"<p>See <a href='https://help.openrgb.org/'>help.openrgb.org</a> for additional troubleshooting steps if you keep seeing this message.<br></p>"
"<h3>If you are not using internal RGB on a desktop this message is not important to you.</h3>");
const char* I2C_ERR_LINUX = QT_TRANSLATE_NOOP("ResourceManager",
"<h2>Some internal devices may not be detected:</h2>"
"<p>One or more I2C or SMBus interfaces failed to initialize.</p>"
"<p><b>RGB DRAM modules, some motherboards' onboard RGB lighting, and RGB Graphics Cards, will not be available in OpenRGB</b> without I2C or SMBus.</p>"
"<h4>How to fix this:</h4>"
"<p>On Linux, this is usually because the i2c-dev module is not loaded.</p>"
"<p>You must load the i2c-dev module along with the correct i2c driver for your motherboard. "
"This is usually i2c-piix4 for AMD systems and i2c-i801 for Intel systems.</p>"
"<p>See <a href='https://help.openrgb.org/'>help.openrgb.org</a> for additional troubleshooting steps if you keep seeing this message.<br></p>"
"<h3>If you are not using internal RGB on a desktop this message is not important to you.</h3>");
const char* UDEV_MISSING = QT_TRANSLATE_NOOP("ResourceManager",
"<h2>WARNING:</h2>"
"<p>The OpenRGB udev rules are not installed.</p>"
"<p>Most devices will not be available unless running OpenRGB as root.</p>"
"<p>If using AppImage, Flatpak, or self-compiled versions of OpenRGB you must install the udev rules manually</p>"
"<p>See <a href='https://openrgb.org/udev'>https://openrgb.org/udev</a> to install the udev rules manually</p>");
const char* UDEV_MUTLI = QT_TRANSLATE_NOOP("ResourceManager",
"<h2>WARNING:</h2>"
"<p>Multiple OpenRGB udev rules are installed.</p>"
"<p>The udev rules file 60-openrgb.rules is installed in both /etc/udev/rules.d and /usr/lib/udev/rules.d.</p>"
"<p>Multiple udev rules files can conflict, it is recommended to remove one of them.</p>");
const hidapi_wrapper default_wrapper =
{
NULL,
@@ -219,6 +255,12 @@ std::vector<i2c_smbus_interface*> & ResourceManager::GetI2CBusses()
void ResourceManager::RegisterRGBController(RGBController *rgb_controller)
{
/*-------------------------------------------------*\
| Mark this controller as locally owned |
\*-------------------------------------------------*/
rgb_controller->flags &= ~CONTROLLER_FLAG_REMOTE;
rgb_controller->flags |= CONTROLLER_FLAG_LOCAL;
LOG_INFO("[%s] Registering RGB controller", rgb_controller->name.c_str());
rgb_controllers_hw.push_back(rgb_controller);
@@ -1088,7 +1130,7 @@ void ResourceManager::DetectDevicesCoroutine()
LOG_INFO("------------------------------------------------------");
for(unsigned int i2c_detector_idx = 0; i2c_detector_idx < (unsigned int)i2c_device_detectors.size() && detection_is_required.load(); i2c_detector_idx++)
{
unsigned int controller_size = rgb_controllers_hw.size();
std::size_t controller_size = rgb_controllers_hw.size();
detection_string = i2c_device_detector_strings[i2c_detector_idx].c_str();
/*-------------------------------------------------*\
@@ -1572,13 +1614,7 @@ void ResourceManager::DetectDevicesCoroutine()
\*-------------------------------------------------*/
if(udev_not_exist)
{
const char* message = "<h2>WARNING:</h2>"
"<p>The OpenRGB udev rules are not installed.</p>"
"<p>Most devices will not be available unless running OpenRGB as root.</p>"
"<p>If using AppImage, Flatpak, or self-compiled versions of OpenRGB you must install the udev rules manually</p>"
"<p>See <a href='https://openrgb.org/udev'>https://openrgb.org/udev</a> to install the udev rules manually</p>";
LOG_DIALOG("%s", message);
LOG_DIALOG("%s", UDEV_MISSING);
udev_multiple = false;
i2c_interface_fail = false;
@@ -1590,12 +1626,7 @@ void ResourceManager::DetectDevicesCoroutine()
\*-------------------------------------------------*/
if(udev_multiple)
{
const char* message = "<h2>WARNING:</h2>"
"<p>Multiple OpenRGB udev rules are installed.</p>"
"<p>The udev rules file 60-openrgb.rules is installed in both /etc/udev/rules.d and /usr/lib/udev/rules.d.</p>"
"<p>Multiple udev rules files can conflict, it is recommended to remove one of them.</p>";
LOG_DIALOG("%s", message);
LOG_DIALOG("%s", UDEV_MUTLI);
i2c_interface_fail = false;
}
@@ -1608,24 +1639,12 @@ void ResourceManager::DetectDevicesCoroutine()
\*-------------------------------------------------*/
if(i2c_interface_fail)
{
const char* message = "<h2>Some internal devices may not be detected:</h2>"
"<p>One or more I2C or SMBus interfaces failed to initialize.</p>"
"<p><b>RGB DRAM modules, some motherboards' onboard RGB lighting, and RGB Graphics Cards, will not be available in OpenRGB</b> without I2C or SMBus.</p>"
"<h4>How to fix this:</h4>"
#ifdef _WIN32
"<p>On Windows, this is usually caused by a failure to load the WinRing0 driver.</p>"
"<p>You must run OpenRGB as administrator at least once to allow WinRing0 to set up.</p>"
LOG_DIALOG("%s", I2C_ERR_WIN);
#endif
#ifdef __linux__
"<p>On Linux, this is usually because the i2c-dev module is not loaded.</p>"
"<p>You must load the i2c-dev module along with the correct i2c driver for your motherboard. "
"This is usually i2c-piix4 for AMD systems and i2c-i801 for Intel systems.</p>"
LOG_DIALOG("%s", I2C_ERR_LINUX);
#endif
"<p>See <a href='https://help.openrgb.org/'>help.openrgb.org</a> for additional troubleshooting steps if you keep seeing this message.<br></p>"
"<h3>If you are not using internal RGB on a desktop this message is not important to you.</h3>";
LOG_DIALOG("%s", message);
}
}
@@ -1925,10 +1944,10 @@ bool ResourceManager::IsAnyDimmDetectorEnabled(json &detector_settings)
| Check if this detector is enabled |
\*-------------------------------------------------*/
if(detector_settings.contains("detectors") && detector_settings["detectors"].contains(detection_string) &&
detector_settings["detectors"][detection_string] == false)
detector_settings["detectors"][detection_string] == true)
{
return false;
return true;
}
}
return true;
return false;
}
+10 -44
View File
@@ -22,8 +22,9 @@
#include "SPDWrapper.h"
#include "hidapi_wrapper.h"
#include "i2c_smbus.h"
#include "ResourceManagerInterface.h"
#include "filesystem.h"
#include "json.hpp"
#include <nlohmann/json.hpp>
using json = nlohmann::json;
@@ -94,50 +95,15 @@ typedef struct
uint8_t dimm_type;
} I2CDIMMDeviceDetectorBlock;
typedef void (*DeviceListChangeCallback)(void *);
typedef void (*DetectionProgressCallback)(void *);
typedef void (*DetectionStartCallback)(void *);
typedef void (*DetectionEndCallback)(void *);
typedef void (*I2CBusListChangeCallback)(void *);
/*-------------------------------------------------------------------------*\
| Define a macro for QT lupdate to parse |
\*-------------------------------------------------------------------------*/
#define QT_TRANSLATE_NOOP(scope, x) x
class ResourceManagerInterface
{
public:
virtual std::vector<i2c_smbus_interface*> & GetI2CBusses() = 0;
virtual void RegisterRGBController(RGBController *rgb_controller) = 0;
virtual void UnregisterRGBController(RGBController *rgb_controller) = 0;
virtual void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionStartCallback(DetectionStartCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionEndCallback(DetectionEndCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg) = 0;
virtual void UnregisterDeviceListChangeCallback(DeviceListChangeCallback callback, void * callback_arg) = 0;
virtual void UnregisterDetectionProgressCallback(DetectionProgressCallback callback, void *callback_arg) = 0;
virtual void UnregisterDetectionStartCallback(DetectionStartCallback callback, void *callback_arg) = 0;
virtual void UnregisterDetectionEndCallback(DetectionEndCallback callback, void *callback_arg) = 0;
virtual void UnregisterI2CBusListChangeCallback(I2CBusListChangeCallback callback, void * callback_arg) = 0;
virtual std::vector<RGBController*> & GetRGBControllers() = 0;
virtual unsigned int GetDetectionPercent() = 0;
virtual filesystem::path GetConfigurationDirectory() = 0;
virtual std::vector<NetworkClient*>& GetClients() = 0;
virtual NetworkServer* GetServer() = 0;
virtual ProfileManager* GetProfileManager() = 0;
virtual SettingsManager* GetSettingsManager() = 0;
virtual void UpdateDeviceList() = 0;
virtual void WaitForDeviceDetection() = 0;
protected:
virtual ~ResourceManagerInterface() {};
};
extern const char* I2C_ERR_WIN;
extern const char* I2C_ERR_LINUX;
extern const char* UDEV_MISSING;
extern const char* UDEV_MULTI;
class ResourceManager: public ResourceManagerInterface
{
+56
View File
@@ -0,0 +1,56 @@
#pragma once
#include <vector>
#include "i2c_smbus.h"
#include "filesystem.h"
class NetworkClient;
class NetworkServer;
class ProfileManager;
class RGBController;
class SettingsManager;
typedef void (*DeviceListChangeCallback)(void *);
typedef void (*DetectionProgressCallback)(void *);
typedef void (*DetectionStartCallback)(void *);
typedef void (*DetectionEndCallback)(void *);
typedef void (*I2CBusListChangeCallback)(void *);
class ResourceManagerInterface
{
public:
virtual std::vector<i2c_smbus_interface*> & GetI2CBusses() = 0;
virtual void RegisterRGBController(RGBController *rgb_controller) = 0;
virtual void UnregisterRGBController(RGBController *rgb_controller) = 0;
virtual void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionStartCallback(DetectionStartCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterDetectionEndCallback(DetectionEndCallback new_callback, void * new_callback_arg) = 0;
virtual void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg) = 0;
virtual void UnregisterDeviceListChangeCallback(DeviceListChangeCallback callback, void * callback_arg) = 0;
virtual void UnregisterDetectionProgressCallback(DetectionProgressCallback callback, void *callback_arg) = 0;
virtual void UnregisterDetectionStartCallback(DetectionStartCallback callback, void *callback_arg) = 0;
virtual void UnregisterDetectionEndCallback(DetectionEndCallback callback, void *callback_arg) = 0;
virtual void UnregisterI2CBusListChangeCallback(I2CBusListChangeCallback callback, void * callback_arg) = 0;
virtual std::vector<RGBController*> & GetRGBControllers() = 0;
virtual unsigned int GetDetectionPercent() = 0;
virtual filesystem::path GetConfigurationDirectory() = 0;
virtual std::vector<NetworkClient*>& GetClients() = 0;
virtual NetworkServer* GetServer() = 0;
virtual ProfileManager* GetProfileManager() = 0;
virtual SettingsManager* GetSettingsManager() = 0;
virtual void UpdateDeviceList() = 0;
virtual void WaitForDeviceDetection() = 0;
protected:
virtual ~ResourceManagerInterface() {};
};
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "json.hpp"
#include <nlohmann/json.hpp>
#include <mutex>
#include "filesystem.h"
-55
View File
@@ -1,55 +0,0 @@
timestamps {
node('master')
{
stage('SCM')
{
checkout scm
}
stage('Build')
{
sh returnStatus: true, script: 'rm -r build'
sh '''#!/bin/bash
mkdir build
cd build
cmake .. -Dhueplusplus_TESTS=ON
make -j8 2>&1 | tee buildlog.txt
test ${PIPESTATUS[0]} -eq 0'''
}
stage('Test')
{
sh '''cd build
hueplusplus/test/test_HuePlusPlus --gtest_output=xml:test.xml
make -j8 coveragetest'''
step([$class: 'XUnitBuilder', testTimeMargin: '3000', thresholdMode: 1,
thresholds: [
[$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: ''],
[$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '']
],
tools: [
[$class: 'GoogleTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: 'build/test.xml', skipNoTestFiles: false, stopProcessingIfError: true]
]
])
publishHTML(
[allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'build/coveragetest', reportFiles: 'index.html', reportName: 'Coveragetest', reportTitles: '']
)
}
stage('CppCheck')
{
sh 'cppcheck -j 8 --force -ihueplusplus/test -ihueplusplus/jsoncpp.cpp hueplusplus/ 2>build/CppCheckResult'
rtp nullAction: '1', parserName: 'HTML', stableText: '${FILE:build/CppCheckResult}'
}
stage('Documentation')
{
sh 'doxygen Doxyfile'
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'doc/html/', reportFiles: 'index.html', reportName: 'Doxygen'])
}
stage('Parse warnings')
{
warnings canComputeNew: false, canResolveRelativePaths: false, categoriesPattern: '', defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'Doxygen', pattern: 'doxylog.txt']], unHealthy: ''
sh returnStatus: true, script: 'rm doxylog.txt'
warnings canComputeNew: false, canResolveRelativePaths: false, categoriesPattern: '', defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'GNU C Compiler 4 (gcc)', pattern: 'build/buildlog.txt']], unHealthy: ''
sh returnStatus: true, script: 'rm build/buildlog.txt'
}
}
}
File diff suppressed because it is too large Load Diff
+12
View File
@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [enwi]
patreon: # Replace with a single Patreon username
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']
@@ -0,0 +1,72 @@
name: CI
on:
push:
branches:
- master
- development
pull_request:
jobs:
build:
runs-on: ubuntu-24.04
env:
LINUX_DIST: bionic
DEPS_DIR: ${{ github.workspace }}/deps
COMPILER_NAME: gcc
CXX: g++
CC: gcc
RUN_TESTS: true
COVERAGE: false
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# PATH: ${{ github.workspace }}/deps/cmake/bin:${{ env.PATH }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y gcc g++ lcov doxygen graphviz python3-yaml
# - name: Install CodeCov and LCOV
# run: |
# sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-7 90
# wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.13.orig.tar.gz
# tar xf lcov_1.13.orig.tar.gz
# make -C lcov-1.13 "PREFIX=${HOME}/.local" install
# echo "${HOME}/.local/bin" >> $GITHUB_PATH
- name: Show tool versions
run: |
echo $PATH
echo $CXX
$CXX --version
$CXX -v
cmake --version
lcov --version
gcov --version
- name: Build project
run: |
mkdir -p build
cd build
cmake .. -Dhueplusplus_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -Dhueplusplus_EXAMPLES=ON
make hueplusplus_examples hueplusplus_snippets
make coveragetest
cd ..
doxygen Doxyfile
touch doc/html/.nojekyll
- name: Upload coverage to Codecov
run: |
bash <(curl -s https://codecov.io/bash)
- name: Deploy documentation to GitHub Pages
if: github.ref == 'refs/heads/master'
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./doc/html
@@ -1,3 +1,6 @@
[submodule "lib/mbedtls"]
path = lib/mbedtls
url = https://github.com/ARMmbed/mbedtls.git
[submodule "lib/json"]
path = lib/json
url = https://github.com/nlohmann/json.git
@@ -1,15 +1,9 @@
cmake_minimum_required(VERSION 3.8)
if(${CMAKE_VERSION} VERSION_LESS 3.11)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
else()
cmake_policy(VERSION 3.11)
endif()
cmake_minimum_required(VERSION 3.10.2...3.28)
# Add cmake dir to module path, so Find*.cmake can be found
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
project(hueplusplus VERSION 1.1.0 LANGUAGES CXX)
project(hueplusplus VERSION 1.2.0 LANGUAGES CXX)
# check whether hueplusplus is compiled directly or included as a subdirectory
if(NOT DEFINED hueplusplus_master_project)
@@ -23,6 +17,16 @@ endif()
# options to set
option(hueplusplus_TESTS "Build tests" OFF)
option(hueplusplus_EXAMPLES "Build examples" OFF)
option(hueplusplus_NO_EXTERNAL_LIBRARIES "Do not try to use external libraries" OFF)
# Try to find installed packages
if(NOT hueplusplus_NO_EXTERNAL_LIBRARIES)
# Suppress warnings if libraries are not found, they will be built from submodules
find_package(MbedTLS QUIET)
find_package(nlohmann_json QUIET)
endif()
set(NEED_SUBMODULES NOT (${MbedTLS_FOUND} AND ${nlohmann_json_FOUND}))
option(CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
find_program(CLANG_TIDY_EXE NAMES "clang-tidy" DOC "Path to clang-tidy executable")
@@ -38,7 +42,7 @@ endif()
find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
option(GIT_SUBMODULE "Check submodules during build" ON)
if(GIT_SUBMODULE)
if(GIT_SUBMODULE AND NEED_SUBMODULES)
message(STATUS "Submodule update")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
@@ -83,15 +87,34 @@ if (1 AND APPLE)
set(CMAKE_MACOSX_RPATH 1)
endif()
set(USE_STATIC_MBEDTLS_LIBRARY ON)
set(USE_SHARED_MBEDTLS_LIBRARY OFF)
add_subdirectory("lib/mbedtls" EXCLUDE_FROM_ALL)
if(NOT MbedTLS_FOUND)
# Build mbedtls if not installed
message(STATUS "MbedTLS was not found, the submodule is used.")
set(USE_STATIC_MBEDTLS_LIBRARY ON)
set(USE_SHARED_MBEDTLS_LIBRARY OFF)
add_subdirectory("lib/mbedtls" EXCLUDE_FROM_ALL)
# Compile the mbedtls library as a static with position independent code,
# because we need it for both a shared and static library
set_property(TARGET mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET mbedcrypto PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET mbedx509 PROPERTY POSITION_INDEPENDENT_CODE ON)
# Compile the mbedtls library as a static with position independent code,
# because we need it for both a shared and static library
set_property(TARGET mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET mbedcrypto PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET mbedx509 PROPERTY POSITION_INDEPENDENT_CODE ON)
if(CMAKE_VERSION VERSION_LESS 3.18)
# Aliases for compatibility with find_package, newer cmake versions add these already
add_library(MbedTLS::mbedtls ALIAS mbedtls)
add_library(MbedTLS::mbedcrypto ALIAS mbedcrypto)
add_library(MbedTLS::mbedx509 ALIAS mbedx509)
endif()
endif()
if(NOT nlohmann_json_FOUND)
# Use embedded json
message(STATUS "nlohmann_json was not found, the submodule is used.")
# disable tests for json
set(JSON_BuildTests OFF CACHE INTERNAL "")
add_subdirectory("lib/json" EXCLUDE_FROM_ALL)
endif()
add_subdirectory(src)
@@ -38,7 +38,7 @@ PROJECT_NAME = hueplusplus
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.0.0
PROJECT_NUMBER = 1.2.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

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