[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Autostart: Automatischer Start von Programmen] [:xev: Tasten bestimmen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./logo.png, align=left)]] [http://www.nongnu.org/xbindkeys/xbindkeys.html xbindkeys] {en} 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: {{{#!vorlage Paketinstallation xbindkeys, universe }}} Um die Konfiguration zu vereinfachen gibt es das Paket {{{#!vorlage Paketinstallation xbindkeys-config, universe }}} Für die Nutzung von [:xdotool:] gibt es das Paket {{{#!vorlage Paketinstallation xdotool, universe }}} = 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 {{{#!vorlage Befehl xbindkeys --defaults > $HOME/.xbindkeysrc }}} erstellt werden. Es ist auch möglich, eine alternative Konfigurationsdatei in der [wikipedia:Scheme:]-Syntax zu benutzen (wenn die [http://www.gnu.org/software/guile/guile.html Guile-Unterstützung] {en} 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 {{{#!vorlage Befehl xbindkeys --defaults-guile > ~/.xbindkeysrc.scm }}} erstellt werden. {{{#!vorlage 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 {{{#!vorlage Befehl xbindkeys }}} im [:Shell/Prozesssteuerung:Hintergrund] gestartet werden oder bei Anmeldung geladen werden [3]. = Konfiguration = {{{#!vorlage 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 [[Vorlage(Tasten, strg+e)]] der Editor [:gedit: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. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl xbindkeys -f ~/.MEINExbindkeysrc }}} [[Anker(Maus)]] == Maus-Tasten == Die Maus-Tasten sind in der Regel: ||Taste||<-2>Code|| ||[[Vorlage(Tasten, lmt)]] Links||``b:1``||<|3 cellstyle="text-align: center;"> [[Bild(Wiki/Icons/mouse2.png, 64, )]]|| ||[[Vorlage(Tasten, mmt)]] Mitte (Scrollrad)||``b:2``|| ||[[Vorlage(Tasten, rmt)]] 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 {{{#!vorlage Befehl xev |grep button }}} eingibt, und die entsprechenden Tasten klickt. ## '''Verweis''': Tasteneinstellungen für [:Baustelle/Logitech/Mäuse:Logitech-Mäuse] (verschiedene Modelle) == Erweiterte Funktionalität == Für erweiterte Funktionalität kann man das Paket {{{#!vorlage Paketinstallation xautomation, universe }}} 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 [[Vorlage(Tasten, Alt+Links)]] und [[Vorlage(Tasten, Alt+Rechts)]] 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 }}} {{{#!vorlage 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 [:man:Manpage]. {{{#!vorlage 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 [[Vorlage(Tasten, strg)]] und der linken Maustaste unter [:GNOME:] ein Bildschirmfoto zu machen, dient folgender Eintrag: {{{ #Screenshot "gnome-screenshot" control + b:1 }}} [[Anker(Anzeige)]] = 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 == [[Bild(./notify.png, align=right)]] Um mit [[Vorlage(Tasten, alt+p)]] den Play-/Pause-Status des [:Archiv/XMMS:XMMS]-Audioplayers umzuschaltet und eine grafische Rückmeldung des [:Benachrichtigungsdienst: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 [:XOSD: 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 [[Vorlage(Tasten, strg+1)]] bis [[Vorlage(Tasten, 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: {{{#!vorlage Befehl amixer -h }}} {{{#!code Bash #!/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 [[Vorlage(Tasten, Strg)]] + [[Vorlage(Tasten, minus)]], müssen diese Tasten zunächst entfernt werden, da der [:XServer:] sonst [[Vorlage(Tasten, Strg)]] + [[Vorlage(Tasten, minus)]] + `XF86AudioLowerVolume` erkennt. Dies kann z.B. mittels `xmacro` oder [:Xmodmap:] erledigt werden. # tag: System, Desktop