From b9e0cf823543ba1dadc8eb188083b5c8db6280b0 Mon Sep 17 00:00:00 2001 From: Ken Sanislo Date: Fri, 20 Mar 2026 06:07:11 -0700 Subject: [PATCH] hidpp: Add names for HID++ 2.0 features and sort by ID (#3153) Add 30 documented HID++ 2.0 feature names from LGHUB source analysis: keyboard/mouse (PROPERTY_ACCESS, BLE_PRO_PRE_PAIRING, FULL_KEY_CUSTOMIZATION, CONTROL_LIST, SWITCH_SWAPABILITY, DEVICE_MODE, ENABLE_HIDDEN_FEATURES, KEYBOARD_DISABLE_CONTROLS, LOGI_MODIFIERS), racing peripherals (RPM_INDICATOR, RPM_LED_PATTERN, LEGACY/AXIS_RESPONSE_CURVE, BANDED_AXIS, COMBINED_PEDALS, BUNNY_HOPPING, PROFILE_MANAGEMENT, DUAL_CLUTCH, WHEEL_CENTER_POSITION, DISPLAY_GAME_DATA, CENTER_SPRING, AXIS_MAPPING, GLOBAL_DAMPING, BRAKE_FORCE, PEDAL_STATUS, TORQUE_LIMIT, CONFIGURATION_PROFILES, OPERATING_RANGE, TRUE_FORCE, FFB_FILTER). Sort RPM_INDICATOR/RPM_LED_PATTERN (0x807A-B) before PER_KEY_LIGHTING (0x8080-81) to maintain ID ordering. --- lib/logitech_receiver/hidpp20_constants.py | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib/logitech_receiver/hidpp20_constants.py b/lib/logitech_receiver/hidpp20_constants.py index e5c7f85d..33231f81 100644 --- a/lib/logitech_receiver/hidpp20_constants.py +++ b/lib/logitech_receiver/hidpp20_constants.py @@ -40,6 +40,7 @@ class SupportedFeature(IntEnum): DEVICE_GROUPS = 0x0006 DEVICE_FRIENDLY_NAME = 0x0007 KEEP_ALIVE = 0x0008 + PROPERTY_ACCESS = 0x0011 CONFIG_CHANGE = 0x0020 CRYPTO_ID = 0x0021 TARGET_SOFTWARE = 0x0030 @@ -61,6 +62,7 @@ class SupportedFeature(IntEnum): CONFIG_DEVICE_PROPS = 0x1806 CHANGE_HOST = 0x1814 HOSTS_INFO = 0x1815 + BLE_PRO_PRE_PAIRING = 0x1816 BACKLIGHT = 0x1981 BACKLIGHT2 = 0x1982 BACKLIGHT3 = 0x1983 @@ -74,10 +76,15 @@ class SupportedFeature(IntEnum): REPROG_CONTROLS_V2_2 = 0x1B02 # LogiOptions 2.10.73 features.xml REPROG_CONTROLS_V3 = 0x1B03 REPROG_CONTROLS_V4 = 0x1B04 + FULL_KEY_CUSTOMIZATION = 0x1B05 + CONTROL_LIST = 0x1B10 + SWITCH_SWAPABILITY = 0x1B20 + DEVICE_MODE = 0x1B30 REPORT_HID_USAGE = 0x1BC0 PERSISTENT_REMAPPABLE_ACTION = 0x1C00 WIRELESS_DEVICE_STATUS = 0x1D4B REMAINING_PAIRING = 0x1DF0 + ENABLE_HIDDEN_FEATURES = 0x1E00 FIRMWARE_PROPERTIES = 0x1F1F ADC_MEASUREMENT = 0x1F20 # Mouse @@ -110,6 +117,7 @@ class SupportedFeature(IntEnum): KEYBOARD_LAYOUT = 0x4520 KEYBOARD_DISABLE_KEYS = 0x4521 KEYBOARD_DISABLE_BY_USAGE = 0x4522 + KEYBOARD_DISABLE_CONTROLS = 0x4523 DUALPLATFORM = 0x4530 MULTIPLATFORM = 0x4531 KEYBOARD_LAYOUT_2 = 0x4540 @@ -132,18 +140,40 @@ class SupportedFeature(IntEnum): MKEYS = 0x8020 MR = 0x8030 BRIGHTNESS_CONTROL = 0x8040 + LOGI_MODIFIERS = 0x8051 REPORT_RATE = 0x8060 EXTENDED_ADJUSTABLE_REPORT_RATE = 0x8061 COLOR_LED_EFFECTS = 0x8070 RGB_EFFECTS = 0x8071 + RPM_INDICATOR = 0x807A + RPM_LED_PATTERN = 0x807B PER_KEY_LIGHTING = 0x8080 PER_KEY_LIGHTING_V2 = 0x8081 MODE_STATUS = 0x8090 + LEGACY_AXIS_RESPONSE_CURVE = 0x80A3 + AXIS_RESPONSE_CURVE = 0x80A4 + BANDED_AXIS = 0x80B1 + COMBINED_PEDALS = 0x80D0 + BUNNY_HOPPING = 0x80E0 ONBOARD_PROFILES = 0x8100 + PROFILE_MANAGEMENT = 0x8101 MOUSE_BUTTON_SPY = 0x8110 LATENCY_MONITORING = 0x8111 GAMING_ATTACHMENTS = 0x8120 FORCE_FEEDBACK = 0x8123 + DUAL_CLUTCH = 0x8127 + WHEEL_CENTER_POSITION = 0x812C + DISPLAY_GAME_DATA = 0x8130 + CENTER_SPRING = 0x8131 + AXIS_MAPPING = 0x8132 + GLOBAL_DAMPING = 0x8133 + BRAKE_FORCE = 0x8134 + PEDAL_STATUS = 0x8135 + TORQUE_LIMIT = 0x8136 + CONFIGURATION_PROFILES = 0x8137 + OPERATING_RANGE = 0x8138 + TRUE_FORCE = 0x8139 + FFB_FILTER = 0x8140 # Headsets SIDETONE = 0x8300 EQUALIZER = 0x8310