I have setup Openelec 5.0.2 for a home theatre PC.
I have an older remote control that came with a Dvico DVB-T tuner card that I wanted to get working. It looks like this:
Unfortunately, there is no default config for this remote so I had to manually create the required files.
Just create the files and copy them to your Openelec system with WinSCP or any other tool.
Step 1. Create the lircd.conf file. I used irrecord for this. /storage/.config/lirc/lircd.conf
# Please make this file available to others # by sending it to <lirc@bartelmus.de> # # this config file was automatically generated # using lirc-0.9.1-git(dvico) on Sat Feb 7 19:46:46 2015 # # contributed by # # brand: /storage/.config/lirc/lircd.conf # model no. of remote control: # devices being controlled by this remote: # begin remote name dvicofusion bits 8 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 48 pre_data 0x100460000 post_data_bits 8 post_data 0xFE gap 95978 toggle_bit_mask 0x0 begin codes KEY_1 0x0B KEY_2 0x17 KEY_3 0x1B KEY_4 0x07 KEY_5 0x50 KEY_6 0x54 KEY_7 0x48 KEY_8 0x4C KEY_9 0x58 KEY_0 0x03 KEY_ZOOM 0x13 KEY_DISPLAYTOGGLE 0x1F KEY_REWIND 0x43 KEY_FASTFORWARD 0x4F KEY_PLAYPAUSE 0x47 KEY_MUTE 0x57 KEY_STOP 0x0D KEY_RECORD 0x01 KEY_POWER 0x4E KEY_TV 0x5A KEY_CAMERA 0x52 KEY_DIRECTORY 0x19 KEY_VOLUMEUP 0x15 KEY_VOLUMEDOWN 0x05 KEY_CHANNELUP 0x11 KEY_CHANNELDOWN 0x09 KEY_PREVIOUS 0x0F KEY_NEXT 0x12 KEY_HOME 0x42 KEY_MENU 0x4D KEY_BACK 0x49 KEY_NEXTSONG 0x55 KEY_INFO 0x59 KEY_NUMERIC_POUND 0x16 KEY_EPG 0x0A KEY_OK 0x5E KEY_LEFT 0x5B KEY_RIGHT 0x5F KEY_UP 0x51 KEY_DOWN 0x53 KEY_PVR 0x02 KEY_DVD 0x1A end codes end remote
Step 2. Create the Lircmap.xml file. /storage/.kodi/userdata/Lircmap.xml
<!-- 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 --> <lircmap> <remote device="dvicofusion"> <power>KEY_POWER</power> <volumeplus>KEY_VOLUMEUP</volumeplus> <volumeminus>KEY_VOLUMEDOWN</volumeminus> <eject>KEY_EJECTCD</eject> <mute>KEY_MUTE</mute> <guide>KEY_EPG</guide> <zero>KEY_0</zero> <one>KEY_1</one> <two>KEY_2</two> <three>KEY_3</three> <four>KEY_4</four> <five>KEY_5</five> <six>KEY_6</six> <seven>KEY_7</seven> <eight>KEY_8</eight> <nine>KEY_9</nine> <zero>KEY_0</zero> <pageplus>KEY_CHANNELUP</pageplus> <pageminus>KEY_CHANNELDOWN</pageminus> <back>KEY_BACK</back> <title>KEY_TITLE</title> <info>KEY_INFO</info> <display>KEY_DISPLAYTOGGLE</display> <subtitle>KEY_ZOOM</subtitle> <select>KEY_OK</select> <left>KEY_LEFT</left> <right>KEY_RIGHT</right> <up>KEY_UP</up> <down>KEY_DOWN</down> <menu>KEY_MENU</menu> <skipminus>KEY_PREVIOUS</skipminus> <play>KEY_PLAYPAUSE</play> <skipplus>KEY_NEXT</skipplus> <reverse>KEY_REWIND</reverse> <forward>KEY_FASTFORWARD</forward> <stop>KEY_STOP</stop> <pause>KEY_PLAYPAUSE</pause> <start>KEY_HOME</start> <enter>KEY_HOME</enter> <pageplus>KEY_CHANNELUP</pageplus> <pageminus>KEY_CHANNELDOWN</pageminus> <red>KEY_RED</red> <green>KEY_GREEN</green> <yellow>KEY_YELLOW</yellow> <blue>KEY_BLUE</blue> </remote> </lircmap>
Step 3. Create the remote.xml file. /storage/.kodi/userdata/keymaps/remote.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. --> <!-- Joysticks / Gamepads: --> <!-- See the sample PS3 controller configuration below for the format. --> <!-- --> <!-- Joystick Name: --> <!-- Do 'cat /proc/bus/input/devices' or see your xbmc log file to find the names of --> <!-- detected joysticks. The name used in the configuration should match the detected name. --> <!-- --> <!-- Button Ids: --> <!-- 'id' is the button ID used by SDL. Joystick button ids of connected joysticks appear --> <!-- in xbmc.log when they are pressed. Use your log to map custom buttons to actions. --> <!-- --> <!-- Axis Ids / Analog Controls --> <!-- Coming soon. --> <keymap> <global> <remote> <play>Play</play> <pause>Pause</pause> <stop>Stop</stop> <forward>FastForward</forward> <reverse>Rewind</reverse> <left>Left</left> <right>Right</right> <up>Up</up> <down>Down</down> <select>Select</select> <enter>FullScreen</enter> <pageplus>PageUp</pageplus> <pageminus>PageDown</pageminus> <back>ParentDir</back> <menu>ContextMenu</menu> <title>ContextMenu</title> <info>Info</info> <skipplus>SkipNext</skipplus> <skipminus>SkipPrevious</skipminus> <start>XBMC.ActivateWindow(Home)</start> <record>Stop</record> <volumeplus>VolumeUp</volumeplus> <volumeminus>VolumeDown</volumeminus> <mute>Mute</mute> <power>XBMC.ActivateWindow(ShutDownMenu)</power> <myvideo>XBMC.ActivateWindow(VideoLibrary,MovieTitles)</myvideo> <mymusic>XBMC.ActivateWindow(Weather)</mymusic> <mypictures>XBMC.ActivateWindow(MyPictures)</mypictures> <mytv>XBMC.ActivateWindow(VideoLibrary,TvShowTitles)</mytv> <zero>XBMC.RestartApp()</zero> <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> <hash>Screenshot</hash> <display>FullScreen</display> <!-- <star>EjectTray()</star> --> <xbox>scanitem</xbox> </remote> </global> <Home> <remote> <info>XBMC.ActivateWindow(SystemInfo)</info> <clear>XBMC.ActivateWindow(Weather)</clear> <hash>Screenshot</hash> </remote> </Home> <MyFiles> <remote> <clear>Delete</clear> <zero>Highlight</zero> <star>Move</star> <hash>Rename</hash> </remote> </MyFiles> <MyMusicPlaylist> <remote> <back>Playlist</back> <!-- Close playlist --> <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>PreviousMenu</back> <menu>OSD</menu> <start>TakeScreenshot</start> <select>AspectRatio</select> <title>CodecInfo</title> <info>Info</info> <teletext>XBMC.ActivateWindow(Teletext)</teletext> <display>AspectRatio</display> <subtitle>ShowSubtitles</subtitle> <star>EjectTray()</star> <language>AudioNextLanguage</language> <hash>Screenshot</hash> </remote> </FullscreenVideo> <VideoTimeSeek> <remote> <select>Select</select> <enter>Select</enter> </remote> </VideoTimeSeek> <FullscreenInfo> <remote> <title>CodecInfo</title> <info>Close</info> <menu>OSD</menu> </remote> </FullscreenInfo> <PlayerControls> <remote> <menu>Close</menu> </remote> </PlayerControls> <Visualisation> <remote> <left>PreviousPreset</left> <right>NextPreset</right> <up>IncreaseRating</up> <down>DecreaseRating</down> <back>LockPreset</back> <title>CodecInfo</title> <select>XBMC.ActivateWindow(VisualisationPresetList)</select> <menu>XBMC.ActivateWindow(MusicOSD)</menu> <start>XBMC.ActivateWindow(home)</start> <info>Info</info> <subtitle>Playlist</subtitle> </remote> </Visualisation> <MusicOSD> <remote> <menu>Close</menu> <title>Info</title> <info>CodecInfo</info> </remote> </MusicOSD> <VisualisationSettings> <remote> <menu>Close</menu> <back>Close</back> </remote> </VisualisationSettings> <VisualisationPresetList> <remote> <menu>Close</menu> <back>Close</back> </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> <title>Info</title> <select>Rotate</select> <back>PreviousMenu</back> </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> <SelectDialog> <remote> <back>Close</back> </remote> </SelectDialog> <VideoOSD> <remote> <back>PreviousMenu</back> <menu>Close</menu> <start>Close</start> </remote> </VideoOSD> <VideoMenu> <remote> <menu>OSD</menu> <back>PreviousMenu</back> <info>Info</info> <title>CodecInfo</title> <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> <back>Close</back> <menu>Close</menu> <start>Close</start> </remote> </OSDVideoSettings> <OSDAudioSettings> <remote> <back>Close</back> <menu>Close</menu> <start>Close</start> </remote> </OSDAudioSettings> <VideoBookmarks> <remote> <back>Close</back> <menu>Close</menu> <start>Close</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> <back>Playlist</back> <!-- Close playlist --> <clear>Delete</clear> <zero>Delete</zero> </remote> </MyVideoPlaylist> <VirtualKeyboard> <remote> <back>BackSpace</back> <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> <title>Close</title> <back>Close</back> </remote> </ContextMenu> <FileStackingDialog> <remote> <back>Close</back> </remote> </FileStackingDialog> <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> <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> <back>Close</back> </remote> </MusicInformation> <MovieInformation> <remote> <info>Close</info> <back>Close</back> </remote> </MovieInformation> <LockSettings> <remote> <menu>Close</menu> <back>PreviousMenu</back> </remote> </LockSettings> <ProfileSettings> <remote> <menu>Close</menu> <back>PreviousMenu</back> </remote> </ProfileSettings> <PictureInfo> <remote> <skipplus>NextPicture</skipplus> <skipminus>PreviousPicture</skipminus> <info>Close</info> <back>Close</back> </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> <info>Info</info> <back>Close</back> <menu>Close</menu> <start>Close</start> <teletext>Close</teletext> </remote> </Teletext> <Favourites> <remote> <back>Close</back> </remote> </Favourites> </keymap>
Step 4. Create the autorun script to start lircd on startup. /storage/.config/autostart.sh
#!/bin/sh killall lircd lircd --driver=dvico --device=/dev/usb/hiddev0 /storage/.config/lirc/lircd.conf
Give the machine a restart and your remote should be working!