HOW-TO:Modify joystick.xml

From Official Kodi Wiki
Revision as of 22:32, 21 October 2018 by Garbear (talk | contribs)
Jump to navigation Jump to search
Home icon grey.png   ▶ Remote controls
▶ Games
▶ Game controllers ▶ HOW-TO:Modify joystick.xml

Actions in Kodi are defined by Keymaps. If you would like to change the actions for a game controller, you will need to edit your joystick.xml file.


Note: Add-on:Keymap Editor does not work for controllers at this time.


General configuration

Controllers are configured in two separate locations:

  • First, you must map your controller in the configuration utility (see HOW-TO:Configure controllers)
  • Optionally, Kodi uses a Keymap named joystick.xml to define Kodi actions for each button


This guide describes how to modify the Keymap.


Note: joystick.xml defines actions for an Xbox 360 controller. See HOW-TO:Map multiple controllers.


Location of joystick.xml

The file joystick.xml should be located with Kodi's other keymaps (see Location of keymaps). They keymap placed in the userdata folder will override the keymap shipped with Kodi.


Structure

The structure is similar to Kodi's other keymaps:

<keymap>
  <global>
    <joystick profile="game.controller.default">
      <a>Select</a>
      <b>Back</b>
      <x>ContextMenu</x>
      <y>FullScreen</y>
      <start>ActivateWindow(PlayerControls)</start>
      <back>PreviousMenu</back>
      <guide>ActivateWindow(Home)</guide>
      <up>Up</up>
      <down>Down</down>
      <right>Right</right>
      <left>Left</left>
      <leftthumb>Screenshot</leftthumb>
      <rightthumb>ActivateWindow(ShutdownMenu)</rightthumb>
      <lefttrigger>ScrollUp</lefttrigger>
      <righttrigger>ScrollDown</righttrigger>
      <leftbumper>ScrollUp</leftbumper>
      <rightbumper>ScrollDown</rightbumper>
      <leftstickleft>Left</leftstickleft>
      <leftstickright>Right</leftstickright>
      <leftstickup>Up</leftstickup>
      <leftstickdown>Down</leftstickdown>
      <rightstickleft>VolumeDown</rightstickleft>
      <rightstickright>VolumeUp</rightstickright>
      <rightstickup>VolumeUp</rightstickup>
      <rightstickdown>VolumeDown</rightstickdown>
    </joystick>
  </global>

  <Home>
    [...]
  </Home>

  [...]

</keymap>


Planned features

In the future, it will be possible to define actions for holding buttons, similar to Long presses:

<keymap>
  <global>
    <joystick>
      <a>Select</a>
      <a holdtime="250">ContextMenu</a>
      [...]


See also