xbindkeys
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
xbindkeys 🇬🇧 bietet dem Benutzer die Möglichkeit, unabhängig vom Fenstermanager Tastenkombinationen zum Ausführen von Befehlen festzulegen. Des Weiteren kann man es dazu benutzen, die Tasten einer Maus mit Funktionen zu belegen.
Installation¶
Folgendes Paket muss installiert [1] werden:
xbindkeys (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install xbindkeys
Oder mit apturl installieren, Link: apt://xbindkeys
Um die Konfiguration zu vereinfachen gibt es das Paket
xbindkeys-config (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install xbindkeys-config
Oder mit apturl installieren, Link: apt://xbindkeys-config
Für die Nutzung von xdotool gibt es das Paket
xdotool (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install xdotool
Oder mit apturl installieren, Link: apt://xdotool
Benutzung¶
Vor dem ersten Start muss eine Konfigurations-Datei im Homeverzeichnis des Benutzers erstellt werden. Dies ist normalerweise die Datei ~/.xbindkeysrc, deren Verwendung auch hier im Artikel beschrieben wird. Eine Beispielkonfiguration kann mit dem Befehl
xbindkeys --defaults > $HOME/.xbindkeysrc
erstellt werden.
Es ist auch möglich, eine alternative Konfigurationsdatei in der Scheme-Syntax zu benutzen (wenn die Guile-Unterstützung 🇬🇧 nicht abgeschaltet wurde). Damit sind erweiterte Konfigurationen von xbindkeys möglich, beispielsweise Verwendung von Doppelklicks oder getimeten Klicks. Eine Beispielkonfiguration dafür kann mit dem Befehl
xbindkeys --defaults-guile > ~/.xbindkeysrc.scm
erstellt werden.
Hinweis:
xbindkeys versucht zuerst, die Scheme-Konfigurationsdatei ~/.xbindkeysrc.scm zu lesen. Nur falls diese nicht existiert, wird die Standardkonfigurationsdatei ~/.xbindkeysrc benutzt.
Von nun an kann das Programm mit dem Befehl
xbindkeys
im Hintergrund gestartet werden oder bei Anmeldung geladen werden [3].
Konfiguration¶
Hinweis:
xbindkeys sollte seine Konfigurationsdatei normalerweise automatisch neu laden, sobald sie geändert wurde. Funktioniert das nicht, so kann das Neuladen mit dem Befehl killall -HUP xbindkeys
und dem kurzen bewegen der Maus erzwungen werden.
Die Konfigurations-Datei wird mit einem Editor bearbeitet [3] und ist nach dem folgenden Schema aufgebaut:
# Kommentar "Befehl" Taste(nkombination)
Unter Kubuntu 11.10 ist die Konfigurations-Datei nach folgendem Schema aufgebaut:
;; Kommentar (xbindkey '(Tastenkombination) "Befehl")
Folgendes Beispiel bewirkt, dass mit der Tastenkombination Strg + E der Editor Gedit aufgerufen wird.
#Texteditor "gedit" control+e
Die Tastenkombinationen können in der hier gezeigten Schreibweise oder als Tastencodes angegeben werden [4], für das obige Beispiel:
#Texteditor "gedit" m:0x14+c:26
Um einzelne Codes für Tasten und Tastenkombinationen abzufragen, können auch Parameter von xbindkeys genutzt werden:
-k
für eine einzelne Taste-mk
für eine Tastenkombination
z.B.
xbindkeys -k
Um statt der Standard-Datei .xbindkeysrc eine andere Datei zu verwenden, dient der Parameter -f
. Ein beispielhafter Aufruf einer speziellen Konfiguration könnte wie folgt aussehen:
xbindkeys -f ~/.MEINExbindkeysrc
Maus-Tasten¶
Die Maus-Tasten sind in der Regel:
Taste | Code | |
Links | b:1 | |
Mitte (Scrollrad) | b:2 | |
Rechts | b:3 |
Nachdem man die gewünschte Taste bestimmt hat, kann man sie mit Befehlen belegen. Die Bestimmung der Maustasten geht einfach, indem man in der Konsole
xev |grep button
eingibt, und die entsprechenden Tasten klickt.
Erweiterte Funktionalität¶
Für erweiterte Funktionalität kann man das Paket
xautomation (universe )
Befehl zum Installieren der Pakete:
sudo apt-get install xautomation
Oder mit apturl installieren, Link: apt://xautomation
installieren [1]. Das Programm xte aus diesem Paket dient unter anderem dazu, Tastenkombinationen an Programme zu senden.
Um zum Beispiel die beiden Daumentasten einer üblichen Maus mit einfachem Scrollrad für die in den meisten Programmen verfügbaren Vor- und Zurückbuttons, welche meistens den Shortcut Alt + ← und Alt + → haben, zu konfigurieren, muss in der Konfigurations-Datei Folgendes eingetragen werden:
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'" b:6 # Maustaste 6 "xte 'keydown Alt_L' 'key Right' 'keyup Alt_L'" b:7 # Maustaste 7
Hinweis:
Sollten die Daumentasten nach den obigen Einträgen in der Xbindkeys-Konfigurationsdatei und einem anschließenden Neustart von xbindkeys dennoch nicht reagieren, so könnten die Daumentasten eine andere Bezeichnung als b:6
bzw. b:7
besitzen. Für eine Logitech MX310 Maus werden die Daumentasten bspw. über b:8
und b:9
angesprochen. Ein wenig Probieren könnte sich lohnen.
oder für eine moderne Maus mit horizontalem Scrollen
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'" b:8 # Maustaste 8 "xte 'keydown Alt_L' 'key Right' 'keyup Alt_L'" b:9 # Maustaste 9
Falls man eine Maus mit nur einer Daumentaste hat und diese mit einem Doppelklick belegen möchte, sähe das dann so aus:
"xte 'mouseclick 1' 'mouseclick 1'" b:6 + Release # Maustaste 6
Die weiteren Möglichkeiten von xte finden sich mit Beispielen in dessen Manpage.
Hinweis:
Es wird manchmal von dem Problem berichtet, dass beim Aufruf von xte durch xbindkeys keine Aktion erfolgt. Dieses Problem kann man beheben, indem man + Release
an die Tastenkombination anhängt (der Befehl wird also erst beim Loslassen der Tasten ausgeführt). Dabei ist außerdem noch zu beachten, dass mehrere Tasten einer Tastenkombination auch wirklich gleichzeitig losgelassen werden müssen.
Auch Kombinationen aus Tastatureingaben und Maus-Klicks sind möglich. Um beispielsweise mit Strg und der linken Maustaste unter GNOME ein Bildschirmfoto zu machen, dient folgender Eintrag:
#Screenshot "gnome-screenshot" control + b:1
Grafische Rückmeldung¶
Um eine Anzeige zu erhalten, wenn man mit xbindkeys einen Befehl ausführt, können der Benachrichtigungsdienst oder XOSD genutzt werden. Dazu wird der Benachrichtigungsdienst bzw. der On-Screen Display über eine Taste oder Tastenkombination gestartet und der eigentliche Befehl erst, wenn man die Tasten wieder los lässt (+release
). In beiden Fällen muss das jeweilige Programm installiert sein, was in den einzelnen Artikeln beschrieben ist.
Benachrichtigungsdienst¶
Um mit Alt + P den Play-/Pause-Status des XMMS-Audioplayers umzuschaltet und eine grafische Rückmeldung des Benachrichtigungsdienstes zu erhalten, dient folgender Eintrag:
# Play/Pause "notify-send -u normal -i /usr/share/icons/crystalsvg/32x32/apps/xmms.png 'XMMS-Status' 'Play/Pause'" alt+p "xmms -t" alt+p+release
XOSD¶
Um mit dieser Tastenkombination den selben Befehl auszuführen, aber statt des Benachrichtigungsfeldes einen Text als On-Screen Display zu erhalten, ist folgendes Beispiel gedacht:
# Play/Pause "echo Play/Pause | /usr/bin/osd_cat -d 6 -s 1 -A center -l 1 -p bottom -o 60 -c '#009bf9' -f '-adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1'" alt+p "xmms -t" alt+p+release
Beispiel 1¶
In Verbindung mit XOSD und dem Alsamixer kann hieraus beispielsweise eine Lautstärkeregelung über die Tastatur mit grafischer Rückmeldung durch XOSD erstellt werden.
Ein einfacher und beispielhafter Abschnitt für die Konfigurations-Datei ~/.xbindkeysrc sieht wie folgt aus:
#Volume 10% "osd_cat -d 1 -b percentage -P 10 --text Volume:" control+1 "amixer set PCM 10%" control+1+release #Volume 20% "osd_cat -d 1 -b percentage -P 20 --text Volume:" control+2 "amixer set PCM 20%" control+2+release #Volume 30% "osd_cat -d 1 -b percentage -P 30 --text Volume:" control+3 "amixer set PCM 30%" control+3+release #Volume 40% "osd_cat -d 1 -b percentage -P 40 --text Volume:" control+4 "amixer set PCM 40%" control+4+release #Volume 50% "osd_cat -d 1 -b percentage -P 50 --text Volume:" control+5 "amixer set PCM 50%" control+5+release #Volume 60% "osd_cat -d 1 -b percentage -P 60 --text Volume:" control+6 "amixer set PCM 60%" control+6+release #Volume 70% "osd_cat -d 1 -b percentage -P 70 --text Volume:" control+7 "amixer set PCM 70%" control+7+release #Volume 80% "osd_cat -d 1 -b percentage -P 80 --text Volume:" control+8 "amixer set PCM 80%" control+8+release #Volume 90% "osd_cat -d 1 -b percentage -P 90 --text Volume:" control+9 "amixer set PCM 90%" control+9+release #Volume 100% "osd_cat -d 1 -b percentage -P 100 --text Volume:" control+0 "amixer set PCM 100%" control+0+release
Mit diesen Einstellungen kann die Lautstärke über die Tastenkombinationen Strg + 1 bis Strg + 0 in Zehn-Prozent-Schritten geregelt werden, wobei für eine Sekunde die Anzeige einer Lautstärke-Bar auf dem Bildschirm erfolgt.
Beispiel 2¶
Durch das obige Beispiel inspiriert hier noch eine Möglichkeit einer Lautstärkenreglung mit den zusätzlichen Maustasten, die viele Mäuse haben.
Mithilfe dieses Skriptes lässt sich die Lautstärke in Abhängigkeit zum übergebenen Parameter -u
oder -d
regeln. Die krummen Zahlen müssen eventuell angepasst werden. Die nötigen Information findet man in der Dokumentation zu amixer:
amixer -h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #!/bin/sh # Zwischenspeichern des übergebenen Parameter um ihn in der Funktion nutzbar zu # machen tmp=$1 # Abfrage der aktuellen Lautstärke volume="`amixer -c 0 sget PCM | grep 'Front Left:' | tr -s " " | cut -d " " -f 6`" # erhöht oder verringert die Lautstärke in Abhängigkeit zum übergebenen Parameter -u oder -d # Parameter (-u -d) vol() { if [ "$tmp" = -u ] then `amixer -c 0 sset PCM $1` elif [ "$tmp" = -d ] then `amixer -c 0 sset PCM $2` fi } # ruft die Funktion vol mit den entsprechenden Parametern auf if [ $# -eq 1 ] then case "$volume" in "[0%]") vol "10%" "0%" ;; "[13%]") vol "20%" "0%" ;; "[23%]") vol "30%" "10%" ;; "[32%]") vol "40%" "20%" ;; "[42%]") vol "50%" "30%" ;; "[52%]") vol "60%" "40%" ;; "[61%]") vol "70%" "50%" ;; "[71%]") vol "80%" "60%" ;; "[81%]") vol "90%" "70%" ;; "[90%]") vol "100%" "80%" ;; "[100%]") vol "100%" "90%" ;; esac else # kleine Hilfe echo "-u zur Erhöhung der Lautstärke angeben" echo "-d zur Verringerung der Lautstärke angeben" fi |
Und hier noch der Ausschnitt aus der ~/.xbindkeysrc, bei dem auch noch die Buttons an die eigenen Bedürfnisse angepasst werden sollten. Welche Tasten wie heißen. bekommt man mit xev ganz einfach heraus.
# Volume up "~/volume-control.sh -u" b:11 # Volume down "~/volume-control.sh -d" b:12
xdotool¶
Die meisten Displaymanager liefern bereits OSD-Ausgaben für die meisten Funktionstasten mit. Um diese nutzen zu können, lässt sich mit Hilfe von xdotool die Eingabe von Tasten simulieren, was für ein homogeneres Erscheinungsbild sorgt. Als Beispiel dient hier die Lautstärkeregelung mittels des horizontalen Scrollrads einer Maus (Tasten müssen wie immer evtl. an die Maus angepasst werden):
# Volume UP: "xdotool key XF86AudioRaiseVolume" b:7 # Volume DOWN: "xdotool key XF86AudioLowerVolume" b:6
Die horizontalen Tasten des Scrollrads werden dabei auf die Funktionstasten für die Lautstärkeregelung abgebildet, wodurch exakt der selbe Effekt entsteht wie beim Drücken der jeweiligen (Funktions-)Taste. Der Keycode für die jeweilige Funktionstaste lässt sich z.B. in den Tastatureinstellungen im Menü für Tastenkombinationen ermitteln.
Soll das ganze statt mit der Maus mittels Tastatureingabe erfolgen, z.B. mit
Strg +
- , müssen diese Tasten zunächst entfernt werden, da der XServer sonst
Strg +
- + XF86AudioLowerVolume
erkennt. Dies kann z.B. mittels xmacro
oder Xmodmap erledigt werden.