diff --git a/docs/devices.md b/docs/devices.md index 910d178c..fa9d1fb7 100644 --- a/docs/devices.md +++ b/docs/devices.md @@ -89,6 +89,7 @@ Mice (Unifying): | T620 Touch | 2.0 | yes | | | | Performance MX | 1.0 | yes | R/W | smooth scrolling | | Anywhere MX | 1.0 | yes | R/W | smooth scrolling | +| MX Master | 4.5 | yes | TODO | | | Cube | 2.0 | yes | | | diff --git a/docs/devices/mx-master.txt b/docs/devices/mx-master.txt new file mode 100644 index 00000000..557bae60 --- /dev/null +++ b/docs/devices/mx-master.txt @@ -0,0 +1,54 @@ +Unifying Receiver + Device path : /dev/hidraw3 + USB id : 046d:c52b + Serial : 0E039B8F + Firmware : 24.01.B0023 + Bootloader : 01.08 + Other : AA.AC + Has 1 paired device(s) out of a maximum of 6. + Notifications: wireless, software present (0x000900) + Device activity counters: 1=134 + + 1: Wireless Mouse MX Master + Codename : MX Master + Kind : mouse + Wireless PID : 4041 + Protocol : HID++ 4.5 + Polling rate : 8 ms (125Hz) + Serial number: A975E230 + Bootloader: BOT 18.00.B0012 + Firmware: MPM 11.00.B0012 + Firmware: MPM 11.00.B0012 + Other: + The power switch is located on the base. + Supports 29 HID++ 2.0 features: + 0: ROOT {0000} + 1: FEATURE SET {0001} + 2: DEVICE FW VERSION {0003} + 3: DEVICE NAME {0005} + 4: WIRELESS DEVICE STATUS {1D4B} + 5: RESET {0020} + 6: BATTERY STATUS {1000} + 7: CHANGE HOST {1814} + 8: REPROG CONTROLS V4 {1B04} + 9: ADJUSTABLE DPI {2201} + 10: VERTICAL SCROLLING {2100} + 11: SMART SHIFT {2110} + 12: HIRES WHEEL {2121} + 13: GESTURE 2 {6501} + 14: DFUCONTROL 2 {00C1} + 15: unknown:1813 {1813} internal, hidden + 16: unknown:1830 {1830} internal, hidden + 17: unknown:1890 {1890} internal, hidden + 18: unknown:18A1 {18A1} internal, hidden + 19: unknown:18C0 {18C0} internal, hidden + 20: unknown:1DF3 {1DF3} internal, hidden + 21: unknown:1E00 {1E00} hidden + 22: unknown:1EB0 {1EB0} internal, hidden + 23: unknown:1803 {1803} internal, hidden + 24: unknown:1861 {1861} internal, hidden + 25: unknown:9000 {9000} internal, hidden + 26: unknown:9200 {9200} internal, hidden + 27: unknown:9240 {9240} internal, hidden + 28: unknown:1805 {1805} internal, hidden + Battery: 50%, discharging. \ No newline at end of file diff --git a/lib/logitech_receiver/hidpp20.py b/lib/logitech_receiver/hidpp20.py index 5ab67008..4b8d9712 100644 --- a/lib/logitech_receiver/hidpp20.py +++ b/lib/logitech_receiver/hidpp20.py @@ -38,6 +38,7 @@ from . import special_keys # # +# /,/p}' | sort -t= -k2 """Possible features available on a Logitech device. A particular device might not support all these features, and may support other @@ -50,27 +51,58 @@ FEATURE = _NamedInts( DEVICE_FW_VERSION=0x0003, DEVICE_NAME=0x0005, DEVICE_GROUPS=0x0006, + RESET=0x0020, # "Config Change" DFUCONTROL=0x00C0, + DFUCONTROL_2=0x00C1, + DFU=0x00D0, BATTERY_STATUS=0x1000, + LED_CONTROL=0x1300, + CHANGE_HOST=0x1814, BACKLIGHT=0x1981, REPROG_CONTROLS=0x1B00, REPROG_CONTROLS_V2=0x1B01, + REPROG_CONTROLS_V2_2=0x1B02, # LogiOptions 2.10.73 features.xml REPROG_CONTROLS_V3=0x1B03, + REPROG_CONTROLS_V4=0x1B04, WIRELESS_DEVICE_STATUS=0x1D4B, LEFT_RIGHT_SWAP=0x2001, + SWAP_BUTTON=0x2005, VERTICAL_SCROLLING=0x2100, + SMART_SHIFT=0x2110, HI_RES_SCROLLING=0x2120, + HIRES_WHEEL=0x2121, + LOWRES_WHEEL=0x2130, MOUSE_POINTER=0x2200, + ADJUSTABLE_DPI=0x2201, + POINTER_SPEED=0x2205, + ANGLE_SNAPPING=0x2230, + SURFACE_TUNING=0x2240, + HYBRID_TRACKING=0x2400, FN_INVERSION=0x40A0, NEW_FN_INVERSION=0x40A2, ENCRYPTION=0x4100, + LOCK_KEY_STATE=0x4220, SOLAR_DASHBOARD=0x4301, KEYBOARD_LAYOUT=0x4520, + KEYBOARD_DISABLE=0x4521, + DUALPLATFORM=0x4530, + KEYBOARD_LAYOUT_2=0x4540, TOUCHPAD_FW_ITEMS=0x6010, TOUCHPAD_SW_ITEMS=0x6011, TOUCHPAD_WIN8_FW_ITEMS=0x6012, TOUCHPAD_RAW_XY=0x6100, TOUCHMOUSE_RAW_POINTS=0x6110, + TOUCHMOUSE_6120=0x6120, + GESTURE=0x6500, + GESTURE_2=0x6501, + GKEY=0x8010, + MKEYS=0x8020, + MR=0x8030, + REPORT_RATE=0x8060, + COLOR_LED_EFECTS=0x8070, + PER_KEY_LIGHTING=0x8080, + ONBOARD_PROFILES=0x8100, + MOUSE_BUTTON_SPY=0x8110, ) FEATURE._fallback = lambda x: 'unknown:%04X' % x diff --git a/lib/logitech_receiver/special_keys.py b/lib/logitech_receiver/special_keys.py index 9baa8bd0..5669e7ec 100644 --- a/lib/logitech_receiver/special_keys.py +++ b/lib/logitech_receiver/special_keys.py @@ -322,6 +322,17 @@ TASK = _NamedInts( MetroForwRightHorz=0x0083, Win8_Back=0x0084, # also known as MetroCharms Win8_Forward=0x0085, # also known as AppSwitchBar + Win8Charm_Appswitch_GifAnimation=0x0086, + Win8BackHorzLeft=0x008B, # also known as Back + Win8ForwardHorzRight=0x008C, # also known as BrowserForward + MetroSearch2=0x0087, + MetroShare2=0x0088, + MetroSettings2=0x008A, + MetroDevices2=0x0089, + Win8MetroWin7Forward=0x008D, # also known as MetroStartScreen + Win8ShowDesktopWin7Back=0x008E, # also known as ShowDesktop + MetroApplicationSwitch=0x0090, # also known as MetroStartScreen + ShowUI=0x0092, ) TASK._fallback = lambda x: 'unknown:%04X' % x