GNU/Linux@Dell Latitude 7490: Scrollen mit mittlerer TrackStick-Taste

Im Gegensatz zu den TrackPoints bei Lenovo Notebooks kann der TrackStick des Dell Latitude 7490 nicht ohne Anpassungen in Kombination mit der mittleren TrackStick-Taste zum Scrollen benutzt werden. Es gibt aber sowohl für X11 als auch Wayland eine Möglichkeit, dem Latitutde middle-button-scroll beizubringen. Bei mir funktioniert beides unter Fedora 29.

Unter X11

Wer noch X11 nutzt, hat es am Einfachsten. Hier muss nur eine Konfiguration für libinput erstellt werden. Also einfach den folgenden Inhalt kopieren und als Datei unter „/etc/X11/xorg.conf.d/40-libinput-trackpoint.conf“ oder „/usr/share/X11/xorg.conf.d/40-libinput-trackpoint.conf“ speichern.

Datei „40-libinput-trackpoint.conf“

Section "InputClass"
        Identifier "Trackpoint Scroll"          
        MatchIsPointer "on"                    
        MatchDevicePath "/dev/input/event*"  
        Option "ScrollMethod" "button"
        Option "ScrollButton" "2"
        Driver "libinput"                          
EndSection

Wer statt libinput lieber evdev nutzen möchte, findet bei Francesco Provino eine alternative Konfiguration.

Credit/Quelle: askubuntu.com


Unter Wayland

Unter Wayland ist eine einfache Anassung per libinput Konfiguration nicht möglich. PeterCyx hat aber eine (vielleicht nicht unbedingt schönen, aber funktionierenden) Workaround gefunden. Dafür den folgenden Inhalt als Datei unter „/usr/lib/hook/hook.c“ speichern.

Datei „hook.c“

#define _GNU_SOURCE
#include <dlfcn.h>
#include <libinput.h>

typedef const char* (*orig_get_name_t)(struct libinput_device *device);

const char* libinput_device_get_name(struct libinput_device *device) {
  set_scroll_emulation(device); // Inject the code to set scrolling emulation
  orig_get_name_t orig_get_name;
  orig_get_name = (orig_get_name_t) dlsym(RTLD_NEXT, "libinput_device_get_name");
  return orig_get_name(device);
}

void set_scroll_emulation(struct libinput_device *device) {
  libinput_device_config_middle_emulation_set_enabled(device, LIBINPUT_CONFIG_MIDDLE_EMULATION_ENABLED);
  libinput_device_config_scroll_set_method(device, LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN);
  libinput_device_config_scroll_set_button(device, 2);
}

Als nächstes müssen die zum Kompilieren noch fehlenden Dateien nachinstallierte werden. Anschließend den Kompilierbefehl ausführen.

sudo dnf install libinput-devel libudev-devel
sudo gcc -shared -ldl -linput -fPIC hook.c -o hook.so

Jetzt noch den folgenden Inhalt zum Einbinden der Library in der Datei „/etc/profile.d/libinput.sh“ speichern.

Datei „libinput.sh“

export LD_PRELOAD="$LD_PRELOAD /usr/lib/hook/hook.so"

Nach einem Neustart sollte jetzt das Scrollen mittels mittlerem TrackStick-Button problemlos funktionieren.

Credit/Quelle: PeterCyx

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert