<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mupen64plus.org/wiki/index.php?action=history&amp;feed=atom&amp;title=InputPluginUsage</id>
	<title>InputPluginUsage - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mupen64plus.org/wiki/index.php?action=history&amp;feed=atom&amp;title=InputPluginUsage"/>
	<link rel="alternate" type="text/html" href="https://mupen64plus.org/wiki/index.php?title=InputPluginUsage&amp;action=history"/>
	<updated>2026-10-18T14:35:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://mupen64plus.org/wiki/index.php?title=InputPluginUsage&amp;diff=35&amp;oldid=prev</id>
		<title>Richard42: Supported use cases for Autoconfiguration with Mupen64Plus-Input-SDL plugin</title>
		<link rel="alternate" type="text/html" href="https://mupen64plus.org/wiki/index.php?title=InputPluginUsage&amp;diff=35&amp;oldid=prev"/>
		<updated>2015-07-26T17:45:34Z</updated>

		<summary type="html">&lt;p&gt;Supported use cases for Autoconfiguration with Mupen64Plus-Input-SDL plugin&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Use case #1 scenario&amp;#039;&amp;#039;&amp;#039;: First-time user of Mupen64Plus, has no configuration file.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Desired Behavior&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
*** Automatically detect and configure any supported joysticks, assigning them in sequence to controllers.&lt;br /&gt;
*** Skip any unsupported joysticks without leaving unconfigured controllers.&lt;br /&gt;
*** If no SDL joysticks are found, configure the keyboard/mouse.&lt;br /&gt;
*** Fill in (blank) settings for all 4 controllers (for GUI front-ends)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;How to configure&amp;#039;&amp;#039;&amp;#039;: Automatic.&lt;br /&gt;
*** If no configuration is found for a controller (or version is out of date), it will automatically be set to mode 2 (fully automatic), and saved.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Use case #2 scenario&amp;#039;&amp;#039;&amp;#039;: User changes controllers often (configuration file is present)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Desired Behavior&amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** Automatically detect and configure any joysticks plugged in&lt;br /&gt;
*** Skip any unsupported joysticks without leaving unconfigured controllers.&lt;br /&gt;
*** If no SDL joysticks are found, configure the keyboard/mouse.&lt;br /&gt;
*** Don&amp;#039;t stick to old input settings in configuration file when a different joystick is used&lt;br /&gt;
*** User should be able to modify the auto-configured settings (edit InputAutoConfig.ini)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;How to configure&amp;#039;&amp;#039;&amp;#039;: Automatic&lt;br /&gt;
*** User should set all controllers to mode 2 (fully auto) in this scenario, and edit his controller preferences in the InputAutoConfig.ini file.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Use case #3 scenario&amp;#039;&amp;#039;&amp;#039;: User switches between keyboard and joystick&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Desired Behavior&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
*** If joystick is plugged in, then set up according to configuration file (if it matches), or auto-config&lt;br /&gt;
*** If no SDL joysticks are found, configure the keyboard/mouse.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;How to configure&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
*** User should set all controllers to mode 2 (fully auto) in this scenario, and edit his controller preferences in the InputAutoConfig.ini file.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Use case #4 scenario&amp;#039;&amp;#039;&amp;#039;: Developer wants to create a specific input configuration for testing purposes: no controllers, only a controller in port 2, etc.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;How to configure&amp;#039;&amp;#039;&amp;#039;: Set all controller &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; parameters to 0, set other configuration parameters as necessary.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Use case #5 scenario&amp;#039;&amp;#039;&amp;#039;: A user wants has several different controllers plugged in, and wants to set a specific one (which may not be SDL joystick 0) to be N64 controller 0.  The user also wants the configuration to be automatic (doesn&amp;#039;t want to have to set up the joystick manually).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;How to configure&amp;#039;&amp;#039;&amp;#039;: Set controller #1 &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; parameter to 1, and set the SDL joystick name of your desired main controller in to the &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; parameter.&lt;br /&gt;
&lt;br /&gt;
=== Design Changes ===&lt;br /&gt;
* changes relative to Hg rev 173:725bc6d288ae&lt;br /&gt;
* Changes to &amp;lt;code&amp;gt;[Input-SDL-Control*]&amp;lt;/code&amp;gt; sections&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; changes from 1 to 2&lt;br /&gt;
*** Add parameter &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mode&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;: 0 = Fully Manual, 1 = Automatic with named SDL device, 2 = Fully Automatic.  GUI front-ends should make all of the controller&amp;#039;s other parameters read-only when the mode is set to 2, and should make all parameters except &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; read-only when the mode is set to 1.&lt;br /&gt;
*** For the &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; parameter, remove the &amp;lt;code&amp;gt;-2&amp;lt;/code&amp;gt; option (keyboard input should automatically work for any N64 controller which maps keys), and change the semantic of the &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; option to mean &amp;quot;No SDL joystick&amp;quot; instead of &amp;quot;Auto-config&amp;quot;.  For modes 1 and 2, this parameter will be set by the input plugin.  The user can only set this parameter for mode 0.&lt;br /&gt;
*** For the &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; parameter: Similar to previous usage, but mode-dependent: For mode 0, name of joystick/keyboard which was last used (set by plugin). For mode 1, name of desired joystick/keyboard to use for this controller (set by user).  For mode 2, ignored.&lt;/div&gt;</summary>
		<author><name>Richard42</name></author>
	</entry>
</feed>