Multimediatasten
Aus Gentoo Linux Wiki
| Installationsmethoden • LiveCDs • Kernel & Hardware • Laptops & Notebooks • Portage • System • Netzwerke & Services • X • Software • Anderes • alphabetischer HOWTO Index |
Inhaltsverzeichnis |
[Bearbeiten] Vorwort
Viele Tastaturen sind mit zusätzlichen Multimedia-Tasten ausgerüstet. Unter Windows braucht nur für alte Ausgaben Spezialprogramme, um diese Tasten nutzen zu können - unter Linux gibt es verschiedene, teils in X bereits integrierte Ansätze.
Es gibt verschiedene Möglichkeiten, die Tasten nutzbar zu machen. Zum einen existieren Tools, wie z.B. Lineak oder xbindkeys, zum anderen kann man eine sehr praktische und vor allem ressourcensparende Methode nutzen, und zwar xmodmap. Die Cherry CyMotion Master Linux wird mit Keyman ausgeliefert.
[Bearbeiten] xmodmap
Die einfachste Methode, auf Multimediatasten zuzugreifen, ist, mit xev den Keycode der Taste rauszufinden, in die Datei ~/.Xmodmap einzutragen und anschliessend bei dem genutzten Windowmanager die Spezialtasten mit einfachen Hotkeyfunktionen besetzten.
[Bearbeiten] Keycode herausfinden
Immer, wenn du unter Linux eine Taste drückst, generiert der Kernel eine Art Scancode, welcher mithilfe einer keycode-Tabelle einer Taste (z.B. dem Buchstaben A) zugewiesen wird. Unter X funktioniert das ganze ein wenig komplizierter - es lädt beim Starten eine eigene Keycode-Tabelle ein und bildet Tastatureingaben mithilfe der Kernel-Keycode-Tabelle darauf ab. Jeder Keycode kann dabei einem keysym entsprechen; ein keysym ist eine einfache Zeichenkette die dann die Taste repräsentiert.
Nun musst du natürlich erst einmal herausfinden, was für Keycodes die Multimediatasten deiner Tastatur haben. Das ist total einfach, denn bei X wird schon ein praktisches Tool mitgeliefert, welches diese Infos bietet: xev. Führe einfach das folgende Kommando in einem terminal unter X (wichtig!) aus:
$xev
Falls das Programm bei dir noch nicht installiert ist, so kannst du dies natürlich nachholen:
$emerge xev
Nun drücke jede Multimedia-Taste deiner Tastatur und schreibe dir die ausgegebenen Keycodes auf - sie stehen in der Ausgabe, die ungefähr so aussehen sollte:
| Code: Beispielausgabe von xev |
KeyRelease event, serial 31, synthetic NO, window 0x2800001, root 0x7d, subw 0x0, time 2792224, (-22,86), root:(565,101), state 0x10, keycode 160, same_screen YES, XLookupString gives 0 bytes: |
Einige Tasten der Tastatur erzeugen zwar einen Scancode, jedoch findet im Kernel keine Umsetzung auf Keycodes statt. Diese Tasten werden von xev nicht erfasst. Es wird aber ein Eintrag in der Fehlerkonsole bzw. in /var/log/messages erzeugt, wenn eine solche Taste gedrückt wird.
| Code: Suche nach folgenden Ausgaben in der Logdatei: |
atkbd.c: Unknown key pressed (translated set 2, code 0xaa on isa0060/serio0). atkbd.c: Use 'setkeycodes e02a <keycode>' to make it known. |
So eine Taste läßt sich sehr leicht aktivieren, indem man beim Bootvorgang mittels setkeycodes eine Zuordnung von Scancodes zu Keycodes vornimmt.
Ein getkeycodes in einem echten Terminal (CTRL ALT F2) zeigt alle belegten Keycodes. Hier sucht man nach nicht benutzten Werten größer 84.
Ein z.B. setkeycodes e02a 123 ordnet dem Scancode e02a den Keycode 123 zu. Danach sollte die Taste von xev erkannt werden.
Wenn man die Keycodes beim start des Systems laden möchte sollte man diese in die Datei /etc/conf.d/local.start eintragen.
[Bearbeiten] xmodmap aufsetzen
Jetzt brauchst du nur noch eine Datei aufzusetzen, die die keycodes zu den keysyms umsetzt. Erstelle dafür einfach eine Datei namens .Xmodmap in deinem $HOME-Verzeichnis:
$ nano -w $HOME/.Xmodmap
| Datei: Beispieldatei für .Xmodmap |
keycode 234 = XF86Back keycode 233 = XF86Forward keycode 232 = XF86Stop keycode 231 = XF86Refresh keycode 229 = XF86Search keycode 230 = XF86Explorer keycode 178 = XF86HomePage keycode 236 = XF86Mail keycode 160 = XF86AudioMute |
Die keysyms auf der rechten Seite sind natürlich keine Erfindungen, sondern passende Exemplare, von denen du mehr in der Datei /usr/share/X11/XKeysymDB finden wirst. (Bei neueren Systemen liegt diese Datei hier: /usr/lib/X11/XKeysymDB )
Jetzt muss xmodmap jedes mal gestartet werden, wenn deine X-Session startet - ein guter Platz dafür ist die Datei $HOME/.xsession:
| Datei: $HOME/.xsession |
/usr/X11R6/bin/xmodmap $HOME/.Xmodmap |
Der Vorteil gegenüber eines anderen Tools wie xbindkeys (siehe unten), ist, dass das Programm xmodmap nicht während der ganzen Session als Dämon laufen muss, sondern lediglich einmal kurz startet und die Tabelle setzt.
[Bearbeiten] Beispiele für die Konfiguration der Windowmanager
Die Multimediatasten fungieren jetzt wie normale Tasten - du kannst also nun deinem Windowmanager oder Desktop Enviroment sagen, dass du, um deinen Browser zu starten, nicht mehr Strg, Alt und F5 drücken willst, sondern einfach die Taste "XF86Explorer" ;)
[Bearbeiten] XFCE
Öffne den Settings Manager, klicke auf Window Manager und wechsel zu der keyboard-Registerkarte (tab). Um deine eigenen Tastenbindungen zu setzen, musst du eine neue Theme erstellen. Klicke auf "Hinzufügen", um sie zu erstellen (alle Tastenbindungen von der default-theme werden dann einfach in die neue Theme kopiert). In der "Tastenkombinationen für Kommandos"-Liste klicke einfach doppelt auf einen leeren eintrag, tippe das auszuführende Kommando ein und drücke dann einfach die entsprechende Multimediataste. Der keysym von deiner .Xmodmap-Datei sollte nun neben dem Kommando erscheinen. Hinweis: Xfce4 bietet leider nur die Möglichkeit, 20 Tastenkombinationen für eigene Kommandos zu erstellen.
Im übrigen können die Multimediatasten dann natürlich auch zweckentfremdet werden - so lassen sich mit einem Tastendruck wunderbar neue Desktops in grosser Zahl erstellen, wenn man entsprechendes in der Sektion "Tastenkombination für Fenster" einstellt.
[Bearbeiten] KDE
Wenn du kdm als deinen login manager nutzt, wird kdm bei jedem Login die Datei $HOME/.xprofile starten. Erstelle einfach die Datei $HOME/.Xmodmap wie oben beschrieben und schreibe dann einfach folgendes in die Datei $HOME/.xprofile:
| Datei: ~/.xprofile |
/usr/bin/xmodmap $HOME/.Xmodmap |
Anmerkung:
Bei mir hat es unter KDE 3.4 weder mit ~/.xprofile noch mit ~/.xsession funktioniert.
Man kann alternativ den Befehl in ein Shell-Script packen und dieses in ~/.kde/Autostart legen.
| Datei: ~/.kde/Autostart/tasten.sh |
#!/bin/sh /usr/bin/xmodmap $HOME/.Xmodmap |
Die Datei muss ausführbar sein:
$ chmod u+x ~/.kde/Autostart/tasten.sh
Wichtig: Falls alles konfiguriert ist, aber trotzdem nichts passiert:
$ emerge -av kde-base/kmilo
[Bearbeiten] xbindkeys
[Bearbeiten] Installation
Der Klassiker unter den Tools, um den Multimediatasten Funktionen zuordnen zu können. Installieren kann man es wie folgt:
# emerge -av xbindkeys
[Bearbeiten] Konfiguration
Zuerst muss man sich eine default .xbindkeysrc anlegen:
$ xbindkeys --defaults > ~/.xbindkeysrc
Nun muss man die Keycodes der einzelnen Tasten herausfinden. Dazu empfiehlt es sich einen Zettel und Stift bereitzuhalten und sich zu notieren, welche Taste welchen Keycode zurückliefert. Das erleichtert ungemein die Konfiguration von ~/.xbindkeys. Zum Herausfinden der Keycodes:
$ xbindkeys -mk
Beim Drücken einer Taste erscheint im Terminal beispielweise folgende Ausgabe:
"NoCommand" m:0x0 + c:26 e
Wichtig ist c:26, das ist der Keycode. Den notiert man sich für jede Taste. Erscheint bei einer oder mehreren Tasten kein Output, so hat man schlichtweg Pech gehabt, auf die Taste muss man verzichten. Das tritt vor allem bei billigen NoName Tastaturen gerne auf.
Wenn man alle Tasten durchhat, kann man die .xbindkeys konfigurieren:
nano ~/.xbindkeysrc
Der Syntax ist einfach:
"beep-media-player --play-pause"
c:234
Wenn man fertig konfiguriert hat, startet man als User den xbindkeys Dämon:
xbindkeys
Auch auf eine OSD-Anzeige braucht man nicht zu verzichten. Installiere einfach das Programm osd_cat.
emerge -av x11-libs/xosd
Der Trick ist ganz einfach, denn es werden mit jeder Taste zwei Aktionen ausgeloest: Press und Release, also druecken und loslassen. Am Beispiel oben:
"echo Play BMP | /usr/bin/osd_cat -d 6 -s 1 -A center -l 1 -p bottom -o 60 -c green -f '-adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1'"
c:234
"beep-media-player --play-pause"
c:234 + release
Beim Druecken der Taste wird mit dem Programm osd_cat der Text 'Play BMP' in gruen zentriert am unteren Bildschirmrand angezeigt, beim Loslassen der Taste wird das Programm schliesslich gestartet. So wird quasi das osd_plugin von lineakd simuliert und die Tastenbelegung funktioniert wie bei vielen Windowstreibern. Die Parameter von osd_cat koennen mit
osd_cat --help
angezeigt werden und sind selbsterklaerend.
Beim Start des Windowsmanager kann man xbindkeys automatisch laden lassen.
Wer Tasten zur Steuerung der Lauststärke nutzen möchte, kann im aumix Tipp nachlesen.
[Bearbeiten] Lineak
Lineak ist eine weitere Alternative - siehe http://lineak.sourceforge.net/ für mehr Informationen.
[Bearbeiten] Hotkeys
Ein weiteres einfach zu konfigurierendes Tool gibt es auf http://freshmeat.net/projects/hotkeys/
[Bearbeiten] Tipps und Tricks
Um die Lautstärke zu ändern und zu muten/unmuten kann auch Aumix behilflich sein.
| Problem | Lösung | ||
|---|---|---|---|
| Lautstärke erhöhen/vermindern
siehe auch: man amixer |
$amixer set Master 10%+ (erhöht die Lautstärke um 10%) $amixer set Master 10%- (vermindert die Lautstärke um 10%) | ||
| Ton aus |
$amixer set Master mute (setzt Lautstärke auf Mute) Da es in der Regel keine "Unlautlos"-Taste gibt, sollte man dem Eintrag für die "Lauter"-Taste "unmute" hinzufügen, um mit Hotkeys wieder den Sound anzukriegen: $amixer set Master 10%+ unmute | ||
| Ton an / aus mit einer Taste |
$amixer set Master toggle (umschalten zwischen Ton an / aus) | ||
| Cd-Laufwerk öffnen und schliessen mit nur einer Taste
Ab der Version 2.0.13-r2 kann man den Befehl eject -T verwenden, welcher das CD-Rom-Laufwerk wahlweise öffnet oder schließt. Falls dies nicht funktionieren sollte, kann folgendes Script verwendet werden, welches in einer Umgebungsvariable (export ...) oder eben in einer temporären Datei (siehe Beispiel rechts) den Zustand speichert. Das Shellscript auf der rechten Seite, gepackt in /usr/bin/cdswitch leistet gute Dienste :) |
|
