• Diese Anleitung ist für jene gedacht, die LIRC von Grund auf besser verstehen wollen.
    Es ist weniger eine Anleitung zur Installation von Lirc im XBMC sondern eine Erklärung, wie diese zusammenarbeiten.

    Erforderliche Grundkenntnisse:

    - LIRC installieren und konfigurieren http://wiki.ubuntuusers.de/LIRC
    - Dateien mit Root-Rechten bearbeiten

    LIRC kann einen durchaus in die Verzweifelung treiben.
    Generell ist das Ziel ja eindeutig:
    Wenn ich die Taste "Gelb" drücke, dann soll im XBMC die Information des Videos angezeigt werden.
    Aber schon bei diesem simplen Gedanken kommt es zu Überschneidungen.
    Soll denn die Taste nur im Bereich "Video" die Funktion "VideoInfo" haben, oder soll die Taste auch die Funktionen:
    - Systeminfo im Home-Screen
    - AlbumInfo im Musikbereich
    haben?

    Somit haben wir schon 3 Wünsche an eine Taste.

    Um die Funktionsweise zu erläutern, nehme ich in dieser Erklärung den härtesten Fall an:
    Eine Universalfernbedienung mit einer beliebigen Vorlage.
    Es gibt also keine Vorgefertigten *.conf Dateien.

    -
    Die Infratotbefehle aus der Fernbedienung sind für den PC nur Impulse auf einem Empfänger. (Stichwort: mode2 http://wiki.ubuntuusers.de/LIRC)
    Er kann damit von Haus aus rein garnichts anfangen.
    Um das Ziel "Gelbe Taste->XBMC-Homescreen->Systeminfo" zu erreichen, müssen einige Stationen abgearbeitet werden.

    Das System bekommt ein Signal und vergleicht dieses mit dem Inhalt der lircd.conf.
    Signal 0x8BEE -> Gelb
    Das XBMC schaut in der Lircmap.XML nach dem Befehl "Gelb" und übersetzt diesen mit dem Befehl "Info".
    Dann wird in der Remote.XML nach dem Befehl "Info" in der jeweiligen GUI-Ebene nachgeschaut und dieser in die dort hinterlegten Befehle angewendet.
    Somit müssen immer mindestens 3 Dateien aufeinander abgestimmt sein.
    lircd.conf->Lircmap.xml->remote.xml


    Schaut man sich die klassische [definition='3','0']keymap[/definition].xml an, dann bemerkt man schnell, dass die Befehle im Grunde bereits alle vergeben sind.
    Für den Großteil der Nutzer sollten die auch reichen. http://wiki.xbmc.org/?title=Keymap.xml
    Ungefähr in der Mitte kommt die "Remote Section".
    Auf der linken Seite der Tabelle sieht man alle direkt möglichen Button-Strings.
    Der Button-String ist nichts weiter als die Position2 in unserer Befehlskette: die Lircmap.XML
    Man muss sich nicht durch die anzahl der Strings in der [definition='3','0']keymap[/definition].xml beschränken lassen.
    Die Kombination aus den Befehlen der Keymap.xml und eigenen Buttons, die eben nicht dort aufgeführt sind, ist auch Problemlos möglich. Es kostet nur ein wenig mehr Zeit.
    Es sind technisch betrachtet 256 Tasten möglich.

    --
    Wer noch mehr Buttons benötigt, als die aus der [definition='3','0']keymap[/definition].xml Vorlage, der muss diese als OBC-Buttons in der [definition='3','0']keymap[/definition].xml angeben, Unterhalb der Sektion <universalremote>:

    Code
    <universalremote>          
      <obc148>Stop</obc148>
    </universalremote>


    ---

    Somit ergibt sich immer folgende Befehlskette:
    Ich muss einen Namen für eine Taste vergeben (lircd.conf), die dann in der Lircmap.xml PASSEND zum XBMC-System übersetzt wird und dann in der Remote.xml mit einer Funktion des XBMC belegt werden kann.
    Es gibt (noch) keine direkte Lirc->XBMC Methode. Der Übersetzer Lircmap.XML ist notwendig.

    --
    LIRC installieren. (um eine funktionierende lircd.conf zu erhalten)
    Eine sehr gute LIRC Anleitung ist auf http://wiki.ubuntuusers.de/LIRC zu finden.
    (Eine Installationsanleitung passend zum erwähntem Atric-IR-Einschalter findet sich hier: [HowTo] Atric IR-Einschalter unter Ubuntu einrichten )

    Ich werde die Installation hier nicht noch mal komplett durchgehen, jedoch etwas zu der Methode sagen.

    Bei der Installation wird man bereits nach einer Hardware gefragt.
    Meist ist dies zumindest für den Empfänger eindeutig, da man entweder einen USB oder einen ComPort Empfänger hat.

    Bei einem ComPort Receiver wie dem von Artic http://www.atric.de/IR-Einschalter/index.php wird über dmesg ein "Low-Receiver" an ttys0 angezeigt.
    Um zu testen, ob der Empfänger reagiert, sollte man erst mit mode2 testen, ob überhaupt irgendwas ankommt.
    mode2 zeigt alles an, was es an Signalen über den Empfänger kommt.
    Unabhängig von irgendeiner conf Datei.
    Kommt nichts an, dann kann das z.B. an den falsche geladenen Modulen liegen. (REMOTE_MODULES="lirc_serial")

    Kommt über mode2 etwas an, dann geht es weiter mit irrecord.

    irrecord benötigt einen Pfad und einen Treiber.
    irrecord erklärt sich von alleine. Man klickt sich so durch seine Fernbedienung, bis man nach den Tastennamen gefragt wird.
    Ich empfehle, die Tastennamen so zu benenennen, wie diese auch auf der Fernbedienung benannt sind.
    Auch wenn das Ziel ist, dass die Taste "Gelb" am Ende den Befehl "Info" ausführt, ist es einfacher, die Taste erst mal "Gelb" zu nennen.
    Ist man durch die Prozedur durch, schaut man sich die erstellte lircd.conf an.
    Sehr gut ist, wenn hinter "flags" ein RC5|CONST_LENGTH steht.
    Noch als "gut" würde ich RC6 einstufen.
    SPACE_Encoded und ganz besonders RAW sind nicht zu empfehlen.

    Alles im allem könnte die dann so aussehen:

    Sollte da wirklich RAW in der Zeile stehen, dann nehmt eine andere Fernbedienung.
    Um genau zu sein, würde ich so lange testen, bis ich auf R5 gelandet bin.
    Das erspart einem Probleme mit doppelt Ausgeführten Befehlen.

    Ich habe noch Comments eingefügt, da ein paar Tasten den gleichen Befehl lieferten.
    Also Comments sind durchaus möglich und auch wirklich hilfreich.
    Man kann sich hier auch bereits Entsprechungen zur Lircmap.xml eintragen.

    Ist das so weit gelaufen, sollte man nach einem Neustart von lircd eine "logische" Ausgabe auf den irw-Befehl bekommen.
    Beim Druck auf die Taste "||" müßte ein "Pause URC_7960" erscheinen.
    Entsprechend sollte man dann alle Tasten durchtesten.
    So bekommt man auch schnell heraus, ob evtl. Tasten dabei sind, die identische Befehle liefern.
    Dazu nutzt man dann die Comments...

    Die lircd.conf ist geschrieben. Dann kommt nun der Übersetzer ins Spiel.

  • Die Lircmap.xml [wikipedia]http://wiki.xbmc.org/?title=Lirc_and_Lircmap.xml[/wikipedia]

    Code
    <lircmap>
           <remote device="devicename">
                   <XBMC_button>LIRC_button</XBMC_button>
                   ...
           </remote>
      </lircmap>

    device name - Titel aus der lircd.conf hinter "name"
    XBMC_button - Wie das XBMC die Tasten benennt (aus der klassischen [definition='3','0']keymap[/definition].xml entnommen)
    LIRC_Button - Der Eintrag in der lircd.conf, welcher den aufgenommenen Button darstellt.

    In unserem Fall würde dieser eine Eintrag nun

    Code
    <lircmap>
           <remote device="URC_7960">
                   <info>Yellow</info>
                   ...
           </remote>
      </lircmap>

    lauten.

    Nun erhält das XBMC den Befehl "info" beim Druck auf die Taste "Gelb".
    Jetzt muss das XBMC noch wissen, was es bei der angefragten Aktion "info" ausführen soll.

    Die remote.xml

    Im keymap-Ordner des xbmc gibt es mitlerweile für jede Fernbedienung eine eigene xml. Von der Wii-Remote über eine keyboard.xml bis zu unserer remote.xml.
    http://trac.xbmc.org/browser/trunk/system/keymaps

    Zitat

    Linux global: /usr/share/xbmc/system/keymaps/
    Linux user specific: ~/.xbmc/userdata/keymaps/

    Windows global: C:\Program Files\XBMC\userdata\keymaps\
    Windows user specific: C:\Documents and Settings\Username\Application Data\XBMC\userdata\keymaps\

    Die keymaps im system-Ordner werden bei jeden Update überschrieben.
    Die im userdata-Ordner bleiben erhalten.
    Generell soll es reichen, wenn man nur die Änderungen einer keymap-Datei in die remote.xml schreibt, und diese dann unter den Userdata\keymaps ordner schiebt.
    Ich habe mir angewöhnt, es immer in beide zu schreiben. Dann bin ich mir sicher, dass es funktioniert.
    Das gilt ebenso für die Lircmap.xml.

    Man unterscheidet zwischen "global"-Befehlen und "Window Specifik"
    Eine remote.xml beginnt immer mit dem global-part.
    Wenn in einer "Window"-Sektion keine Funktion zugewiesen ist, dann wird der Eintrag aus der global-Sektion verwendet.
    In unserem Fall ist bereits alles korrekt.
    Die Funktion "info" ist bereits "Info" in allen Bereichen.
    Wenn "Yellow" nun zb. im Home-Menu die Musikbibliothek aufrufen soll, dann müßte entweder der Befehl "info" in der remote.xml missbraucht werden, oder man muss erst in der Lircmap.xml einen neuen xbmc-Befehl zuweisen.

    So könnte es zb in der Lircmap.xml aussehen:

    Code
    <lircmap>
           <remote device="URC_7960">
                   <mymusic>Yellow</mymusic>
                   ...
           </remote>
      </lircmap>

    und dann in der remote.xml

    Code
    <Home>
    <remote>
    	      <mymusic>XBMC.ActivateWindow(mymusic)</mymusic>
    </remote>
    </Home>

    Wie man an dem Besipiel gut erkennt, kann man auch komplette Aktionen direkt ausführen.
    http://wiki.xbmc.org/?title=List_of_Built_In_Functions

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!