Add support for Logitech G915
Support for G915 keyboard in both wireless and wired modes. It mostly works (more info below).
This is mostly a copy of LogitechG815Controller with correct USB HID information and HID++ 2.0 feature indexes. Feature index (a third byte in Logitech HID++ 2.0 protocol) depends on the number of features supported by the device. This means that the indexes are also different depending on whether the keyboard is connected via the receiver or by the USB cable (the wired connection has less features which shifts the indexes). It would actually be better to not hard code feature indexes and instead use HID++ 2.0 ROOT feature to retrieve correct indexes by feature IDs. It possibly would allow to actually merge G815, G915 and possibly G915TKL as a single controller. There still may be some issue with a DIRECT mode. OpenRGB is able to set all keys (as with G815), but there are two problems:
- pressing M keys resets everything to a backlight setting saved in the keyboards flash for that profile
- after some time all the keys turn off and won't turn on until M key is pressed or keyboard is power cycled.
The GHub has two modes for G915 (possibly G815 too): managed mode and build-in memory mode. By default GHub switches keyboard to managed mode which disables all settings saved into the keyboard's flash memory, so it doesn't conflict with software control from the GHub. The mode resets on sleep, disconnect or power cycle back to built-in memory mode.
More analysis is required to find out which function is responsible for switching into managed mode.