This repository contains some proof of concept code for talking to the Logitech G710 mechanical keyboard.
- G1-G6 key events
- M1-MR key events
- Media key events
- M1-MR per key backlight - events, read, write
- WASD/other keys backlight - events, read, write
- 'Game mode' - events, read
- Game mode is not writable (I'm missing something...)
- Macro recording, Logitech drivers do it in userspace
-
Key events
- All key events are sent from interface 1, endpoint 130
- G1-G6 keys send numbers 1 to 6 by default, stop by writing to control
0x0309
- Media key send interrupts in the format of
0x02 [bitmask]
- Other keys send interrupts in the format of
0x03 [G keys bitmask] [M keys bitmask] [backlight / game mode bitmask]
- See
keymap
ing710.py
for details
-
Control values
- All control values return their ID as the first value
0x0305
- read:0x05 [game mode] 0x19 0x49 0x51 0xff 0xff 0xff
. Writing doesn't change the game mode.- TODO meaning of other values unknown
0x0306
- read/write0x06 [M keys bitmask]
- sets backlight for M keys- Bitmask values:
0x10
- M1,0x20
- M2,0x40
- M3,0x80
- MR
- Bitmask values:
0x0307
- read/write0x07 [WASD value pair] [other value pair]
- sets backlight- Value pairs for default backlight levels:
0x00 0x20
0x8f 0x11
0xdf 0x07
0xdf 0x01
0x00 0x00
- Writing backlight this way resets buttons to some random(ish) setting
- TODO investigate
- Value pairs for default backlight levels:
0x0308
- read/write0x08 [WASD backlight level] [other backlight level] 0x00
- backlight levels- Backlight levels are 0-4, 0 being the brightest
- Last value likely unused
0x0309
- read/write0x09 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
- disables ghost input on write- Values likely unused
- TODO what are valid values?
0x0380
- unknown, seems to read zeroes