Linux – LIRC – XBMC mit Logitech Harmony steuern – Lircmap.xml und Keyboard.xml

Nach der ersten HowTo, wo ich beschrieben habe, wie man den IR605Q MCE RC6 IR-Empfänger mit LIRC konfiguriert, folgt nun, wie versprochen, die Lircmap.xml und Keyboard.xml für XBMC. Mit der Default-Konfiguration von XBMC läuft die Harmony (Profil: Windows Media Center SE) zwar auch, aber nicht alle Tasten funktionieren so wie sie sollen. Die Stop-Taste beispielsweise spult vor, die Play-Taste stoppt, die Lautstärke lässt sich über die Harmony nicht regulieren, etc. pp..

UPDATE/EDIT: So wählt ihr das richtige MCE Profil (Windows Media Center SE) für eure Harmony – HowTo – Danke Fab.

hardware ir605q and harmony - Linux – LIRC – XBMC mit Logitech Harmony steuern - Lircmap.xml und Keyboard.xml

Das ändern wir mit unserer Lircmap.xml und Keyboard.xml für XBMC. mrgreen - Linux – LIRC – XBMC mit Logitech Harmony steuern - Lircmap.xml und Keyboard.xml

~/.xbmc/userdata/Lircmap.xml – Die Datei Lircmap.xml stellt das „Bindeglied“ zwischen der lircd.conf von Lirc und der Keymap.xml von XBMC dar.

~/.xbmc/userdata/keymaps/Keymap.xml / Keyboard.xmlXBMC führt die in der Keymap.xml definierten Aktionen, die den entsprechenden „XBMC-Tasten“ zugeordnet sind, aus. Grundsätzlich ist der Name der XML Datei in ~/.xbmc/userdata/keymaps egal, es zählt eigentlich nur was am Ende in der Datei drin steht. Es hat sich aber irgendwie eingebürgert von der „Keymap.xml“ zu reden, wenn es um die Steuerdatei für die Bedienung von XBMC mit einer Fernbedienung geht.

Quelle: xbmcwiki.ztreambox.org – Lircmap.xml und Keymap.xml

~/.xbmc/userdata/Lircmap.xml

UPDATE_2013-01-09: Mit LIRC 0.9.0 (lircd -v) haben sich die Namen der Tasten verändert, einfach die Lircmap.xml von hier nehmen. (Bsp.: Power zu KEY_POWER)

<!-- This file contains the mapping of LIRC keys to XBMC keys used in Keymap.xml  -->
<!--                                                                              -->
<!-- How to add remotes                                                           -->
<!-- <remote device="name_Lirc_calls_the_remote">                                 -->
<!--                                                                              -->
<!-- For the commands the layout following layout is used                         -->
<!-- <XBMC_COMMAND>LircButtonName</XBMC_COMMAND>                                  -->
<!--                                                                              -->
<!-- For a list of XBMC_COMMAND's check out the <remote> sections of keymap.xml   -->
<!--                                                                              -->
<!--                              Logitech Harmony                                -->
<!--                          loggn.de - Nico Hartung                             -->
<!--                        https://www.loggn.de/linux-ubuntu-lirc-xbmc-mit-logitech-harmony-steuern-lircmap-xml-und-keyboard-xml/                           -->
<!--                                                                              -->
<lircmap>
    <remote device="mceusb">
        <!-- no Display -->
        <power>Power</power>
        <teletext>Teletext</teletext>
        <menu>DVD</menu>
        <back>Back</back>
        <info>More</info>
        <guide>Guide</guide>
        <red>Red</red>
        <green>Green</green>
        <yellow>Yellow</yellow>
        <blue>Blue</blue>
        <left>Left</left>
        <right>Right</right>
        <up>Up</up>
        <down>Down</down>
        <select>OK</select>
        <volumeplus>VolUp</volumeplus>
        <volumeminus>VolDown</volumeminus>
        <pageplus>ChanUp</pageplus>
        <pageminus>ChanDown</pageminus>
        <mute>Mute</mute>
        <play>Play</play>
        <pause>Pause</pause>
        <stop>Stop</stop>
        <forward>Forward</forward>
        <reverse>Rewind</reverse>
        <skipplus>Skip</skipplus>
        <skipminus>Replay</skipminus>
        <record>Record</record>
        <one>One</one>
        <two>Two</two>
        <three>Three</three>
        <four>Four</four>
        <five>Five</five>
        <six>Six</six>
        <seven>Seven</seven>
        <eight>Eight</eight>
        <nine>Nine</nine>
        <zero>Zero</zero>
        <clear>Clear</clear>
        <enter>Enter</enter>
        <!-- with Display -->
        <display>Aspect</display>
        <start>Home</start>
        <myvideo>Videos</myvideo>
        <mymusic>Music</mymusic>
        <mypictures>Pictures</mypictures>
        <mytv>TV</mytv>
        <!-- old versions of harmony -->
        <star>Star</star>
        <hash>Hash</hash>
    </remote>
</lircmap>

~/.xbmc/userdata/keymaps/Keyboard.xml

<!-- This file contains the mapping of keys (gamepad, remote, and keyboard) to actions within XBMC -->
<!-- The <global> section is a fall through - they will only be used if the button is not          -->
<!-- used in the current window's section.  Note that there is only handling                       -->
<!-- for a single action per button at this stage.                                                 -->
<!-- For joystick/gamepad configuration under linux/win32, see below as it differs from xbox       -->
<!-- gamepads.                                                                                     -->
<!--                                                                             	              -->
<!-- The format is:                                                                                -->
<!--    <device>                                                                                   -->
<!--      <button>action</button>                                                                  -->
<!--    </device>                                                                                  -->
<!--                                                                             	              -->
<!-- To map keys from other remotes using the RCA protocol, you may add <universalremote> blocks   -->
<!-- In this case, the tags used are <obc#> where # is the original button code (OBC) of the key   -->
<!-- You set it up by adding a <universalremote> block to the window or <global> section:          -->
<!--    <universalremote>                                                                          -->
<!--       <obc45>Stop</obc45>                                                                     -->
<!--    </universalremote>                                                                         -->
<!--                                                                             	              -->
<!-- Note that the action can be a built-in function.                                              -->
<!--  eg <B>XBMC.ActivateWindow(MyMusic)</B>                                                       -->
<!-- would automatically go to My Music on the press of the B button.                              -->
<!--                                                                             	              -->
<!--                                        Logitech Harmony                                       -->
<!--                                   loggn.de - Nico Hartung                                     -->
<!--                                 https://www.loggn.de/linux-ubuntu-lirc-xbmc-mit-logitech-harmony-steuern-lircmap-xml-und-keyboard-xml/                           	    -->
<!--                                                                                               -->
<keymap>
  <global>
    <remote>
      <!-- no Display -->
      <power>XBMC.ActivateWindow(shutdownmenu)</power>
      <!-- crash <teletext>XBMC.ActivateWindow(Teletext)</teletext> -->
      <menu>PreviousMenu</menu>
      <back>Back</back>
      <info>Info</info>
      <guide>ContextMenu</guide>
      <red>Playlist</red>
      <green>ToggleWatched</green>
      <yellow>XBMC.ActivateWindow(Music)</yellow>
      <blue>XBMC.ActivateWindow(VideoLibrary)</blue>
	  <left>Left</left>
      <right>Right</right>
      <up>Up</up>
      <down>Down</down>
      <select>Select</select>
      <volumeplus>VolumeUp</volumeplus>
      <volumeminus>VolumeDown</volumeminus>
      <pageplus>PageUp</pageplus>
      <pageminus>PageDown</pageminus>
      <mute>Mute</mute>
      <play>Play</play>
      <pause>Pause</pause>
      <stop>Stop</stop>
      <forward>FastForward</forward>
      <reverse>Rewind</reverse>
      <skipplus>SkipNext</skipplus>
      <skipminus>SkipPrevious</skipminus>
      <record>Screenshot</record>
      <one>Number1</one>
      <two>JumpSMS2</two>
      <three>JumpSMS3</three>
      <four>JumpSMS4</four>
      <five>JumpSMS5</five>
      <six>JumpSMS6</six>
      <seven>JumpSMS7</seven>
      <eight>JumpSMS8</eight>
      <nine>JumpSMS9</nine>
      <zero>Number0</zero>
      <clear>Delete</clear>
      <enter>FullScreen</enter>
      <!-- with Display -->
      <display>FullScreen</display>
      <start>PreviousMenu</start>
      <myvideo>XBMC.ActivateWindow(MyVideo)</myvideo>
      <mymusic>XBMC.ActivateWindow(MyMusic)</mymusic>
      <mypictures>XBMC.ActivateWindow(MyPictures)</mypictures>
      <mytv>XBMC.ActivateWindow(10004)</mytv>
      <!-- old versions of harmony -->
      <star>Move</star>
      <hash>Rename</hash>
    </remote>
  </global>
  <Home>
    <remote>
      <info>XBMC.ActivateWindow(SystemInfo)</info>
      <clear>XBMC.ActivateWindow(Weather)</clear>
      <hash>XBMC.ActivateWindow(Settings)</hash>
      <zero>XBMC.ActivateWindow(Settings)</zero>
    </remote>
  </Home>
  <MyTV>
    <remote>
      <clear>Delete</clear>
    </remote>
  </MyTV>
  <MyFiles>
    <remote>
      <clear>Delete</clear>
      <zero>Highlight</zero>
      <star>Move</star>
      <hash>Rename</hash>
    </remote>
  </MyFiles>
  <MyMusicPlaylist>
    <remote>
      <clear>Delete</clear>
      <zero>Delete</zero>
    </remote>
  </MyMusicPlaylist>
  <MyMusicPlaylistEditor>
    <remote>
      <zero>Queue</zero>
    </remote>
  </MyMusicPlaylistEditor>
  <MyMusicFiles>
    <remote>
      <zero>Queue</zero>
      <star>Queue</star>
    </remote>
  </MyMusicFiles>
  <MyMusicLibrary>
    <remote>
      <zero>Queue</zero>
      <star>Queue</star>
    </remote>
  </MyMusicLibrary>
  <FullscreenVideo>
    <remote>
      <zero>Number0</zero>
      <one>Number1</one>
      <two>Number2</two>
      <three>Number3</three>
      <four>Number4</four>
      <five>Number5</five>
      <six>Number6</six>
      <seven>Number7</seven>
      <eight>Number8</eight>
      <nine>Number9</nine>
      <left>StepBack</left>
      <right>StepForward</right>
      <up>BigStepForward</up>
      <down>BigStepBack</down>
      <back>SmallStepBack</back>
      <menu>OSD</menu>
      <start>OSD</start>
      <select>AspectRatio</select>
      <guide>CodecInfo</guide>
      <info>Info</info>
      <!-- crash <teletext>XBMC.ActivateWindow(Teletext)</teletext> -->
      <star>NextSubtitle</star>
      <yellow>NextSubtitle</yellow>
      <hash>AudioNextLanguage</hash>
      <blue>AudioNextLanguage</blue>
    </remote>
  </FullscreenVideo>
  <VideoTimeSeek>
    <remote>
      <select>Select</select>
      <enter>Select</enter>
    </remote>
  </VideoTimeSeek>
  <FullscreenInfo>
    <remote>
      <guide>CodecInfo</guide>
      <info>Back</info>
      <menu>OSD</menu>
    </remote>
  </FullscreenInfo>
  <PlayerControls>
    <remote>
      <menu>Back</menu>
    </remote>
  </PlayerControls>
  <Visualisation>
    <remote>
      <left>PreviousPreset</left>
      <right>NextPreset</right>
      <up>IncreaseRating</up>
      <down>DecreaseRating</down>
      <back>LockPreset</back>
      <guide>CodecInfo</guide>
      <select>XBMC.ActivateWindow(VisualisationPresetList)</select>
      <menu>XBMC.ActivateWindow(MusicOSD)</menu>
      <info>Info</info>
      <playlist>XBMC.ActivateWindow(PVROSDChannels)</playlist>
    </remote>
  </Visualisation>
  <MusicOSD>
    <remote>
      <menu>Back</menu>
      <guide>Info</guide>
      <info>CodecInfo</info>
    </remote>
  </MusicOSD>
  <VisualisationSettings>
    <remote>
      <menu>Back</menu>
    </remote>
  </VisualisationSettings>
  <VisualisationPresetList>
    <remote>
      <menu>Back</menu>
    </remote>
  </VisualisationPresetList>
  <SlideShow>
    <remote>
      <zero>ZoomNormal</zero>
      <one>ZoomLevel1</one>
      <two>ZoomLevel2</two>
      <three>ZoomLevel3</three>
      <four>ZoomLevel4</four>
      <five>ZoomLevel5</five>
      <six>ZoomLevel6</six>
      <seven>ZoomLevel7</seven>
      <eight>ZoomLevel8</eight>
      <nine>ZoomLevel9</nine>
      <info>CodecInfo</info>
      <skipplus>NextPicture</skipplus>
      <skipminus>PreviousPicture</skipminus>
      <guide>Info</guide>
      <select>Rotate</select>
    </remote>
  </SlideShow>
  <ScreenCalibration>
    <remote>
      <select>NextCalibration</select>
      <zero>ResetCalibration</zero>
      <display>NextResolution</display>
      <xbox>NextResolution</xbox>
    </remote>
  </ScreenCalibration>
  <GUICalibration>
    <remote>
      <select>NextCalibration</select>
      <zero>ResetCalibration</zero>
    </remote>
  </GUICalibration>
  <VideoOSD>
    <remote>
      <menu>Back</menu>
      <start>Back</start>
    </remote>
  </VideoOSD>
  <VideoMenu>
    <remote>
      <menu>OSD</menu>
      <info>Info</info>
      <guide>CodecInfo</guide>
      <zero>Number0</zero>
      <one>Number1</one>
      <two>Number2</two>
      <three>Number3</three>
      <four>Number4</four>
      <five>Number5</five>
      <six>Number6</six>
      <seven>Number7</seven>
      <eight>Number8</eight>
      <nine>Number9</nine>
      <play>Select</play>
    </remote>
  </VideoMenu>
  <OSDVideoSettings>
    <remote>
      <menu>Back</menu>
      <start>Back</start>
    </remote>
  </OSDVideoSettings>
  <OSDAudioSettings>
    <remote>
      <menu>Back</menu>
      <start>Back</start>
    </remote>
  </OSDAudioSettings>
  <VideoBookmarks>
    <remote>
      <menu>Back</menu>
      <start>Back</start>
      <zero>Delete</zero>
    </remote>
  </VideoBookmarks>
  <MyVideoLibrary>
    <remote>
      <zero>Queue</zero>
      <clear>Delete</clear>
    </remote>
  </MyVideoLibrary>
  <MyVideoFiles>
    <remote>
      <zero>Queue</zero>
      <star>Queue</star>
    </remote>
  </MyVideoFiles>
  <MyVideoPlaylist>
    <remote>
      <clear>Delete</clear>
      <zero>Delete</zero>
    </remote>
  </MyVideoPlaylist>
  <VirtualKeyboard>
    <remote>
      <back>BackSpace</back>
      <clear>BackSpace</clear>
      <star>Shift</star>
      <hash>Symbols</hash>
      <zero>Number0</zero>
      <one>Number1</one>
      <two>Number2</two>
      <three>Number3</three>
      <four>Number4</four>
      <five>Number5</five>
      <six>Number6</six>
      <seven>Number7</seven>
      <eight>Number8</eight>
      <nine>Number9</nine>
      <enter>Enter</enter>
      <pageminus>CursorLeft</pageminus>
      <pageplus>CursorRight</pageplus>
    </remote>
  </VirtualKeyboard>
  <ContextMenu>
    <remote>
      <guide>Back</guide>
    </remote>
  </ContextMenu>
  <Scripts>
    <remote>
      <info>Info</info>
    </remote>
  </Scripts>
  <NumericInput>
    <remote>
      <zero>Number0</zero>
      <one>Number1</one>
      <two>Number2</two>
      <three>Number3</three>
      <four>Number4</four>
      <five>Number5</five>
      <six>Number6</six>
      <seven>Number7</seven>
      <eight>Number8</eight>
      <nine>Number9</nine>
      <enter>Enter</enter>
      <back>BackSpace</back>
    </remote>
  </NumericInput>
  <Weather>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </Weather>
  <TV>
    <remote>
      <red>Red</red>
      <green>Green</green>
      <yellow>Yellow</yellow>
      <blue>Blue</blue>
    </remote>
  </TV>
  <Settings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </Settings>
  <AddonBrowser>
    <remote>
    </remote>
  </AddonBrowser>
  <AddonInformation>
    <remote>
      <back>Close</back>
    </remote>
  </AddonInformation>
  <AddonSettings>
    <remote>
      <back>Close</back>
    </remote>
  </AddonSettings>
  <TextViewer>
    <remote>
      <back>Close</back>
    </remote>
  </TextViewer>
  <MyPicturesSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </MyPicturesSettings>
  <MyProgramsSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </MyProgramsSettings>
  <MyWeatherSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </MyWeatherSettings>
  <MyMusicSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </MyMusicSettings>
  <SystemSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </SystemSettings>
  <MyVideosSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </MyVideosSettings>
  <NetworkSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </NetworkSettings>
  <AppearanceSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </AppearanceSettings>
  <Profiles>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </Profiles>
  <systeminfo>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </systeminfo>
  <shutdownmenu>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </shutdownmenu>
  <submenu>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </submenu>
  <MusicInformation>
    <remote>
      <info>Back</info>
    </remote>
  </MusicInformation>
  <MovieInformation>
    <remote>
      <info>Back</info>
    </remote>
  </MovieInformation>
  <LockSettings>
    <remote>
      <menu>Back</menu>
    </remote>
  </LockSettings>
  <ProfileSettings>
    <remote>
      <menu>Back</menu>
    </remote>
  </ProfileSettings>
  <PictureInfo>
    <remote>
      <skipplus>NextPicture</skipplus>
      <skipminus>PreviousPicture</skipminus>
      <info>Back</info>
    </remote>
  </PictureInfo>
  <Teletext>
    <remote>
      <zero>number0</zero>
      <one>number1</one>
      <two>number2</two>
      <three>number3</three>
      <four>number4</four>
      <five>number5</five>
      <six>number6</six>
      <seven>number7</seven>
      <eight>number8</eight>
      <nine>number9</nine>
      <red>Red</red>
      <green>Green</green>
      <yellow>Yellow</yellow>
      <blue>Blue</blue>
      <info>Info</info>
      <menu>Back</menu>
      <teletext>Back</teletext>
    </remote>
  </Teletext>
  <Favourites>
    <remote>
      <back>Close</back>
    </remote>
  </Favourites>
  <PVROSDChannels>
    <remote>
      <back>Close</back>
      <menu>Close</menu>
      <start>Close</start>
      <playlist>Close</playlist>
    </remote>
  </PVROSDChannels>
  <PVROSDGuide>
    <remote>
      <back>Close</back>
      <menu>Close</menu>
      <start>Close</start>
    </remote>
  </PVROSDGuide>
  <PVROSDDirector>
    <remote>
      <back>Close</back>
      <menu>Close</menu>
    </remote>
  </PVROSDDirector>
  <PVROSDCutter>
    <remote>
      <back>Close</back>
      <menu>Close</menu>
    </remote>
  </PVROSDCutter>
  <MyTVSettings>
    <remote>
      <back>PreviousMenu</back>
    </remote>
  </MyTVSettings>
</keymap>

Weiterführende Links:
HTPC – Media Center – Logitech Harmony reagiert träge unter Windows und Linux 
Ubuntu (alle Versionen) – LIRC Konfiguration mit RC6 IR605Q (147a:e03e) und Logitech Harmony

Quellen:
XBMC Main Repository – xbmc / system / Lircmap.xml (Standardkonfiguration)
XBMC Main Repository – xbmc / system / keymaps / keyboard.xml (Standardkonfiguration)

Veröffentlicht von

_nico

Mac-User aus Leidenschaft, Blogger seit Oktober 2009, 88er Baujahr, technikaffin. Ich fühle mich aber nicht nur auf Apple'schen Betriebssystemen zu Hause, alles was eine Shell hat, interessiert mich besonders! Ihr findet mich auch auf Twitter und Google+.

14 Gedanken zu „Linux – LIRC – XBMC mit Logitech Harmony steuern – Lircmap.xml und Keyboard.xml“

  1. Hi,

    ich habe die Config vorgenommen wie Du es beschrieben hast.

    Folgenden Receiver habe ich:
    usb 4-4.1: New USB device found, idVendor=0471, idProduct=060c
    usb 4-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 4-4.1: Product: BB+ Dongle(e.d)

    IRW zeigt aber nur 2 Ausgaben für die numerischen Tasten + Guide und Info….

    Die Tasten habe in XBMC eine Funktion. Der Rest will nicht.

    Hast Du ne Idee woran das liegen könnte?

    Gruß
    fcc

    1. Hi fcc, du musst die Lircmap.xml (XBMC) an deine lircd.conf (LIRC), wo für LIRC die Tasten festgelegt werden, für deinen IR-Empfänger (BB+ Dongle) anpassen.

      Aber, wenn irw nur 2 Ausgaben anzeigt, dann hast du auch eine falsche lircd.conf – die ist von IR-Receiver zu IR-Receiver unterschiedlich.

      Entweder du kaufst dir den gleichen Empfänger oder musst selbst Hand anlegen.

      Gruß

      1. Vielen Dank für die schnelle Antwort.
        Irgendwie war meine Vorstellung, dass alle RC6 Receiver die selben Codes verwenden. 😉
        Dann werde ich mal eine eigene lircd.conf bauen müssen.
        Danke für die Erleuchtung 😉

        fcc

  2. Ok, ich habe mit mittel irrecord eine lircd.conf erstellt.
    Allerdings funktionierte es nur im Raw Format.
    irrecord -a funktioniert nicht. Das ganze File kann ich nicht convertieren – nur einzelne Blöcke.
    Es hat den Anschein, dass die Tastencodes unterschiedlich konvertiert sind.
    Jetzt funktionierts mit irw. Die XBMC Config werde ich noch testen – sieht aber auf den ersten Blick ganz gut aus.

    Danke für die Tips!!

    Gruß
    fcc

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert