G-keys
Let OpenLogi run the G1–G5 row and the M keys on a G915 or G913, with three M profiles or nine separate buttons.
A G915 or G913 runs G1–G5 from its onboard memory by default. OpenLogi can take over the whole row instead. Each G-key then runs the action you bind, and M1–M3 either switch between three binding sets or become buttons of their own.
| Attribute | Value |
|---|---|
| Keyboards | G915 and G913. The G915 X uses a different keyboard image and does not show G-keys. |
| HID++ features | 0x8010 gamingGKeys for G1–G5, 0x8020 gamingMKeys for M1–M3, 0x8030 macroRecord for MR |
| Scope of a binding | Per physical device; an app profile can override it |
| Platforms | macOS, Linux, and Windows |
Take over the G-key row
Select the keyboard and open its Keys tab. Turn on Replace all onboard G-key actions. G1–G5 and the M keys then appear on the keyboard image.
The keyboard has one switch for the whole row, so OpenLogi takes all of G1–G5 together. A G-key with no binding does nothing while OpenLogi runs the row. Bind every G-key you use before you rely on the row.
Turn the switch off to give the row back to the keyboard. The onboard actions return. OpenLogi also gives the row back when it quits. The keyboard forgets the takeover when it powers off, and OpenLogi takes the row again when the keyboard reconnects or wakes.
Choose what the M keys do
The Keys tab offers two modes while OpenLogi runs the row.
| Mode | M1–M3 | G1–G5 | MR |
|---|---|---|---|
| Official profiles (default) | Switch G1–G5 between profiles M1, M2, and M3 | One binding in each profile | Keeps its onboard function |
| Nine custom buttons | One binding each | One binding each, from profile M1 | One binding, on keyboards that report 0x8030 |
In Official profiles, the keyboard starts on M1. It returns to M1 when it reconnects or wakes, and when you change the takeover or the mode. Pressing the M key of the active profile changes nothing. Switching to another profile ends any G-key that is still held, so a held key never releases as the new profile's binding.
Bind a G-key in a profile
In Official profiles, click M1, M2, or M3 on the keyboard image to edit that profile; its card is highlighted. Then click a G-key and choose its action. The panel lists the same actions as any other key. To clear a binding, choose Native function. While OpenLogi runs the row, a cleared G-key does nothing.
To name a profile, click its M key and choose Set M2 profile name (the
button names the key you clicked). Enter a name such as Work and save. The
M-key card on the keyboard image shows the name, and the M-key panel reads
M2 · Work. Save an empty name to clear it. The name is stored in OpenLogi's
config only; nothing is written to the keyboard.
Configuration
Takeover, mode, and profile names are device settings. G-key bindings sit with
the device's other bindings. KeyG1–KeyG5 are the M1 profile; prefix a key
with M2: or M3: for the other profiles. KeyM1–KeyM3 and KeyMR bind the
M keys in Nine custom buttons.
[devices."unit:6be9d300"]
g_key_owner = "openlogi" # default: "keyboard"
gaming_key_mode = "profiles" # or "nine_buttons"
[devices."unit:6be9d300".g_key_profile_names]
M2 = "Work"
[devices."unit:6be9d300".bindings]
KeyG1 = "Copy"
KeyG2 = "Paste"
"M2:KeyG1" = "MuteVolume"The default values g_key_owner = "keyboard" and gaming_key_mode = "profiles"
are omitted from config.toml. See Configurations for
the rest of the file.
Protocol notes
The G-key and M-key protocols have no public Logitech specification. OpenLogi's
implementation follows Solaar and has been tested on a G915 over USB. Before it
takes the row, OpenLogi reads the G-key count and leaves a row of more than five
keys to the keyboard. See 0x8010 gamingGKeys,
0x8020 gamingMKeys, and
0x8030 macroRecord.