PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multimedia-Tasten auch ohne zusätzliche Software nutzbar machen



Thovan
25.04.05, 10:39
Hy,

da ich mir ein neues Keyboard mit Multimedia-Tasten zugelegt habe, wollte ich diese natürlich auch gerne nutzen können.
Natürlich gibt es dafür sehr praktische Software, wie etwa LinEAK (http://lineak.sourceforge.net/), aber es geht auch ohne.
Deshalb habe ich hiermit ein kleines HowTo geschrieben, was alle nötigen Schritte zur Einrichtung von Multimedia-Keyboards beschreibt.
Es kann auch sehr nützlich für Leute sein, die zwar mit LinEAK arbeiten, bei denen aber nicht alle Tasten funktionieren.

Für dieses HowTo habe ich Informationen aus vielen Threads dieses Forums zusammengetragen und auch einiges anderen HowTos entnommen.
Daher vielen Dank an alle hilfsbereiten Linuxforen-User und die HowTo-Autoren!

Eine Liste mit Links und eine Quellenangabe stehen am Ende dieses HowTos!


Edit:
Leider mangelt es mir momentan an der Zeit hier weiterzuschreiben!
Ich wollte aber allen betroffenen/interessierten Nutzern hiermit mitteilen, dass dieses HowTo weitergeführt werden wird, sobald ich wieder Zeit dazu finde.
Ich bitte um euer Verständnis.

Ab und an ein Blick hierher kann aber nicht schaden!

Thovan
25.04.05, 10:42
0. Copyright (http://www.linuxforen.de/forums/showpost.php?p=1140792)

I. USB-Keyboards (http://www.linuxforen.de/forums/showpost.php?p=1140793)
II. Software zum Auslesen der Keycodes (http://www.linuxforen.de/forums/showpost.php?p=1140794)
III. Tastenbelegung festlegen (http://www.linuxforen.de/forums/showpost.php?p=1140799)
III.I Tastenbelegung für die Konsole festlegen (http://www.linuxforen.de/forums/showpost.php?p=1140801)
III.II Tastenbelegung unter X festlegen (http://www.linuxforen.de/forums/showpost.php?p=1140802)

IV. Was tun bei "toten" Tasten (http://www.linuxforen.de/forums/showpost.php?p=1140806)

V. Der Aufbau von Keymaps (http://www.linuxforen.de/forums/showpost.php?p=1141696)

VI. Hilfreiche Software (http://www.linuxforen.de/forums/showpost.php?p=1141698)
VII. Einige Befehle, die auf Tasten gelegt werden könnten (http://www.linuxforen.de/forums/showpost.php?p=1141699)

VIII. Quellen/Links (http://www.linuxforen.de/forums/showpost.php?p=1141707)

IX. Stand des HowTos/Änderungen (http://www.linuxforen.de/forums/showpost.php?p=1141865)

Thovan
25.04.05, 10:46
Gemäß der Regelungen zum Copyright von HowTos im Linuxforum (http://www.linuxforen.de/forums/showthread.php?t=94526):
Alle Rechte liegen allein bei mir als Autor.

Für jede Veröffentlichung wird meine Zustimmung benötigt.
Eine Veröffentlichung unter fremden Namen ist nicht gestattet. Es ist stets mein Benutzername mit anzugeben.

Sollte sich jemand nicht an diese Bestimmungen halten, behalte ich es mir vor rechtliche Schritte aufgrund der Verletzung meiner Urheberrechte gegen diese Person einzuleiten.


Ausserdem würde ich mich freuen, falls Ihr mir mitteilt, wenn Ihr dieses HowTo von irgendwo verlinkt.

Thovan
25.04.05, 10:47
Ein kleiner Tip vornweg:

Wenn ein USB-Keyboard benutzt werden soll, dann kann es vorkommen, das dieses nicht zu funktionieren scheint.

Mir passierte es, dass ich mein Keyboard zwar im BIOS benutzen konnte, aber in der Installationsroutine von Fedora Core 3 keine Eingaben machen konnte.
Abhilfe schafft in diesem Fall die Aktivierung des "USB Legacy Supports" im BIOS (meist bei Peripherial Configuration oder ähnlich).

Thovan
25.04.05, 10:48
Um den Tasten Funktionen zuweisen zu können, müssen wir deren Keycodes kennen.
Ein Keycode ist im Prinzip die "Kennung" der Taste, die diese absendet, sobald Sie gedrückt wird.
Jeder Tastendruck löst zwei Events aus: das KeyPress event und das KeyRelease event.
Die Namen sind eigentlich selbsterklärend: Beim Drücken wird das KeyPress event ausgelöst und beim "Loslassen" der Taste dann das KeyRelease event.

Zum Auslesen des KeyCodes, der bei einem solchen Event zuürckgegeben wird, gibt es zwei wichtige Programme: xev und showkey.

showkey ist für die Tastenbelegung auf der Konsole (ohne X!) zuständig, während xev für die Events unter X wichtig ist.
(Dabei geht es nicht nur um Keyboard-Tasten, auch die Maus und andere USB-HID-Geräte(?) lassen sich damit auslesen.)

Thovan
25.04.05, 10:52
Um die Tastenbelegungen festzulegen braucht man zunächst einmal die Keycodes der Tasten.
Diese liest man, je nachdem mit einem der oben genannten Programme aus.
Dabei ist wichtig, dass auf der Konsole in der Regel ein anderes Tasten-Mapping gültig ist als im graphischen Modus unter X.

Thovan
25.04.05, 10:52
Auf der reinen Konsole (nicht im Terminalfenster unter X!) lassen sich die Keycodes der Tasten mittels showkey anzeigen.
Showkey gehört zum Paket Kbd.
Einfach showkey eingeben und danach die Taste drücken, die man belegen möchte.
10 Sekunden nach dem letzten Druck beendet sich das Programm von selbst.

Das ganze sieht dann in etwa so aus:

kb Modus war UNICODE
[ Wenn Sie das unter X probieren, muß es nicht funktionieren,
da der X Server ebenfalls von /dev/console liest. ]

Drücken Sie eine Taste (Programmende 10 s nach dem letzten Tastendruck)...
Tastencode 28 loslassen
Tastencode 115 drücken
Tastencode 115 loslassen
Tastencode 114 drücken
Tastencode 114 loslassen
Tastencode 113 drücken
Tastencode 113 loslassen

Ich hatte nacheinander die Tasten "lauter" (hier Keycode 115), "leiser" (hier Keycode 114) und "Stumm" (hier Keycode 113) gedrückt.
Auf einer anderen Tastatur sind die Keycodes eventuell anders.

Nun da die Keycodes feststehen, sollen Sie natürlich auch eine Funktion bekommen.
Dafür muss eine eigene Keymap angelegt werden.

Die Standard Keymap für deutsche Tastaturen ist "de-latin1.map.gz" oder (je nachdem was beim Installieren der Distribution ausgewählt wurde) "de-latin1-nodeadkeys.map.gz".

Die aktuelle Keymap ist in der Datei /etc/sysconfig/keyboard (unter Red Hat oder Fedora Core) oder /etc/rc.config) (unter SuSE) in der Zeile, die mit KEYTABLE= beginnt gespeichert.
Beide Dateien befinden sich im Verzeichnis /usr/lib/kbd/keymaps/i386/qwertz/ oder wie bei mir (unter Fedora Core 3 ) in /lib/kbd/keymaps/i386/qwertz/.
Eventuell kann die Datei-Endung "*.map.gz" abweichen und "*.kmap.gz" lauten.
(Das sollte allerdings nur unter Red Hat 6 der Fall sein.)

Damit wir jetzt nicht die Funktion jeder Taste einzeln wieder neu beschreiben müssen binden wir mittels
include "de-latin1-nodeadkeys.map.gz" die bestehende Keymap in unsere eigene Keymap ein.

Jetzt wollen wir natürlich noch die Funktionen unserer 3 Multimedia-Tasten für die Lautstärke in unsere eigene Keymap einbinden. Für das Regeln der Lautstärke benutzen wir das Programm amixer (für ALSA-Treiber!).

Folgende Kommandozeilen brauchen wir:

Lauter: amixer set Master 1+
Leiser: amixer set Master 1-
Stumm: amixer set Master toggle


Zunächst muss die Funktion definiert werden, dass geschieht über string
Funktion = "befehl\n".
Der auf den Kommandozeilen-Befehl folgende Zeilenumbruch "\n" entspricht dem Drücken von [ENTER] um einen Befehl auf der Konsole auszuführen.

Das ganze sähe also dann in unserer privaten Keymap etwa so aus:

string F100 = "amixer set Master 1+\n"
string F101 = "amixer set Master 1-\n"
string F102 = "amixer set Master toggle\n"

Der Funktionsname sollte einer der ungenutzten Funktion ab F100 entsprechen.
Leider gibt es scheinbar keine Möglichkeit einen eigenen Funktionsnamen zu definieren.

Jetzt müssen noch die Keycodes der Funktion zugewiesen werden, was mit keycode xxx = Funktion geschieht. Dabei steht xxx für den Keycode und Funktion natürlich für den von uns gewählten Namen für die Funktion, also in etwa so
keycode 115 = F100
keycode 114 = F101
keycode 113 = F102.

Die gesamte Keymap würde alsodann wie folgt aussehen:

# private Keymap
include "de-latin1-nodeadkeys.map.gz"

# Funktionsstrings
string F100 = "amixer set Master 1+\n"
string F101 = "amixer set Master 1-\n"
string F102 = "amixer set Master toggle\n"

# Keycodes
keycode 115 = F100
keycode 114 = F101
keycode 113 = F102

Diese wird als private.map abgespeichert und mittels gzip private.map
komprimiert. Jetzt muss die komprimierte Datei private.map.gz noch in den Ordner mit den anderen Keymaps kopiert werden (/usr/lib/kbd/keymaps/i386/qwertz/ oder /lib/kbd/keymaps/i386/qwertz/).

Zum Ausprobieren kann die Keymap mit loadkeys meine.map aktiviert werden.
Damit das beim nächsten Start automatisch passiert muss noch in der Konfigurationsdatei
die Keymap mittels KEYTABLE="private.map.gz" geändert werden.

Thovan
25.04.05, 10:58
Viele Leute arbeiten ja hauptsächlich im graphischen Modus unter X.
Allerdings unterscheiden sich hier die Keycodes der Tasten von denen auf der reinen Konsole und deshalb gelten die im Kapitel "III.I Tastenbelegung für die Konsole festlegen" beschriebenen Tastenbelegungen unter X nicht.
Diese müssen daher neu ausgelesen werden.
Hierzu wird xev benutzt.

Unter X braucht man keine eigene Keymap wie auf der Konsole anzulegen, sondern muss nur die Keycodes der Sondertasten mit ihrer Funktion in die Datei ~/.Xmodmap eintragen.
(Die Tilde ~ steht für das Home-Verzeichnis des Users. ~/.Xmodmap steht also für /home//.Xmodmap)
Alternativ (wenn die Tastenbelegung nicht nur für einen einzelnen User sondern für alle User des PCs gelten soll) kann man die Änderungen auch global in der Datei /etc/X11/Xmodmap speichern.

Die Syntax der Xmodmap-Dateien entspricht der der Keymaps, die beim Systemstart geladen werden (siehe Kapitel "III.I Tastenbelegung für die Konsole festlegen (http://www.linuxforen.de/forums/showpost.php?p=1140801)"), nur die Keycodes unterscheiden sich eben.

Als Beispiel hier mal meine unmodifizierte /etc/X11/Xmodmap (aus der Fedora Core 3 Distribution):
! /etc/X11/Xmodmap
!
! global Xmodmap file -- used by both xdm and xinit (startx)

! keycode and keysym remapping should generally be used only if the X
! server config file has been configured to disable the XKEYBOARD
! extension

! i386 and alpha
! keycode 22 = BackSpace
! keycode 107 = Delete

! powerpc
! keycode 59 = BackSpace
! keycode 125 = Delete

! sparc
! keycode 50 = BackSpace
! keycode 73 = Delete

! Euro sign support
! keycode 26 = e E currency
! keycode 54 = c C cent
! keycode 113 = Mode_switch Mode_switch Multi_key

Wie man sehen kann, werden hier Kommentare mit einem "!" eingeleitet.
Den Keycodes werden hier mehrere Funktionen zugeordnet. Ein Beispiel, was das leicht verständlich darstellt, ist hier die drittletzte Zeile.
Der Keycode 26 ist normal mit der Funktion (in diesem Fall ist die Funktion gleichbedeutend mit Zeichen) "e" verknüpft.
Dahinter sind aber noch die Funktionen "E" und "currency" genannt.
Dies' sind die Funktionen der Taste, wenn diese mit einer so genannten Modifier-Taste gedrückt wird. Also ein großes "E" wenn Shift gedrückt ist oder das "€"-Symbol beim gleichzeitigen Drücken der AltGr-Taste.

Mehr dazu steht im Kapitel "Der Aufbau von Keymaps" (http://www.linuxforen.de/forums/showpost.php?p=1141696)

Zunächst sollen erstmal die Keycodes der Lautstärke-Tasten bestimmt werden.
Hierzu wird (unter X!) in einem Terminal-Fenster das Programm xev gestart und fokussiert (einfach in's Programmfenster klicken). Dann werden wieder die Tasten Lauter, Leiser und Stumm gerdückt.

Die Ausgabe von xev beim Drücken dieser Tasten sieht dann in etwa so aus:

KeyPress event, serial 27, synthetic NO, window 0x1c00001,
root 0xa2, subw 0x1c00002, time 8033674, (56,33), root:(1087,54),
state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
root 0xa2, subw 0x1c00002, time 8033858, (56,33), root:(1087,54),
state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:

KeyPress event, serial 30, synthetic NO, window 0x1c00001,
root 0xa2, subw 0x1c00002, time 8034218, (56,33), root:(1087,54),
state 0x0, keycode 174 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
root 0xa2, subw 0x1c00002, time 8034410, (56,33), root:(1087,54),
state 0x0, keycode 174 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:

KeyPress event, serial 30, synthetic NO, window 0x1c00001,
root 0xa2, subw 0x1c00002, time 8034770, (56,33), root:(1087,54),
state 0x0, keycode 160 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
root 0xa2, subw 0x1c00002, time 8035018, (56,33), root:(1087,54),
state 0x0, keycode 160 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:

(Die gesamte Ausgabe von xev ist natürlich länger, da Sie jedes Event umfasst.
Der Übersichtlichkeit halber habe ich nur den relevanten Teil gepostet!)

Insgesamt wurden beim Drücken dieser 3 Tasten wieder 6 Events ausgelöst (jeweils ein KeyPress event und ein KeyRelease event je Tastendruck). Zu jedem Event wurde jeweils ein Block mit Informationen ausgegeben, in dem das Wort keycode gefolgt vom Keycode der Taste steht. Ich habe diese Stelle in obiger Ausgabe durch Fettschrift markiert.

Es ergeben sich unter X also die Keycodes 176 für Lauter, 174 für Leiser und 160 für Stumm.


[u]wird fortgesetzt

Thovan
25.04.05, 11:06
..........

Thovan
26.04.05, 11:01
kommt noch

Thovan
26.04.05, 11:03
mmkc

Homepage: http://mmkc.sourceforge.net/

Ein kleines(?) Programm, mit dem Multimedia-Tasten auf Keyboards aktiviert und belegt werden können. Ebenso kann man damit seiner Maus neue Funktionen zuweisen.
stefan.becker hat unter [3] (http://www.linuxforen.de/forums/showpost.php?p=1141699) ein HowTo zu diesem Programm geschrieben.

--

LinEak

Homepage: http://lineak.sourceforge.net/

Ein Daemon der Tastatureingaben überwacht und mit dessen Hilfe Multimedia-Tasten Funktionen zugewiesen werden können. Es werden bereits sehr viele Tastaturen von haus aus unterstützt und die Liste wird stetig erweitert, aber auch unbekannte Tastaturen lassen sich leicht damit Programmieren.
Auf der Homepage gibt es auch grafisches Konfigurationsprogramm.

--

khotkeys

khotkeys ist Bestandteil von KDE.
Bevor man es benutzt sollte zuerst im KDE-Kontrollzentrum unter "Regionaleinstellungen & Zugangshilfen" und dann "Tastaturlayout" die passende Tastatur ausgewählt werden.

Thovan
26.04.05, 11:04
für die Konsole


unter X

Thovan
26.04.05, 11:17
[1] Von Qwertz und heißen Tasten (http://www.linux-user.de/ausgabe/2000/06/052-keymaps/keymaps.html) (LinuxUser)
[2] Multimedia Tasten und Linux (http://www.gnustuff.com/pub/doc/misc/mmkeys.html) ( Manuel Capellari)
[3] Multimedia Tastaturen unter Linux (http://www.linuxforen.de/forums/showthread.php?t=165921) (stefan.becker)
[4] ANWENDUNGSTIP: LinEAK (http://www.linuxforen.de/forums/showthread.php?t=26647) (Ulli Ivens)

Thovan
26.04.05, 14:32
Stand des HowTos: April 2005

Änderungen:
25. April 2005:
Anlegen des HowTos
25. April 2005:
Anlegen der Kapitel "Inhaltsverzeichnis", "Copyright", "USB-Keyboards", "Software zum Auslesen der Keycodes", "Tastenbelegung festlegen", "Tastenbelegung für die Konsole festlegen", "Quellen/Links"
26. April 2005:
Inhaltsverzeichnis geändert;
neue Kapitel "Hilfreiche Software", "Einige Befehle, die auf Tasten gelegt werden könnten" und "Stand des HowTos/Änderungen" angelegt;
"Inhaltsverzeichnis" aktualisiert und mit neuen Kapiteln verknüpft;
Kapitel "Hilfreiche Software" begonnen;
Kapitel "Tastenbelegung unter X festlegen" begonnen;
Kapitel "Der Aufbau von Keymaps" eingefügt
15. Mai 2005:
Kapitel "Tastenbelegung unter X festlegen" weitergeschrieben;