Zusätzlichen Tasten einer Tastatur Funktionen zuweisen: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(Quellen und weiterführende Links)
K (Wiederhergestellt zur letzten Änderung von Griffin)
Zeile 1: Zeile 1:
Author: [http://www.linux-club.de/profile.php?mode=viewprofile&u=2025 PrinzEisenherz1]
+
Hi Leute
  
== Einleitung ==
+
Nachdem ich bei der Konfiguration meines Keyboards per linEAK auf einige Probleme aber wenig Hilfe und Infos im Internet gestossen bin, habe ich die Prozedur mal als kleines Tutorial zusammengefasst.
 +
Über Korrekturen und Ergänzungen würde ich mich natürlich sehr freuen.
  
Dieses Howto behandelt die Installation und Konfiguration von Lirc unter SuSE.<br>
 
Es wurde erfolgreich unter SuSE 10.0 - 10.2 getestet und dürfte auch bei den 9er-Versionen funktionieren.<br>
 
Dieses Howto beinhaltet folgende Fernbedienungsvarianten:
 
* MEDION X10 Funkfernbedienung (USB)
 
* IR-Empfänger über serielle Schnittstelle (COM)
 
wobei der Schwerpunkt hier bei MEDION X10 liegt.
 
  
== Vorbereitende Maßnahmen ==
+
== INSTALLATION ==
  
Als erstes muß man mit YAST, Smart oder vergleichbaren Paketmanager folgende Pakete installieren:<br>
+
Hier hab' ich mich erstmal auf YaST verlassen, und einfach die Pakete "lineakd", "lineak_defaultplugin" und "lineak_kde" installiert.
* lirc
+
Man sollte darauf achten, dass man die Pakete alle aus der gleichen Quelle installiert, weil sonst evtl. das Zusammenspiel nicht so recht klappt.
* lirc-kmp-''<Kerneltyp>''<br>
+
Das Paket "lineakconfig" hab' ich diesmal auch gleich weggelassen, weil das bei meinen früheren Versuchen ohnehin nicht funktionierte.
Bei ''lirc-kmp-<Kerneltyp>'' handelt es sich um ein Paket mit zusätzlichen Treibermodulen. Hier ist es wichtig das es zum installierten Kernel passt.<br>
 
Sollte man nicht wissen welcher Kernel installiert ist, dann kann man dies auf der Konsole mit ''uname -r'' herausfinden.<br>
 
z.B. <br>
 
2.6.18.2-34-default
 
Bei diesem Beispiel handelt es sich um einen default-Kernel. Also muß man in diesem Fall das Paket ''lirc-kmp-default'' auswählen.<br>
 
<br>
 
  
== Installation MEDION X10 ==
 
  
USB-Funkempfanger anschließen und mit ''lsmod'' prüfen welche Module vom System automatisch geladen werden.<br>
+
== VORBEREITUNG ==
z.B
 
# lsmod
 
snd_seq_device          7948 2 snd_seq,snd_rawmidi
 
snd                    50692 12 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_via82xx,snd_ac97_codec, ...                                                                       
 
soundcore                    8672 1 snd
 
uhci_hcd            27280 0
 
usbcore              108804  5 ati_remote,hci_usb,ehci_hcd,uhci_hcd
 
ide_cd                35360  0
 
cdrom                  32288  1 ide_cd      <br>
 
Wie man hier erkennen kann wird automatisch das Treibermodul ''ati_remote'' geladen. Dies ist aber nicht das passende für den MEDION X10. <br>
 
Um das Modul zu entladen gibt man als Root in der Konsole folgendes ein:
 
rmmod ati_remote
 
Damit das Modul ''ati_remote'' beim nächsten Neustart bzw. beim erneuten anstecken des USB-Empfängers nicht wieder automatisch geladen wird, setzt man es in die Blacklist. <br>
 
Die Blacklist befindet sich um Unterordner
 
/etc/modprobe.d/
 
Dazu mit einem Editor die Datei blacklist editieren.
 
# mcedit /etc/modprobe.d/blacklist
 
  
Dort folgenden Eintrag hinzufügen
+
1. Um zu überprüfen, ob für mein Keyboard (Logitech Cordless Desktop S 510) bereits eine Definition vorhanden ist öffne ich (als normaler Benutzer) eine Konsole und lass mir alle bekannten Keyboards auflisten:
  
  blacklist ati_remote
+
  lineakd -l | less
  
Als nächstes läd man die benötigten Module für MEDION X10:
+
oder (weil die Liste sehr lang ist) nur die von Logitech:
modprobe lirc_dev
 
modprobe lirc_atiusb
 
  
Überprüfen ob die Module geladen wurden:
+
  lineakd -l | grep -i logitech
  # lsmod | grep lirc | grep -v
 
lirc_atiusb             16160 0
 
lirc_dev                13284 1 lirc_atiusb
 
usbcore                    108804 5 lirc_atiusb,hci_usb,ehci_hcd,uhci_hcd
 
  
Wie man erkennen kann wurden beide Module erfolgreich geladen.<br>
+
Ich hatte Pech, mein Keyboard war nicht dabei.
Als nächstes muss man die Config-Datei von Lirc anpassen. Diese befindet sich bei SuSE im Verzeichnis ''/etc/sysconfig/''<br>
+
Alle, die hier Glück haben, notieren sich das Kürzel, das vor dem Namen des entsprechenden Keyboard angezeigt wird und können direkt zum Abschnitt [[#KEYBOARD KONFIGURIEREN|KEYBOARD KONFIGURIEREN]] springen.
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.
 
  
# mcedit /etc/sysconfig/lirc
+
2. Man könnte jetzt natürlich nachschauen, ob sich ein ähnliches Keyboard in der Liste befindet und die entsprechende Definition ausprobieren. Dabei kann ein Blick in /etc/lineakkb.def hilfreich sein, da man hier sieht, welche Tasten für welches Keyboard definiert sind. Das kann aber auch sehr langwierig werden, und es ist fraglich, ob das die schnellere / einfachere Methode ist.
 +
Ich hab' mich entschlossen eine eigene Definition zu schreiben.
  
Dort muss man dann folgende Änderungen durchführen:
+
3. Erstmal machen wir uns eine Liste mit den Bezeichnungen aller Sondertasten unseres Keyboards. Am besten legt man die gleich dreispaltig an und schreibt die Namen der Tasten in die erste Spalte. Die Bezeichnungen sind prinzipiell frei wählbar, aber es ist bestimmt nicht verkehrt, sich an den anderen Definitionen zu orientieren (siehe /etc/lineakkb.def).
  
LIRCD_DEVICE=""
+
== KEYCODES BESTIMMEN ==
ändern auf
 
LIRCD_DEVICE="/dev/lirc0"
 
  
und dann noch
+
1. Wieder in der Konsole: ''xev'' eingeben. Damit werden für jedes Tastatur- bzw. Mouse-Ereignis diverse Informationen angezeigt. Uns interessiert davon nur der "keycode" unserer Sondertasten.
  
LIRC_MODULE=""
+
2. Systematisch drücken wir jetzt alle Sondertasten der Reihe nach, und tragen jeweils den Zahlenwert, der nach dem Wort "keycode" angezeigt wird zur entsprechenden Taste in der 3. Spalte unserer Liste ein. Bei manchen Tasten wird eventuell gar nix angezeigt; um die werden wir uns anschliessend kümmern.
ändern auf
 
LIRC_MODULE="lirc_atiusb"
 
  
Dadurch wird beim starten des Runlevels ''lirc'' auch gleich das Modul ''lirc_atiusb'' mitgeladen.<br><br>
+
3. Wir schließen ''xev'', indem wir das kleine Fensterchen im Vordergrund schließen, und wechseln in der Konsole zu root (su) und machen uns ein "Überwachungsfenster" auf:
  
== Installation eines Empfängers einer Hauppauge TV Karte ==
+
<code>tail -f /var/log/messages</code>
  
Dieser Abschnitt behandelt die Konfiguration von lirc um einen Hauppauge TV Karten IR Empfänger benutzen zu können.
+
Damit ermitteln wir gleich die sogenannten "scancodes" für jede Taste, die zuvor keinen Keycode hatte.
  
Voraussetzungen: lirc ist installiert, lirc kernelmodule sind installiert (Vorgehensweise oben beschrieben).
+
4. Für jede Taste ohne Keycode, die wir jetzt drücken, zeigt unser Überwachungsfenster u.a. eine Zeile nach dem folgenden Muster an:
  
Zunächst muss man ein Paar Änderungen an der Konfigurationsdatei vornehmen.
+
<code>kernel: atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known</code>
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.
 
  
# mcedit /etc/sysconfig/lirc
+
Hier interessiert uns die hexadezimale Zahl vor "<keycode>", in unserem Beispiel "e03b".
 +
Das machen wir nun für alle nicht belegten Tasten und tragen die Werte in die 2.Spalte unserer Tabelle ein. Mit ''CTRL+C'' stoppen wir die Überwachung in unserer Konsole.
  
Dort muss man dann folgende Änderungen durchführen:
+
5. Jetzt brauchen wir unbenutzte Keycodes, die wir unseren eben ermittelten Scancodes zugordnen können. Die finden wir in /etc/defkeymap.map. Am Besten schreiben wir sie in eine Datei in unseren .lineak-Ordner im home-Verzeichnis:
  
LIRCD_DEVICE=""
+
<code>grep '^keycode *[0-9]* =$' /etc/defkeymap.map > ~/.lineak/unusedKC.txt</code>
ändern zu
 
LIRCD_DEVICE="/dev/lirc0"
 
  
LIRC_MODULE=""
+
Mit einem Texteditor können wir in dieser Datei nun alle unbelegten Keycodes nachschauen.
ändern zu
 
LIRC_MODULE="lirc_i2c"
 
  
Nun brauchen wir eine lircd.conf die zu Hauppauge TV-Karten passt.
+
6. Wir ordnen unseren Scancodes (2. Spalte unserer Liste) beliebige freie Keycodes aus der eben erstellten Datei zu (als root):
Wir nehmen die folgenden Zeilen und speichern sie in Datei dieser Datei.
 
/etc/lircd.conf
 
  
+
<code>setkeycodes scancode1 keycode1 scancode2 keycode2 ... scancodeN keycodeN</code>
 
 
begin remote
 
  
  name  hauppauge_pvr
 
  bits          13
 
  flags RC5|CONST_LENGTH
 
  eps            30
 
  aeps          100
 
  
  one          969  811
+
7. Jetzt wechseln wir wieder zum normalen Benutzer und ermitteln mit ''xev'' (siehe Punkt 1. und 2.) nun die Keycodes die unter X unseren "toten" Tasten zugeordnet wurden (Achtung, die unterscheiden sich von denen, die wir per ''setkeycodes'' zugewiesen haben!).
  zero          969  811
+
Die Ergebnisse tragen wir in unsere 3.Spalte ein, die damit dann komplettiert wird.
  plead        1097
 
  gap          114605
 
  toggle_bit      2
 
  
 +
== DEFINITION SCHREIBEN  ==
  
      begin codes
+
1. Wir erstellen uns im linEAK-Verzeichnis eine Vorlage für unsere eigene Definition:
          Power                    0x00000000000017FD
 
          Go                      0x00000000000017FB
 
          1                       0x00000000000017C1
 
          2                        0x00000000000017C2
 
          3                        0x00000000000017C3
 
          4                        0x00000000000017C4
 
          5                        0x00000000000017C5
 
          6                        0x00000000000017C6
 
          7                        0x00000000000017C7
 
          8                        0x00000000000017C8
 
          9                        0x00000000000017C9
 
          Back/Exit                0x00000000000017DF
 
          0                        0x00000000000017C0
 
          Menu                    0x00000000000017CD
 
          Red                      0x00000000000017CB
 
          Green                    0x00000000000017EE
 
          Yellow                  0x00000000000017F8
 
          Blue                    0x00000000000017E9
 
          Ch+                      0x00000000000017E0
 
          Ch-                     0x00000000000017E1
 
          Vol-                    0x00000000000017D1
 
          Vol+                    0x00000000000017D0
 
          Ok                      0x00000000000017E5
 
          Mute                    0x00000000000017CF
 
          Blank                    0x00000000000017CC
 
          Full                    0x00000000000017FC
 
          Rewind                  0x00000000000017F2
 
          Play                    0x00000000000017F5
 
          Forward                  0x00000000000017F4
 
          Record                  0x00000000000017F7
 
          Stop                    0x00000000000017F6
 
          Pause                    0x00000000000017F0
 
          Replay                  0x00000000000017E4
 
          Skip                    0x00000000000017DE
 
      end codes
 
  
  end remote
+
  sed -n '/^\[/,$ p' /etc/lineakkb.def | sed '/^\n*$/,$ d' > ~/.lineak/myKeyboard.def
  
Nun laden wir testweise das Kernelmodul. Als root in einer Konsole geben wir folgendes ein.
 
#modprobe lirc_i2c
 
  
Nun können wir lirc mit folgendem befehl starten.
+
2. Diese Datei öffnen wir mit einem Texteditor. Sie ist nach folgendem Muster aufgebaut:
#lircd
 
  
Nun testen wir einmal ob ein Signal ankommt
+
  [LTCDXX]
#irw
+
      brandname = "Logitech"
und tippen ein bischen auf der Fernbedienung rum.
+
      modelname = "Cordless Desktop XX"
 +
      [KEYS]
 +
        Taste1 = 123
 +
        Taste2 = 345
 +
        Taste3 = 567
 +
        Taste4 = 789
 +
      [END KEYS]
 +
  [END LTCDXX]
  
== Installation IR-Empfänger über serielle Schnittstelle (COM) ==
 
  
Dieser Abschnitt behandelt die Installation eines IR-Empfängers über serielle Schnittstelle (COM).<br>
+
3. Jetzt ändern wir diese Datei so, dass sie unser Keyboard repräsentiert.
Solch ein Empfänger kann mit etwas Geschick und geringen Kosten selbst gebaut werden.<br>
+
Dazu tragen wir anstelle von "LTCDXX" ein passendes Kürzel ein (aber keines, das schon in /etc/lineakkb.def vorkommt. Am besten mit lineakd -l überprüfen), ändern die Einträge für "brandname" und "modelname" entsprechend unserem Keyboard. Anschließend ersetzen wir Taste1-Taste4 mit unseren Tasten-Keycode-Paaren (1. und 3.Spalte unserer Liste). Speichern nicht vergessen.
Eine gute Anleitung findest sich auf folgender Website:<br>
 
[http://www.nasauber.de/linux_know_how/lang/lirc/ Bauanleitung IR-Empfänger]<br><br>
 
Um den IR-Empfänger mit ''lirc'' verwenden zu können, muss man die COM-Schnittstelle noch anpassen.<br>
 
Dazu muss man als erstes das Programm ''setserial'' installieren. Dies ist bei SuSE mit dabei. Man kanns auch mit Smart, opt, oder ähnlichem<br>
 
installieren. Dann gibt man als root in der Konsole folgenden Befehl ein:<br>
 
# setserial /dev/ttyS0 uart none
 
  
''/dev/ttyS0'' steht hierbei für die COM1-Schnittstelle.<br>
+
== KEYBOARD KONFIGURIEREN ==
Damit dies auch bei einem Neustart geschieht, fügt man diesen Befehl am besten in folgende Datei ein:
 
/etc/init.d/boot.local
 
Somit wird es bei jedem Neustart automatisch durchgeführt.<br>
 
  
Als nächstes läd man als root das Modul für den seriellen IR-Empfänger:
+
1. Zuerst müssen wir eine Konfigurationsdatei für unser Keyboard erstellen.
# modprobe lirc_serial
 
  
Überprüfen ob die Module geladen wurden:
+
Wenn unser Keyboard unter [[#VORBEREITUNG|VORBEREITUNG]] gefunden wurde, gab es in der Ausgabe ein Kürzel für unser Keyboard. Dieses setzen wir statt "LTCXX" in folgendem Befehl ein:
# lsmod | grep lirc | grep -v
 
 
   
 
   
Hier sollte dann eine Ausgabe erscheinen wo ''lirc_dev'' und ''lirc_serial'' erscheinen. <br>
+
lineakd -e /etc/lineakkb.def -f ~/.lineak/lineakd.conf -c LTCXX
Als nächstes muss man die Config-Datei von Lirc anpassen. Diese befindet sich bei SuSE im Verzeichnis ''/etc/sysconfig/''<br>
 
Dazu einfach mit einem Editor z.B. MCEdit die Datei als root editieren.
 
 
 
# mcedit /etc/sysconfig/lirc
 
 
 
Dort muss man dann folgende Änderungen durchführen:
 
 
 
LIRCD_DEVICE=""
 
ändern auf
 
LIRCD_DEVICE="/dev/lirc0"
 
 
 
Gegebenenfalls muss hier ''/dev/lirc'' verwendet werden. Am besten ausprobieren.<br>
 
und dann noch
 
 
 
LIRC_MODULE=""
 
ändern auf
 
LIRC_MODULE="lirc_serial"
 
 
 
Dadurch wird beim starten des Runlevels ''lirc'' auch gleich das Modul ''lirc_serial'' mitgeladen.<br><br>
 
 
 
== Die lircd.conf Konfiguration ==
 
 
 
Damit lirc die eingehenden Signale der Fernbedienung auch den passenden Tasten zuordnen kann, benötigt man noch eine passende ''lircd.conf''.<br>
 
Diese kann man für die gebräuchlichsten Fernbedienungen von der lirc-Website runterladen.
 
http://lirc.sourceforge.net/remotes/ <br> <br>
 
Beispiel lircd.conf MEDION X10:<br>
 
# Please make this file available to others
 
# by sending it to <lirc@bartelmus.de>
 
#
 
# this config file was automatically generated
 
# using lirc-0.7.0(atiusb) on Fri Feb 18 01:53:46 2005
 
#
 
# contributed by FUX 2005-02-17
 
#
 
# brand: Medion
 
# model no. of remote control: RF Remote Control
 
#                              FCC ID: B4S20016398
 
# devices being controlled by this remote:
 
#
 
  begin remote
 
  name  Medion_X10
 
  bits          16
 
  eps            30
 
  aeps          100
 
  one            0    0
 
  zero            0    0
 
  pre_data_bits  8
 
  pre_data      0x14
 
  post_data_bits  16
 
  post_data      0x0
 
  gap          227928
 
  toggle_bit      0
 
begin codes
 
3                        0x000000000000E40F
 
2                        0x000000000000E30E
 
1                        0x000000000000E20D
 
4                        0x000000000000E510
 
5                        0x000000000000E611
 
6                        0x000000000000E712
 
7                        0x000000000000E813
 
8                        0x000000000000E914
 
9                        0x000000000000EA15
 
0                        0x000000000000EC17
 
ok                      0x000000000000F31E
 
up                      0x000000000000EF1A
 
down                    0x000000000000F722
 
right                    0x000000000000F41F
 
left                    0x000000000000F21D
 
del                      0x000000000000F520
 
ren                      0x0000000000000B36
 
red                      0x0000000000000732
 
green                    0x0000000000000833
 
yellow                  0x0000000000000934
 
blue                    0x0000000000000A35
 
txt                      0x000000000000EB16
 
ch-                      0x000000000000E10C
 
ch+                      0x000000000000E00B
 
vol+                    0x000000000000DE09
 
vol-                    0x000000000000DD08
 
mute                    0x000000000000D500
 
tv                      0x000000000000012C
 
vcr                      0x000000000000022D
 
dvd                      0x000000000000D904
 
music                    0x000000000000DB06
 
radio                    0x000000000000032E
 
photo                    0x000000000000DA05
 
preview                  0x000000000000042F
 
list                    0x0000000000000530
 
desktop                  0x0000000000000631
 
setup                    0x000000000000F01B
 
snapshot                0x000000000000ED18
 
acquire                  0x0000000000000C37
 
play                    0x000000000000FA25
 
reward                  0x000000000000F924
 
forward                  0x000000000000FB26
 
stop                    0x000000000000FD28
 
rec                      0x000000000000FC27
 
pause                    0x000000000000FE29
 
skipr                    0x000000000000F621
 
skipf                    0x000000000000F823
 
dvdmenu                  0x000000000000EE19
 
dvdaudio                0x0000000000000F3A
 
off                      0x000000000000D702
 
chsearch                0x000000000000F11C
 
fullscreen              0x0000000000000E39
 
editimage                0x0000000000000D38
 
end codes
 
 
 
<br>
 
Jetzt startet man ''lirc''<br>
 
 
 
Zum starten des Runlevels ''lirc'' als root folgenden Befehl ausführen:
 
# rclirc start
 
mit
 
# rclirc status
 
überprüfen ob ''lirc'' gestartet wurde.<br>
 
Damit der Runlevel ''lirc'' bei jedem Systemstart automatisch gestartet wird führt man als root folgendes aus:<br>
 
# chkconfig lirc on
 
 
 
Es werden durch ''lirc'' jetzt im Verzeichnis ''/dev'' folgende Major-Dateien angelegt:
 
lirc
 
lirc0
 
Diese muss man noch mit den passenden Rechten versehen damit auch ein normaler Nutzer ''lirc'' nutzen kann.
 
Dieses erziehlt man als root in der Konsole mit folgenden Befehlen:
 
# chmod 666 /dev/lirc
 
# chmod 666 /dev/lirc0
 
 
 
  
Um jetzt die Fernbedienung zu testen, startet man das Hilfsprogramm ''irw''
+
Wenn wir, wie oben beschrieben, eine eigene Definitionsdatei erstellt haben, setzen wir das Kürzel, welches wir darin für unser Keyboard vergeben haben, statt "LTCXX" in folgendem Befehl ein:
  
  # cd /usr/bin
+
  lineakd -e ~/.lineak/myKeyboard.def -f ~/.lineak/lineakd.conf -c LTCXX
# ./irw
 
  
Wenn jetzt eine Taste auf der Fernbedienung gedrückt wird, dann gibt ''irw'' die Bezeichnung und den Tastencode aus! Dann weiß man das die lirc-Konfiguration läuft.
+
Somit haben wir die Datei /home/ausführender_Benutzer/.lineak/lineakd.conf erstellt.
<br><br>
 
  
  
== Steuern von Kaffeine, XMMS, Amarok, usw mit lircrc ==
+
2. In die Datei lineakd.conf wird nun für jede Taste eingetragen, was diesselbe auslösen soll. Hierfür gibt es vordefinierte Makros, aber auch die Möglichkeit beliebige Kommandos auszuführen. Man kann die Einträge manuell per Texteditor vornehmen, oder die grafische Oberfläche von Klineakconfig benutzen.
  
Um mit ''lirc'' auch Programme (z.B. XMMS) steuern zu können benötigt man, zwei im Hintergrund laufende, deamons.<br>
+
3. Eine Liste der Makros erhält man mit:
Diese müssen in der Konsole als normaler Nutzer aufgerufen werden.<br>
 
Bevor diese aber gestartet werden muss man im Verzeichnis ''/etc'' noch die Datei ''lircrc'' anlegen.
 
Diese befüllt man mit den Steuerbefehlen für z.B XMMS.<br>
 
Um XMMS mit ''lirc'' steuern zu können muss noch zusätzlich das Paket ''xmms-plugins'' installiert werden und in XMMS unter ''Optionen -> Plugins -> Allgemeine Plugins'' das Lircplugin aktiviert werden.
 
<br><br>
 
Beispiel lircrc:
 
  
  begin irexec
+
  lineakd -L | less
begin
 
prog  = irexec
 
button = music
 
config = xmms &
 
mode  = xmms
 
repeat = 0
 
end
 
begin
 
prog  = irexec
 
button = radio
 
config = amarok &
 
mode  = amarok
 
repeat = 0
 
end
 
end irexec
 
begin xmms
 
begin
 
button = play
 
prog = xmms
 
config = play
 
end
 
begin
 
prog = xmms
 
button = pause
 
config = pause
 
end
 
begin
 
prog = xmms
 
button = stop
 
config = stop
 
end
 
begin
 
prog = xmms
 
button = skipf
 
config = next
 
end
 
begin
 
prog = xmms
 
button = skipr
 
config = prev
 
end
 
begin
 
prog = xmms
 
button = forward
 
config = FWD 3
 
repeat = 2
 
end
 
begin
 
prog = xmms
 
button = reward
 
config = BWD 3
 
repeat = 2
 
end
 
begin
 
prog = xmms
 
button = off
 
config = QUIT
 
mode = irexec
 
repeat = 0
 
end
 
end xmms
 
begin amarok
 
begin
 
prog  = irexec
 
button = play
 
config = dcop amarok player playPause
 
end
 
....
 
begin
 
prog  = irexec
 
button = off
 
config = dcop amarok MainApplication-Interface quit
 
mode  = irexec
 
repeat = 0
 
end
 
end amarok
 
  
<br>
+
Teilweise haben diese selbsterklärende Namen, wer detaillierte Informationen benötigt sei auf die Dokumentation auf der Projekthomepage von linEAK verwiesen:
Mit folgenden Befehlen werden jetzt die beiden Deamons als normaler Nutzer gestartet:<br>
+
http://lineak.sourceforge.net/index.php?nav=docs
/usr/bin/irexec -d /etc/lircrc
 
/usr/bin/irxevent &
 
  
um diese automatisch bei jedem Neustart zu laden schreibt man am besten ein bash-Script und legt dieses in
+
4. Wenn man Klineakconfig benutzen möchte, startet man diesen am besten mit:
/home/''<Nutzername>''/.kde/Autostart/
+
''ALT+F2'', gibt "klineakconfig" in den Dialog ein und bestätigt.
 +
Jetzt sollte ein Pinguin-Symbol mit Tastatur in der Taskleiste erscheinen.
 +
So wird linEAK zukünftig auch automatisch mit dem System gestartet und die Sondertasten stehen immer zur Verfügung.
  
Beispiel bash-Script ''lircstart.sh'':<br>
+
5. Neben den Makros können für eine Taste beliebige Befehle angegeben werden, zu dem der jeweilige Benutzer berechtigt ist.
#!/bin/bash
+
Hierfür lohnt es auch, sich mit dem dcop-System auseinandersetzen. Ein guter Einstiegspunkt dafür mit grafischer Oberfläche ist kdcop.
sleep 2
+
''ALT+F2'' und "kdcop" eingeben und bestätigen.
/usr/bin/irexec -d /etc/lircrc
 
/usr/bin/irxevent &
 
kdialog --passivepopup "IREXEC und IRXEVENT wurden gestartet" 3
 
  
Diese muss dann noch ausführbar gemacht werden:
+
== STARTBEDINGUNGEN ==
  
# chmod +x /home/''<Nutzername>''/.kde/Autostart/lircstart.sh
+
1. Wenn wir zuvor den "setkeycodes"-Befehl benötigten, um Scancodes auf Keycodes abzubilden, ist es wichtig diese Zuordnungen in ein Startskript einzubauen. Sonst würden wir diese Einstellungen beim Booten wieder verlieren. Der entsprechende Befehl ist der gleiche, wie unter [[#KEYCODES BESTIMMEN|KEYCODES BESTIMMEN]] Punkt 6., nur dass er in ein Startskript geschrieben werden muss.
 +
Es bietet sich an, dies in /etc/init.d/boot.local einzutragen.
 +
Ich habe es am Ende von /etc/init.d/kbd eingetragen, so wird die Zuordnung immer vorgenommen, nachdem die Grundeinstellungen des Keyboards geladen wurden.
  
== Probleme mit Lirc ==
+
2. Wenn man KlinEAK benutzt, sollte es das schon gewesen sein.
 +
Will man das aus irgendeinem Grund nicht, kann man ein eigenes Startskript schreiben. Infos dazu findet man unter /etc/init.d/skeleton und /usr/share/doc/packages/lineakd.rc.
  
Wenn man bei laufendem Lirc den USB-Funkempfänger entfernt dann wird innerhalb ganz kurzer Zeit das Logfile ''lircd'' unter ''/var/log/''
+
==  WEITERE INFOS ==
mit Fehlermeldungen überflutet. Bei einer Größe von über 2GB wird dann der Runlevel ''lirc'' abgeschossen und kann nicht mehr gestartet werden. <br>
 
Um dies zu vermeiden sollte man ''lirc'' nicht als Runlevel starten. Also nicht mit ''chkconfig lirc on'' auf Autostart setzten, sondern mit folgendem Script nur auf Bedarf starten bzw beenden:<br>
 
  
Lirc_StartStop.sh
+
/usr/share/doc/packages/lineakd/<br>
 +
/usr/share/doc/packages/lineak_defaultplugin/<br>
 +
/usr/share/doc/packages/lineak_kde/<br>
  
#!/bin/bash
+
* http://lineak.sourceforge.net
#
 
# Lirc starting script writen by Schneider Johnny 06112006
 
# Dieses Schript prüft wie groß das Log-File von Lirc ist und löscht es gegebenenfalls.
 
# Dann wird geprüft ob sich der Funkempfänger am USB-Slot befinden und startet dann Lirc.
 
# Wenn der Empfänger entfernt wird dann lässt sich der Lirc-deamon beenden.
 
# Variablen erstellen
 
GEFUNDEN=
 
FS=                # Leere Variable für die Dateigrösse (FileSize)
 
DATEI=20000000    # Variable für den Vergleich erzeugen und mit Wert belegen
 
# 1. Abschnitt
 
# prüfen ob Log-Datei lircd vorhanden ist
 
if (test -f /var/log/lircd);
 
then
 
#echo "Datei gefunden!"
 
# Dateigrösse von /var/log/lircd ermitteln und mit Hilfe
 
# der Kommandosubstitution in eine Variable schreiben.
 
FS=$(ls -l /var/log/lircd | tr -s " " | cut -d " " -f 5)
 
# Bildschirmausgabe über Dateigröße
 
#echo "Die Log-Datei Lircd ist $FS Byte groß."
 
fi
 
if (test $FS -gt $DATEI);then
 
#echo "Die Datei ist zu groß und wird jetzt gelöscht ..."
 
kdesu rm /var/log/lircd
 
#else
 
#echo "Die Dateigröße ist ok"
 
fi
 
# Es wird geprüft ob der Funkempfänger Medion X10 angeschlossen ist
 
if ( ps x | grep lirc | grep -v grep );then
 
kdesu killall lircd
 
kdialog --passivepopup "Der Lirc-Deamon wurde beendet !!!!" 4
 
elif ( lsusb | grep X10 | grep -v grep );then
 
kdesu rclirc start
 
/usr/bin/irexec -d /etc/lircrc
 
/usr/bin/irxevent &
 
kdialog --passivepopup "IREXEC und IRXEVENT wurden gestartet" 3
 
#echo "Lirc-deamon wird gestartet ..."
 
else
 
exit
 
fi
 
  
<br>
 
Jetzt kann man bequem vom Sofa aus seine Programme steuern.<br>
 
Viel Glück und viel Spass bei der Umsetzung!
 
  
== Quellen und weiterführende Links ==
 
  
* [http://www.lirc.org Lirc-Homepage]
+
Viel Spaß
* [http://lirc.sourceforge.net/remotes/ lircd.conf von unterstützten Fernbedienungen]
+
tisyb
  
  

Version vom 27. Februar 2007, 08:34 Uhr

Hi Leute

Nachdem ich bei der Konfiguration meines Keyboards per linEAK auf einige Probleme aber wenig Hilfe und Infos im Internet gestossen bin, habe ich die Prozedur mal als kleines Tutorial zusammengefasst. Über Korrekturen und Ergänzungen würde ich mich natürlich sehr freuen.


INSTALLATION

Hier hab' ich mich erstmal auf YaST verlassen, und einfach die Pakete "lineakd", "lineak_defaultplugin" und "lineak_kde" installiert. Man sollte darauf achten, dass man die Pakete alle aus der gleichen Quelle installiert, weil sonst evtl. das Zusammenspiel nicht so recht klappt. Das Paket "lineakconfig" hab' ich diesmal auch gleich weggelassen, weil das bei meinen früheren Versuchen ohnehin nicht funktionierte.


VORBEREITUNG

1. Um zu überprüfen, ob für mein Keyboard (Logitech Cordless Desktop S 510) bereits eine Definition vorhanden ist öffne ich (als normaler Benutzer) eine Konsole und lass mir alle bekannten Keyboards auflisten:

lineakd -l | less 

oder (weil die Liste sehr lang ist) nur die von Logitech:

lineakd -l | grep -i logitech

Ich hatte Pech, mein Keyboard war nicht dabei. Alle, die hier Glück haben, notieren sich das Kürzel, das vor dem Namen des entsprechenden Keyboard angezeigt wird und können direkt zum Abschnitt KEYBOARD KONFIGURIEREN springen.

2. Man könnte jetzt natürlich nachschauen, ob sich ein ähnliches Keyboard in der Liste befindet und die entsprechende Definition ausprobieren. Dabei kann ein Blick in /etc/lineakkb.def hilfreich sein, da man hier sieht, welche Tasten für welches Keyboard definiert sind. Das kann aber auch sehr langwierig werden, und es ist fraglich, ob das die schnellere / einfachere Methode ist. Ich hab' mich entschlossen eine eigene Definition zu schreiben.

3. Erstmal machen wir uns eine Liste mit den Bezeichnungen aller Sondertasten unseres Keyboards. Am besten legt man die gleich dreispaltig an und schreibt die Namen der Tasten in die erste Spalte. Die Bezeichnungen sind prinzipiell frei wählbar, aber es ist bestimmt nicht verkehrt, sich an den anderen Definitionen zu orientieren (siehe /etc/lineakkb.def).

KEYCODES BESTIMMEN

1. Wieder in der Konsole: xev eingeben. Damit werden für jedes Tastatur- bzw. Mouse-Ereignis diverse Informationen angezeigt. Uns interessiert davon nur der "keycode" unserer Sondertasten.

2. Systematisch drücken wir jetzt alle Sondertasten der Reihe nach, und tragen jeweils den Zahlenwert, der nach dem Wort "keycode" angezeigt wird zur entsprechenden Taste in der 3. Spalte unserer Liste ein. Bei manchen Tasten wird eventuell gar nix angezeigt; um die werden wir uns anschliessend kümmern.

3. Wir schließen xev, indem wir das kleine Fensterchen im Vordergrund schließen, und wechseln in der Konsole zu root (su) und machen uns ein "Überwachungsfenster" auf:

tail -f /var/log/messages

Damit ermitteln wir gleich die sogenannten "scancodes" für jede Taste, die zuvor keinen Keycode hatte.

4. Für jede Taste ohne Keycode, die wir jetzt drücken, zeigt unser Überwachungsfenster u.a. eine Zeile nach dem folgenden Muster an:

kernel: atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known

Hier interessiert uns die hexadezimale Zahl vor "<keycode>", in unserem Beispiel "e03b". Das machen wir nun für alle nicht belegten Tasten und tragen die Werte in die 2.Spalte unserer Tabelle ein. Mit CTRL+C stoppen wir die Überwachung in unserer Konsole.

5. Jetzt brauchen wir unbenutzte Keycodes, die wir unseren eben ermittelten Scancodes zugordnen können. Die finden wir in /etc/defkeymap.map. Am Besten schreiben wir sie in eine Datei in unseren .lineak-Ordner im home-Verzeichnis:

grep '^keycode *[0-9]* =$' /etc/defkeymap.map > ~/.lineak/unusedKC.txt

Mit einem Texteditor können wir in dieser Datei nun alle unbelegten Keycodes nachschauen.

6. Wir ordnen unseren Scancodes (2. Spalte unserer Liste) beliebige freie Keycodes aus der eben erstellten Datei zu (als root):

setkeycodes scancode1 keycode1 scancode2 keycode2 ... scancodeN keycodeN


7. Jetzt wechseln wir wieder zum normalen Benutzer und ermitteln mit xev (siehe Punkt 1. und 2.) nun die Keycodes die unter X unseren "toten" Tasten zugeordnet wurden (Achtung, die unterscheiden sich von denen, die wir per setkeycodes zugewiesen haben!). Die Ergebnisse tragen wir in unsere 3.Spalte ein, die damit dann komplettiert wird.

DEFINITION SCHREIBEN

1. Wir erstellen uns im linEAK-Verzeichnis eine Vorlage für unsere eigene Definition:

sed -n '/^\[/,$ p' /etc/lineakkb.def | sed '/^\n*$/,$ d' > ~/.lineak/myKeyboard.def


2. Diese Datei öffnen wir mit einem Texteditor. Sie ist nach folgendem Muster aufgebaut:

 [LTCDXX]
     brandname = "Logitech"
     modelname = "Cordless Desktop XX"
     [KEYS]
        Taste1 = 123
        Taste2 = 345
        Taste3 = 567
        Taste4 = 789
     [END KEYS]
 [END LTCDXX]


3. Jetzt ändern wir diese Datei so, dass sie unser Keyboard repräsentiert. Dazu tragen wir anstelle von "LTCDXX" ein passendes Kürzel ein (aber keines, das schon in /etc/lineakkb.def vorkommt. Am besten mit lineakd -l überprüfen), ändern die Einträge für "brandname" und "modelname" entsprechend unserem Keyboard. Anschließend ersetzen wir Taste1-Taste4 mit unseren Tasten-Keycode-Paaren (1. und 3.Spalte unserer Liste). Speichern nicht vergessen.

KEYBOARD KONFIGURIEREN

1. Zuerst müssen wir eine Konfigurationsdatei für unser Keyboard erstellen.

Wenn unser Keyboard unter VORBEREITUNG gefunden wurde, gab es in der Ausgabe ein Kürzel für unser Keyboard. Dieses setzen wir statt "LTCXX" in folgendem Befehl ein:

lineakd -e /etc/lineakkb.def -f ~/.lineak/lineakd.conf -c LTCXX

Wenn wir, wie oben beschrieben, eine eigene Definitionsdatei erstellt haben, setzen wir das Kürzel, welches wir darin für unser Keyboard vergeben haben, statt "LTCXX" in folgendem Befehl ein:

lineakd -e ~/.lineak/myKeyboard.def -f ~/.lineak/lineakd.conf -c LTCXX 

Somit haben wir die Datei /home/ausführender_Benutzer/.lineak/lineakd.conf erstellt.


2. In die Datei lineakd.conf wird nun für jede Taste eingetragen, was diesselbe auslösen soll. Hierfür gibt es vordefinierte Makros, aber auch die Möglichkeit beliebige Kommandos auszuführen. Man kann die Einträge manuell per Texteditor vornehmen, oder die grafische Oberfläche von Klineakconfig benutzen.

3. Eine Liste der Makros erhält man mit:

lineakd -L | less 

Teilweise haben diese selbsterklärende Namen, wer detaillierte Informationen benötigt sei auf die Dokumentation auf der Projekthomepage von linEAK verwiesen: http://lineak.sourceforge.net/index.php?nav=docs

4. Wenn man Klineakconfig benutzen möchte, startet man diesen am besten mit: ALT+F2, gibt "klineakconfig" in den Dialog ein und bestätigt. Jetzt sollte ein Pinguin-Symbol mit Tastatur in der Taskleiste erscheinen. So wird linEAK zukünftig auch automatisch mit dem System gestartet und die Sondertasten stehen immer zur Verfügung.

5. Neben den Makros können für eine Taste beliebige Befehle angegeben werden, zu dem der jeweilige Benutzer berechtigt ist. Hierfür lohnt es auch, sich mit dem dcop-System auseinandersetzen. Ein guter Einstiegspunkt dafür mit grafischer Oberfläche ist kdcop. ALT+F2 und "kdcop" eingeben und bestätigen.

STARTBEDINGUNGEN

1. Wenn wir zuvor den "setkeycodes"-Befehl benötigten, um Scancodes auf Keycodes abzubilden, ist es wichtig diese Zuordnungen in ein Startskript einzubauen. Sonst würden wir diese Einstellungen beim Booten wieder verlieren. Der entsprechende Befehl ist der gleiche, wie unter KEYCODES BESTIMMEN Punkt 6., nur dass er in ein Startskript geschrieben werden muss. Es bietet sich an, dies in /etc/init.d/boot.local einzutragen. Ich habe es am Ende von /etc/init.d/kbd eingetragen, so wird die Zuordnung immer vorgenommen, nachdem die Grundeinstellungen des Keyboards geladen wurden.

2. Wenn man KlinEAK benutzt, sollte es das schon gewesen sein. Will man das aus irgendeinem Grund nicht, kann man ein eigenes Startskript schreiben. Infos dazu findet man unter /etc/init.d/skeleton und /usr/share/doc/packages/lineakd.rc.

WEITERE INFOS

/usr/share/doc/packages/lineakd/
/usr/share/doc/packages/lineak_defaultplugin/
/usr/share/doc/packages/lineak_kde/


Viel Spaß tisyb


Zurück zu Hardware