<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/index.php?action=history&amp;feed=atom&amp;title=Game_Controller</id>
	<title>Game Controller - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/index.php?action=history&amp;feed=atom&amp;title=Game_Controller"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Game_Controller&amp;action=history"/>
	<updated>2026-06-23T09:22:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Game_Controller&amp;diff=264370&amp;oldid=prev</id>
		<title>Hitcher: /* Available tags */</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Game_Controller&amp;diff=264370&amp;oldid=prev"/>
		<updated>2026-06-22T19:13:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Available tags&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:13, 22 June 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l41&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| The location of the underlying peripheral providing input, e.g. &amp;lt;code&amp;gt;/joystick/0&amp;lt;/code&amp;gt; for the first physical controller held by the user. Used to highlight the controller on peripheral activity.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| The location of the underlying peripheral providing input, e.g. &amp;lt;code&amp;gt;/joystick/0&amp;lt;/code&amp;gt; for the first physical controller held by the user. Used to highlight the controller on peripheral activity.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The control has been greatly expanded to allow for more use cases in the new Player Viewer (&amp;lt;code&amp;gt;GameAgents&amp;lt;/code&amp;gt;) dialog.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Controller address ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Controller address ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The controller address is connected to the in-game input. It&amp;#039;s formed by the emulated console&amp;#039;s port, followed by the controller ID.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The controller address is connected to the in-game input. It&amp;#039;s formed by the emulated console&amp;#039;s port, followed by the controller ID.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key kodi_wiki-mwZ73Bjypo_:diff:1.41:old-264364:rev-264370:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Hitcher</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Game_Controller&amp;diff=264364&amp;oldid=prev</id>
		<title>Hitcher: Created page with &quot;{{mininav| Skinning | Available controls }} &lt;section begin=&quot;main content&quot; /&gt; &#039;&#039;&#039;Used to display a game controller, with optional effects.&#039;&#039;&#039;  The game controller control is used for displaying a game controller, such as joysticks, keyboards, mice, lightguns, etc.  In v21 Omega, the control was expanded to give skinners more control over how it behaves, including manually specifying a controller to show, allowing for a fallback image, and applying a highl...&quot;</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Game_Controller&amp;diff=264364&amp;oldid=prev"/>
		<updated>2026-06-22T19:05:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{mininav| &lt;a href=&quot;/view/Skinning&quot; title=&quot;Skinning&quot;&gt;Skinning&lt;/a&gt; | &lt;a href=&quot;/view/Controls&quot; title=&quot;Controls&quot;&gt;Available controls&lt;/a&gt; }} &amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt; &amp;#039;&amp;#039;&amp;#039;Used to display a game controller, with optional effects.&amp;#039;&amp;#039;&amp;#039;  The game controller control is used for displaying a game controller, such as joysticks, keyboards, mice, lightguns, etc.  In v21 Omega, the control was expanded to give skinners more control over how it behaves, including manually specifying a controller to show, allowing for a fallback image, and applying a highl...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{mininav| [[Skinning]] | [[Controls|Available controls]] }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Used to display a game controller, with optional effects.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The game controller control is used for displaying a game controller, such as joysticks, keyboards, mice, lightguns, etc.&lt;br /&gt;
&lt;br /&gt;
In v21 Omega, the control was expanded to give skinners more control over how it behaves, including manually specifying a controller to show, allowing for a fallback image, and applying a highlighting diffuse effect when the underlying controller is active.&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;control type=&amp;quot;gamecontroller&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;My first game controller&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;posx&amp;gt;80&amp;lt;/posx&amp;gt;&lt;br /&gt;
      &amp;lt;posy&amp;gt;60&amp;lt;/posy&amp;gt;&lt;br /&gt;
      &amp;lt;width&amp;gt;250&amp;lt;/width&amp;gt;&lt;br /&gt;
      &amp;lt;height&amp;gt;200&amp;lt;/height&amp;gt;&lt;br /&gt;
      &amp;lt;controllerid&amp;gt;game.controller.snes&amp;lt;/controllerid&amp;gt;&lt;br /&gt;
&amp;lt;/control&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Available tags ===&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;[[Default Control Tags]]&amp;#039;&amp;#039;&amp;#039; are applicable to this control. Note that each tag is lower case only. This is important, as xml tags are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
In v21 and above, the control derives from an [[Image_Control]] to allow for a fallback texture. All tags and attributes for images can be used, and any game-specific tags will cause the texture to be overridden.&lt;br /&gt;
&lt;br /&gt;
The game-specific tags added in v21 are:&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|-  &lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;controllerid&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| The add-on ID of the controller profile to render, e.g. &amp;lt;code&amp;gt;game.controller.snes&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-  &lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;controllerdiffuse&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| A diffuse color used to highlight the controller when activity is detected on the in-game port or on the underlying peripheral held by the user.&lt;br /&gt;
|-  &lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;controlleraddress&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| The in-game &amp;quot;address&amp;quot; of the controller, e.g. &amp;lt;code&amp;gt;/1/game.controller.snes&amp;lt;/code&amp;gt; for a SNES controller connected to console port 1. Used to highlight the controller on port activity. Overrides &amp;lt;code&amp;gt;&amp;lt;controllerid&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;portaddress&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-  &lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;portaddress&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| The in-game &amp;quot;address&amp;quot; of the port the controller is connected to, e.g. &amp;lt;code&amp;gt;/1&amp;lt;/code&amp;gt; for port 1 of a SNES emulator. Used to highlight the controller on port activity.&lt;br /&gt;
|-  &lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;peripherallocation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| The location of the underlying peripheral providing input, e.g. &amp;lt;code&amp;gt;/joystick/0&amp;lt;/code&amp;gt; for the first physical controller held by the user. Used to highlight the controller on peripheral activity.&lt;br /&gt;
|}&lt;br /&gt;
The control has been greatly expanded to allow for more use cases in the new Player Viewer (&amp;lt;code&amp;gt;GameAgents&amp;lt;/code&amp;gt;) dialog.&lt;br /&gt;
=== Controller address ===&lt;br /&gt;
The controller address is connected to the in-game input. It&amp;#039;s formed by the emulated console&amp;#039;s port, followed by the controller ID.&lt;br /&gt;
&lt;br /&gt;
For example, on SNES controllers, the address of the first port is &amp;lt;code&amp;gt;/1&amp;lt;/code&amp;gt;. The address of a SNES controller connected to that port is &amp;lt;code&amp;gt;/1/game.controller.snes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Old consoles used multitaps (controller hubs) to allow for more players than console ports. A multitap connected to port &amp;lt;code&amp;gt;/2&amp;lt;/code&amp;gt; would have the address &amp;lt;code&amp;gt;/2/game.controller.snes.multitap&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A SNES controller connected to port 1 on a multitap would then have the address &amp;lt;code&amp;gt;/2/game.controller.snes.multitap/1/game.controller.snes&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Peripheral location ===&lt;br /&gt;
Peripherals are located by a &amp;lt;code&amp;gt;peripherals://&amp;lt;/code&amp;gt; URI containing their peripheral bus as a hostname and a path to the peripheral. For example, keyboards have the location &amp;lt;code&amp;gt;peripherals://application/keyboard.dev&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== List item info ===&lt;br /&gt;
List item info can be used for all tag values. For example, if the control definition looks like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;itemlayout width=&amp;quot;96&amp;quot; height=&amp;quot;96&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;control type=&amp;quot;gamecontroller&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;texture&amp;gt;$INFO[ListItem.Icon]&amp;lt;/texture&amp;gt;&lt;br /&gt;
            &amp;lt;controllerid&amp;gt;$INFO[ListItem.Property(controllerid)]&amp;lt;/controllerid&amp;gt;&lt;br /&gt;
      &amp;lt;/control&amp;gt;&lt;br /&gt;
&amp;lt;/itemlayout&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Static list items can be provided. Each gamewindow will inherit the properties:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;content&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;&lt;br /&gt;
            &amp;lt;icon&amp;gt;DefaultAddonNone.png&amp;lt;/icon&amp;gt;&lt;br /&gt;
      &amp;lt;/item&amp;gt;&lt;br /&gt;
      &amp;lt;item&amp;gt;&lt;br /&gt;
            &amp;lt;property name=&amp;quot;controllerid&amp;quot;&amp;gt;game.controller.snes&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/content&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The in-game dialogs that highlight game controllers on button presses (&amp;lt;code&amp;gt;GamePorts&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GameAgents&amp;lt;/code&amp;gt;) use a similar strategy with list items populated by core.&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Development:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Hitcher</name></author>
	</entry>
</feed>