ubuntuusers.de

xbindkeys

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

./logo.png

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:

TasteCode
linke Maustaste Linksb:1 Wiki/Icons/mouse2.png
mittlere Maustaste Mitte (Scrollrad)b:2
rechte Maustaste Rechtsb: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

./notify.png

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.

Diese Revision wurde am 30. Januar 2018 09:15 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Desktop, System