
Ich habe eine benutzerdefinierte Tastatur mit einem Trackball unter meinem Daumen gebaut und möchte ein Scroll-Verhalten so abbilden, dass es sich wie ein Scrollen verhält, wenn ich eine Tastenkombination drücke (z. B. die linke Alt-Taste) und den Ball drehe. Ich verwende hier Xorg, wäre aber sehr an Lösungen für X und Wayland interessiert (wenn die Lösung einen Anzeigeserver beinhalten würde).
Antwort1
Emulieren Sie vertikales und horizontales Scrollen mitlibinput
Der evdev
Fahrer vondirkt'sAnswer unterstützt nur die Emulation des vertikalen Scrollens. Wenn Sie (wie ich) auch horizontal scrollen möchten, libinput
können Sie den Treiber dafür verwenden:
Die Einzelheiten finden Sie in der Manpage für
libinput(4)
:Option "ScrollButton" "int"
Kennzeichnet eine Schaltfläche als Scroll-Schaltfläche.ScrollMethodIstTasteund die Taste logisch gedrückt gehalten wird, wird die Bewegung der x/y-Achse in Scroll-Ereignisse umgewandelt.
Option "ScrollMethod" "Zeichenfolge"
Aktiviert eine Scroll-Methode. Zulässige Werte sindkeine, Zweifinger, Kante, Knopf. Nicht alle Geräte unterstützen alle Optionen. Wenn eine Option nicht unterstützt wird, wird die Standard-Scroll-Option für dieses Gerät verwendet.
Zum Beispiel:
Section "InputClass" Identifier "Some Trackball" # ... Stuff to match your trackball, see xorg.conf(5) Driver "libinput" Option "ScrollMethod" "button" Option "ScrollButton" "4" # Or whatever button suits your needs EndSection
Antwort2
Mausrad mit Trackball simulieren
Sie können entweder vorhandene Konfigurationsoptionen von Treibern verwenden, die etwas Ähnliches tun wie das, was Sie möchten, oder Ihren eigenen Treiber schreiben.
DerLogitech M570ist ein kabelloser Trackball mit USB-Empfänger. Das heißt, er erscheint als VERSTECKTEGerät und Mausereignisse werden über dasEingangSchicht im Kernel und kann vom entsprechenden /dev/event
Gerät lesen.
Der X-Treiber wiederum liest über den evdev
Treiber Events aus dieser Schicht und wandelt diese in X-Events um. Mit Wayland kenne ich mich nicht aus, aber ich gehe davon aus, dass es dort ähnlich funktioniert.
1) Der evdev
Treiber enthält bereits Optionen zur Emulation eines Mausrads auf einem Trackball, siehe man evdev
. Die wichtigsten sind
Option „EmulateWheel“ „Boolesch“
Aktivieren/deaktivieren Sie die „Rad“-Emulation. Rad-Emulation bedeutet, dass das Drücken/Loslassen von Tasten emuliert wird, wenn die Maus bewegt wird, während eine bestimmte reale Taste gedrückt wird. Rad-Tastenereignisse (normalerweise die Tasten 4 und 5) werden normalerweise zum Scrollen verwendet. Rad-Emulation ist nützlich, um mit Trackballs ein radähnliches Verhalten zu erzielen.
Option „EmulateWheelButton“ „Integer“
Gibt an, welche Taste gedrückt gehalten werden muss, um den Rademulationsmodus zu aktivieren. Während diese Taste gedrückt ist, generiert die Bewegung des X- und/oder Y-Zeigers Tastendruck-/Loslassereignisse, wie in den Einstellungen XAxisMapping und YAxisMapping angegeben. Wenn die Taste 0 ist und EmulateWheel aktiviert ist, wird jede Bewegung des Geräts in Radereignisse umgewandelt. Standard: 4.
Dies funktioniert also mit einer Trackball-Taste anstelle einer Tastenkombination (da der Treiber nur Ereignisse von der Maus, nicht von der Tastatur sieht) und konvertiertBewegungin Rad-Events, und nichtDrehung.
2) Schreiben Sie Ihren eigenen Treiber, indem Sie mehrere vorhandene modifizieren. Sie müssen die Treiber für die Tastatur und die Maus kombinieren, damit die Rademulation durch Tastendruck ausgelöst werden kann.
Der Quellcode für dieKernel-Eingabeebenebefindet sich drivers/input
im Kernelbaum.
Der Quellcode für dieAbonnierenX-Treiber ist inxorg/Treiber/xf86-input-evdev/tree/src/evdev.c.
Der Tastaturtreiber hängt davon ab, welchen Tastaturtyp Sie verwendet haben.