Last active
September 28, 2024 03:20
-
-
Save pedrovhb/41e9d5b7b7b5c13fe2c94aa4cee1193a to your computer and use it in GitHub Desktop.
This makes it so that as long as that button is being held, moving the cursors scrolls instead.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env python | |
import re | |
import subprocess | |
import textwrap | |
RE_LOGITECH_ID = rb"Logitech MX Ergo[\s\-\w]+id=(\d+).*pointer" | |
def set_ergo_scroll() -> None: | |
"""Set button scrolling behavior for MX Ergo.""" | |
print("Setting ergo scroll...") | |
inputs = subprocess.run(["xinput", "list"], capture_output=True).stdout | |
ergo_ids = re.findall(RE_LOGITECH_ID, inputs) | |
for ergo_id in ergo_ids: | |
commands = ( | |
[ | |
"xinput", | |
"set-prop", | |
ergo_id, | |
"libinput Scroll Method Enabled", | |
"0,", | |
"0,", | |
"1", | |
], | |
["xinput", "set-prop", ergo_id, "libinput Button Scrolling Button", "8"], | |
) | |
for cmd in commands: | |
proc = subprocess.run(cmd, capture_output=True) | |
if proc.returncode != 0: | |
print(f"Error calling xinput.\n") | |
print(f"stdout:") | |
print(textwrap.indent(proc.stdout.decode(), " ")) | |
print(f"stderr:") | |
print(textwrap.indent(proc.stderr.decode(), " ")) | |
exit() | |
print("Ergo scroll set.") | |
if __name__ == "__main__": | |
set_ergo_scroll() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment