Jump to content
Flirc Forums
burke

[XBMC] Further customisation of controls using keymaps [Advanced]

Recommended Posts

Hello to every one,

this "how to" guide is writen for people who are new both to flirc and XBMC,

and to all who want to personalize their flirc/xbmc expirince.

I would like to thank Jason for flirc an all of his hard work on it, to jhsrennie

for his Keymapedit and to Chris! for his help with this guide.

Keep up the good work guys!

I am just an end user like you guys - so I don't know how all of this things work,

but i know they work - that is important.

INTRO

XBMC can be personalized to the smallest detail - keyboard also.

You can program flirc as minimal remote, xbmc remote or keyboard -

I use the latter (keyboard) as it will give you most flexibility

and you can "unlock secret xbmc treasures" this way.

On XBMC wiki you will find "full list" of built in

keyboard controls for xbmc.

ABOUT ADDITIONAL FUNCTIONS IN XBMC

I use uni remote, like many remotes (for me) it has a design flaw, media contol keys are all the way down,

so you need to move your hand when moving from navigation keys to ff/rev and pause

(when you are watching your favorite TVshow and you want to ff intro).

remote.jpg

I have my remote setup that way that when in full screen video my left/right navigation keys are used as ff/rev keys,

my up/down keys are used for direct subtitle +/- offset and OK button is used for pause.

My power button will put XBMC to sleep - without need to go through power menu and so on.

For me this is the ultimate - because there are so many thing that you can do by just pressing one button on your keyboard,

the beauty of this combination is that you can assign any key on your remote to any key on your keyboard.

For example: you can send update library command when in main menu - if you have recently added video enabled in your skin,

you can go directly to latest movie/tvshow episode from recently added menu, without need to search them in library - if you have

lots of movies or tv shows with many seasons you know this is great. You can go directly to video/music/settings window and so on

One of my favorites is running scripts with key press - I only use it to run "Cinema expirience"

normally you have to go to movie info and select CE "button" to run it,

if you have lets say F2 key assigned to run script you can run it directly from your library https://lh5.googleus...xcpoc_EfaKlu3sQ

HOW TO - IN A FEW EASY STEPS

First locate your "\XBMC\userdata\keymaps\" folder - its position will depend on OS you are

running your XBMC on, the folder will be empty - latter on will put keyboard.xml there

IMPORTANT: all keys that you put in this file will override default behaviour of your keyboard keys,

so be careful what key you chose (use link to wiki to chose keys that have no function assigned in XBMC).

1. METHOD OF CHOICE

There are two ways of doing this that I know of:

1. manually make kayboard.xml - you will need to know functions of xbmc + html - PLS DO NOT ASK ME ABOUT THIS METHOD - haven't got a clue

2. Use KeyMapEdit - it is only for Windows though - you Linux guys can run some vitual machine to set it up or something - maybe there is a linux version i don't know

2. USING KEYMAPEDIT

Using this little program is pretty easy - apart from the fact that there are so many functions

You have to things that need your attencion:

a) append section

B) append key

capture_15052012_100147.jpg

a) append section - will not add commands but make a "sub section" so you can assign same key to diferent function

when in diferent menu/window of XBMC

-like my full screen video left key is rew in full screen video, but if i call OSD it is again left.

B) append key is where you actually assign letters to function. You will need to explore and try some thingS on your own,

there are so many functions that there is no point for me to try explain all of them.

It is simple - chose key on your keyboard - chose what you want it to do

capture_15052012_100218.jpg

NOTE: some buttons (in my experience) will not work well when you try to assign double functions to them so it my be needed to

change some default buttons to max out your setup, for example I have assigned leter "J" to be my select buton - if I leave

"enter" it will not work properly for pause in full screen video.

3.USING YOUR NEW SETTINGS

Save your config file as keyboard.xml and put it in \XBMC\userdata\keymaps\.

NOTE: you need to restart your xbmc to pick up your keyboard.xml as it will only serch for this file and load it on start.

You can add /delete keys at will, no need to make new file every time.

TIP: Make your self shortcut to your \XBMC\userdata\keymaps\ and put it in documents map as Keymapedit will not remeber path to file

when restarted - so you will be able to navigate to keyboard.xml easily.

If you have any questions please be free to ask them, we will try to help you in any way we can.

  • Like 3

Share this post


Link to post
Share on other sites

Thanks for the guide Burke - this guide shows some of what is possible to build upon with Flirc due to it appearing as a USB keyboard to the host machine.

If you can customise keyboard input - you can customise Flirc

Many thanks Burke!

Chris!

Share this post


Link to post
Share on other sites

If it helps people I am happy :)

I think I went from having normal haircut to Bruce Willis style when I was trying to

setup my first remote - using winlirc + eventghost and html to customize keys

So hopefully this will save some time and hair to people who have no experience with this :)

Share this post


Link to post
Share on other sites

This is great. If you find that the action in keymapedit isn't that descriptive the list of built in fucntions in XBMC is found in the XBMC wiki which describes the actions a little further. With a harmony remote you can set up heaps of these functions with the programmable buttons making it very quick and easy to navigate your way around XBMC

Share this post


Link to post
Share on other sites

Here are my custom keyboard.xml-entries.

Maybe this is helpful for someone..


   <f1 mod="ctrl">XBMC.ActivateWindow(MyVideoLibrary,movietitles,return)</f1>

   <f2 mod="ctrl">XBMC.ActivateWindow(MyVideoLibrary,tvshowtitles,return)</f2>

   <f3 mod="ctrl">XBMC.ActivateWindow(music)</f3>

   <f4 mod="ctrl">XBMC.ActivateWindow(settings)</f4>

   <f5 mod="ctrl">XBMC.updatelibrary(video)</f5>

   <f6 mod="ctrl">XBMC.updatelibrary(music)</f6>

   <f7 mod="ctrl">XBMC.Quit()</f7>

   <f8 mod="ctrl">SubtitleDelayMinus</f8>

   <f9 mod="ctrl">SubtitleDelayPlus</f9>

   <f10 mod="ctrl">AudioDelayMinus</f10>

   <f11 mod="ctrl">AudioDelayPlus</f11>

   <f12 mod="ctrl">AudioNextLanguage</f12>

   <f1 mod="alt">PrevLetter</f1>

   <f2 mod="alt">NextLetter</f2>


Share this post


Link to post
Share on other sites

First of all thank you all for your kind words :)

Sorry for late replay guys I have been busy.

Here is my keymap, as I said before I like using same key on remote for different functions,

and call sam scripts menus directly.

( I use universal remote - and use my number keys to control my amplifier when using xbmc -

so i don't have to switch functions all the time)


<!--Template XBMC keyboard file-->

<keymap>

  <global>

	<keyboard>

	  <f3 mod="ctrl">Suspend</f3>

	  <f4 mod="ctrl">XBMC.RunScript(script.cinema.experience)</f4>

		<f7 mod="ctrl">ActivateWindow(0)</f7>

	  <f8 mod="ctrl">ActivateWindow(4)</f8>

	  <f9 mod="ctrl">ActivateWindow(Videos,MovieTitles)</f9>

	  <f10 mod="ctrl">ActivateWindow(Videos,TvshowTitles)</f10>

	  <f11 mod="ctrl">UpdateLibrary(video)</f11>

	  <f12 mod="ctrl">reloadkeymaps</f12>

	  <j>select</j>

	</keyboard>

  </global>

  <myvideolibrary>

	<keyboard>

	  <f1 mod="ctrl">togglewatched</f1>

	</keyboard>

  </myvideolibrary>

  <fullscreenvideo>

	<keyboard>

	  <down>subtitledelayminus</down>

	  <up>subtitledelayplus</up>

	  <f5 mod="ctrl">ActivateWindow(123)</f5>

	  <f6 mod="ctrl">ActivateWindow(124)</f6>

	  <c>RunScript(script.xbmc.subtitles)</c>

	  <f1 mod="ctrl">nextsubtitle</f1>

	  <j>pause</j>

	  <left>rewind</left>

	  <right>fastforward</right>

	</keyboard>

  </fullscreenvideo>

</keymap>

Share this post


Link to post
Share on other sites

F3 - direct suspend/shutdown

F7 - will execute CE script from library ( no need to open movie info)

f7 - jump from anywhere to home window

f8 - jump from anywhere to settings window

f9 - jump from anywhere to Movie library

f10 - jump from anywhere to TV shows library

f11 - update video library movies and TV shows

f12 - reload keymaps

j - will select item globaly but in full screen video will pause video

left/rigt - will act as analog ff/rev (f/r keys) in full screen video

f1 - will act as "W" in library , but in full screen video will select next subs

down / up - will act as sub delay +/- in fullscreen video

f5 - direct video settin menu

f6 - direct audio setting menu

c - (which is globaly contex maneu) will directly call xbmc.subtitles addon

Hope this will help you setup your system the way you want it and enjoy your

xbmc /flirc experience even more. :)

Chears

Share this post


Link to post
Share on other sites

Hi Burke,

do you think that there is a chance to map a Harmony-button to switch visalisation on / off ?

While playing music i prefer the screen with the buttons at the buttom where you can skip to the next song, pause, play....titles.

At the right side there is a button which is linked to the settings. There you can switch fanart on/off and turn the visualisations on/off.

Is there an easy way to map a button wihth this function: turn vis on/off while playing music ? I tried "TAB" but this is not what i want.

Thanks for helping !

Share this post


Link to post
Share on other sites

Hi hhbernd,

Firts of all what you can do with remote if using flirc is what ever you can do with xbmc and keyboard - does not metter what remote you use.

Sorry my Eng. is not as good as I would like it to be so I tend to miss understand some things.

Now you would like to heve "buttons" on your screen all the time? Menu you describe is music OSD and is called with "M" when playing music in full screen.

Basically - you "play" some audio file and press "tab" to go to full screen music playback +m to call osd.

Not shore will OSD want to stay "on" all the time :(

To call any function/script directly, such action must be coded in XBMC - for instance in new versions of XBMC you can directly call subtitles menu - before it was not the case.

Here is a complete list of window IDs that can be called directly - unfortunately I don't see no way here to call that window directly

I am not saying there is no way - I just don't see it - sorry.

Now if you need an easier/faste way to access VIsualization window it could be done to some extent,

I think what bothers you (it bothered me for subtitles) is when you press m - focus of osd is on "pause" so you have to klik your way

to button you use 90% time you call osd, you don't need osd for play pause - you have remote.

If so just say -- it is not a big thing - just simple point of changing one number with another in one xml file in one directory - which depends on skin you use :)

Hope this make some sense to you

Share this post


Link to post
Share on other sites

I thought you could turn off music visualiser in the settings of XBMC so they never turn on (is this what you wanted?)

Pleasant regards,

Chris!

Share this post


Link to post
Share on other sites

Unfortunately i'm not using windows and don't have any AV. But that's not good. Also, it is not maintained by Flirc so we have no control over it.

You can still customize XBMC actions using the keymap.xml as burke describes.

pleasant regards,

Chris!

Share this post


Link to post
Share on other sites

my AV says there is a Trojan virus in this file

Sorry I was not around :/

Sometimes antivirus programs produce so called "false positive" - i think this is the case here.

Further more Keymapedit is developed by member of XBMC team - so logic would say that if you trust them to install

whole XBMC you should trust hem for this also. :)

You can always download some other AV program and scan with it, also you can ask at XBMC forum.

Me personally never had my AV report it as virus.

Chears Burke

Share this post


Link to post
Share on other sites

burke,

Due to this thread in the forums, I created my own custom configuration for XBMC using the 'keyboard.xml' file.  You can find what I did over at

 

You are credited within the actual xml file itself.

 

Thanks...

Share this post


Link to post
Share on other sites

To call any function/script directly, such action must be coded in XBMC - for instance in new versions of XBMC you can directly call subtitles menu - before it was not the case.

 

Which newer versions?  Please tell me how you do this - I have been trying to figure it out for weeks !!!!

Share this post


Link to post
Share on other sites

To outatouch0,

 

Please refer to the link I mentioned in my post just prior to yours ().  Download at least the xml and image files and see what is going on by opening the XML file itself.  Inside the XML file are notes and links to all of the webpages I used in order to figure out how to customize my XBMC 'keyboard.xml'.  XBMC themselves have a great forum at http://forum.xbmc.org.  My plan is to create a proper write up on how to modify the 'keyboard.xml' file and link to any associated files.  That write up would be posted over on the XBMC forums though.

 

One key piece of information I only ran into once is that you DO NOT need to start with a complete 'keyboard.xml' file.  If you create your own, just enter or add the key/action combinations that you would like to change for the specific buttons on your remote.  You don't need to enter everything as XBMC will default to any key/actions that you don't put into your 'keyboard.xml' file.  Similar to a CSS file, this 'keyboard.xml' will take precedence over the built in commands.

 

I'll be sending you a personal message to check out this comment so please don't reply to me, reply to this thread entry.

 

Thanks...

Share this post


Link to post
Share on other sites

Which newer versions?  Please tell me how you do this - I have been trying to figure it out for weeks !!!!

 

 

Well it is all here... :) in my custom setting:

 

First of all thank you all for your kind words :)

Sorry for late replay guys I have been busy.

Here is my keymap, as I said before I like using same key on remote for different functions,

and call sam scripts menus directly.

( I use universal remote - and use my number keys to control my amplifier when using xbmc -

so i don't have to switch functions all the time)

 

<!--Template XBMC keyboard file-->
<keymap>
  <global>
	<keyboard>
	  <f3 mod="ctrl">Suspend</f3>
	  <f4 mod="ctrl">XBMC.RunScript(script.cinema.experience)</f4>
		<f7 mod="ctrl">ActivateWindow(0)</f7>
	  <f8 mod="ctrl">ActivateWindow(4)</f8>
	  <f9 mod="ctrl">ActivateWindow(Videos,MovieTitles)</f9>
	  <f10 mod="ctrl">ActivateWindow(Videos,TvshowTitles)</f10>
	  <f11 mod="ctrl">UpdateLibrary(video)</f11>
	  <f12 mod="ctrl">reloadkeymaps</f12>
	  <j>select</j>
	</keyboard>
  </global>
  <myvideolibrary>
	<keyboard>
	  <f1 mod="ctrl">togglewatched</f1>
	</keyboard>
  </myvideolibrary>
  <fullscreenvideo>
	<keyboard>
	  <down>subtitledelayminus</down>
	  <up>subtitledelayplus</up>
	  <f5 mod="ctrl">ActivateWindow(123)</f5>
	  <f6 mod="ctrl">ActivateWindow(124)</f6>
	  <c>RunScript(script.xbmc.subtitles)</c>
	  <f1 mod="ctrl">nextsubtitle</f1>
	  <j>pause</j>
	  <left>rewind</left>
	  <right>fastforward</right>
	</keyboard>
  </fullscreenvideo>
</keymap>

 

 

Letter "c" in full screen video, you can choose what ever suites you.

 

It is built in fuction to call script within xbmc, in my case I am calling  "script.xbmc.subtitles"

 

So if you would want just this in your kbd file it would be:

 

Just replace "C" with what ever you want :)

 

First of all thank you all for your kind words :)

Sorry for late replay guys I have been busy.

Here is my keymap, as I said before I like using same key on remote for different functions,

and call sam scripts menus directly.

( I use universal remote - and use my number keys to control my amplifier when using xbmc -

so i don't have to switch functions all the time)

 

<!--Template XBMC keyboard file-->
<keymap>
  <fullscreenvideo>
	<keyboard>
	  <c>RunScript(script.xbmc.subtitles)</c>
	</keyboard>
  </fullscreenvideo>
</keymap>

 

 

Have a nice flicing :)

  • Like 1

Share this post


Link to post
Share on other sites

To outatouch0,

 

Please refer to the link I mentioned in my post just prior to yours ().  Download at least the xml and image files and see what is going on by opening the XML file itself.  Inside the XML file are notes and links to all of the webpages I used in order to figure out how to customize my XBMC 'keyboard.xml'.  XBMC themselves have a great forum at http://forum.xbmc.org.  My plan is to create a proper write up on how to modify the 'keyboard.xml' file and link to any associated files.  That write up would be posted over on the XBMC forums though.

 

One key piece of information I only ran into once is that you DO NOT need to start with a complete 'keyboard.xml' file.  If you create your own, just enter or add the key/action combinations that you would like to change for the specific buttons on your remote.  You don't need to enter everything as XBMC will default to any key/actions that you don't put into your 'keyboard.xml' file.  Similar to a CSS file, this 'keyboard.xml' will take precedence over the built in commands.

 

I'll be sending you a personal message to check out this comment so please don't reply to me, reply to this thread entry.

 

Thanks...

 

 

XBMC has pretty unified logic throug whole setup. in this case if you add new config file it is to customize a part of xbmc, not all settings in that part of XBMC (it is same with "advancedsettings.xml")

 

 

There is also a new addon to do this directly from xbmc, to make it more simple for people to use.

 

If you want ot write "how to" you need to be aware that not all people will be able to use it, but only people with keyboards and flirc, if you use "standard" IR receiver things are different.

Share this post


Link to post
Share on other sites

@burke,

 

I understand your 'unified logic' idea but this doesn't ALWAYS apply in software.  Even you say it 'has pretty unified logic'.  That implies that it may not be the same throughout.  My comment on that is derived from the '101 on keymaps' section of the official XBMC forum asking the user to download a complete 'keyboard.xml' file.  I took this to mean a user needed to download a complete one in order to change something.  Fortunately, that is not the case.  Creating a 'keyboard.xml' file and changing one function does nothing to the rest of XBMC's built in mapped keys.

 

Your mention of my future "how to" is for XBMC users in general.  Flirc is not a requirement.  A keyboard is not actually required for this but at least some input device that could send keyboard commands to edit the 'keyboard.xml' file: ie. an on-screen keyboard (Android, iOS).  Editing the 'keyboard.xml' file is to change the default keys to function with different keys.  For instance, the MCE Remote sends the keyboard equivalent (CTRL + SHIFT + P) to play a video.  You could edit the default XBMC key of 'P' to be the same as WMC's and now your remote can control XBMC and WMC's 'Play' function with the same remote control keypress (since they are mapped to the same key combination).

 

If you use "standard ir", as you say, there is no difference.  The 'ir' device sends some signal that is interpreted by the receiver as a key press function.  If you determine what that key combination is, you could edit the 'keyboard.xml' file of XBMC to match this command and now your remote is controlling XBMC.  It doesn't matter if you buy a $12 remote/receiver combination, or are using a custom LIRC script, it will work.  In this case, the device sending the keystrokes is Flirc.

 

There is a great little bit of code called 'ShowOff' that will display the keys hit (or sent by any ir device) by way of an onscreen display.  Very tiny and no installation required.

 

I may check out the 'addon' but I'm not a fan of additional software to do something I will probably only need to do once.  I'm the 'tinkerer' type.

 

Have fun...

Share this post


Link to post
Share on other sites

Thank you very much burke and cposada, 

Especially for the straightforward answer:

 

<!--Template XBMC keyboard file-->
<keymap>
<fullscreenvideo>
    <keyboard>
     <c>RunScript(script.xbmc.subtitles)</c>
    </keyboard>
</fullscreenvideo>
</keymap>

 

It turns out I was WAY WAY overthinking it when it was actually this simple. I wasn't seeing the forest for the trees!

"RunScript(script.xbmc.subtitles)" was mentioned in a few places in xbmc wiki's etc. but nothing direct as is put THIS, HERE, like THIS....

 

The next version of XBMC "RunScript(script.xbmc.subtitles)" will change to "ActivateWindow(SubtitleSearch)"

Share this post


Link to post
Share on other sites

@cposada

 

You are quite right. 

 

FIrst of all sorry if I sounded harsh, getting my thoughts out in Eng is quite challenging for me.

 

Second of all lack of info was the reason Chris and I started this thread.

 

That being said, If you need my help just PM me :) 

 

Once more, do accept my apologies.

 

XBMC is open source an as such it is entirely depended  on good will of people to write wiki pages and it does fall short in that regard sometimes.

 

 

@outatouch0

 

You are welcome 

 

 

I guess they think if you go to those pages you will know how to use info you get there, It can be nightmare.

 

Chris and I spent months trying to get info on kbd repeat rate before getting any info on that mater.

Share this post


Link to post
Share on other sites

Burke, awesome thread. I had been thinking of doing exactly this, and now I know how.

As it happens I have the same remote - the OneForAll urc 7140. Now I have a single remote to control my xbmc box, amp, and satellite receiver. If only I could get a code for it to control my optoma projector, it will be the perfect setup (for me).

Again, thanks for an informative post.

Share this post


Link to post
Share on other sites

Burke, awesome thread. I had been thinking of doing exactly this, and now I know how.

As it happens I have the same remote - the OneForAll urc 7140. Now I have a single remote to control my xbmc box, amp, and satellite receiver. If only I could get a code for it to control my optoma projector, it will be the perfect setup (for me).

Again, thanks for an informative post.

 

Hi man,

 

sorry for late replay...

 

The remote has easy learning function so you could just manually program the keys you need - it should be less then 10 min job :)

 

Regards 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...