Ich fand schließlich eine Lösung, die für die meisten meiner Anwendungsfälle sehr gut funktioniert. Mit xdotools
erstellte ich zwei Skripte, eines zum Scrollen in jede Richtung. Dies ist das Skript, um nach unten zu scrollen (um nach oben zu scrollen, ersetzen Sie '4' durch '5').
#!/bin/bash #Get active window id win=`xdotool getactivewindow` #Move the mouse to the active window xdotool mousemove --window $win 45 110 #Scroll active window several times xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 xdotool click --clearmodifiers 5 #Send click to specific window. Finicky. #xdotool click --window $win 5
Grundsätzlich erhalten xdotools die Aktivierungsfenster-ID und bewegt die Bewegungen dorthin, bevor das Maus-Scroll-Signal mehrmals gesendet wird. Ich konnte es nicht zum Laufen bringen, indem ich direkt spezifizierte, an welches Fenster die Klicks gesendet werden sollen. Daher löste ich es, indem ich den Mauszeiger bewegte. Da Linux automatisch das Fenster unter der Maus durchläuft, wird das in meiner Frage aufgeführte Problem 1 gelöst. Der --clearmodifiers
Parameter gibt die in der Hotkey-Kombination verwendete Zusatztaste frei, sodass der einzige gesendete Schlüssel der von xdotool ist. Dies löst das Problem Nr. 2 für mich.
Der einzige kleine Ärger ist, dass es in einigen Fenstern mehrere Fenster gibt. Mit diesem Skript kann ich nur das obere linke Fenster scrollen. Dies ist beim Surfen kein Problem, aber für IDEs wie Spyder. Also, wenn jemand einen besseren Ansatz hat, bitte teilen!