@@ -208,8 +208,15 @@ class InputActionListener : public gcn::ActionListener
208
208
case 2 : changed_prefs.jports [0 ].id = JSEM_JOYS; changed_prefs.jports [0 ].mode = JSEM_MODE_JOYSTICK; break ;
209
209
case 3 : changed_prefs.jports [0 ].id = JSEM_JOYS; changed_prefs.jports [0 ].mode = JSEM_MODE_JOYSTICK_CD32; break ;
210
210
case 4 : changed_prefs.jports [0 ].id = -1 ; changed_prefs.jports [0 ].mode = JSEM_MODE_DEFAULT; break ;
211
- default :changed_prefs.jports [0 ].id = JSEM_JOYS + cboPort0->getSelected () - 4 ;
212
- changed_prefs.jports [0 ].mode = JSEM_MODE_JOYSTICK;
211
+ default :if ((cboPort0->getSelected () - 4 ) < inputdevice_get_device_total (IDTYPE_JOYSTICK))
212
+ {
213
+ changed_prefs.jports [0 ].id = JSEM_JOYS + cboPort0->getSelected () - 4 ;
214
+ changed_prefs.jports [0 ].mode = JSEM_MODE_JOYSTICK;
215
+ }
216
+ {
217
+ changed_prefs.jports [0 ].id = JSEM_JOYS + cboPort0->getSelected () - 4 - (inputdevice_get_device_total (IDTYPE_JOYSTICK) -1 );
218
+ changed_prefs.jports [0 ].mode = JSEM_MODE_JOYSTICK_CD32;
219
+ }
213
220
break ;
214
221
}
215
222
inputdevice_updateconfig (NULL , &changed_prefs);
@@ -223,8 +230,16 @@ class InputActionListener : public gcn::ActionListener
223
230
case 2 : changed_prefs.jports [1 ].id = JSEM_JOYS; changed_prefs.jports [1 ].mode = JSEM_MODE_JOYSTICK; break ;
224
231
case 3 : changed_prefs.jports [1 ].id = JSEM_JOYS; changed_prefs.jports [1 ].mode = JSEM_MODE_JOYSTICK_CD32; break ;
225
232
case 4 : changed_prefs.jports [1 ].id = -1 ; changed_prefs.jports [1 ].mode = JSEM_MODE_DEFAULT; break ;
226
- default :changed_prefs.jports [1 ].id = JSEM_JOYS + cboPort1->getSelected () - 4 ;
227
- changed_prefs.jports [1 ].mode = JSEM_MODE_JOYSTICK;
233
+ default :if ((cboPort1->getSelected () - 4 ) < inputdevice_get_device_total (IDTYPE_JOYSTICK))
234
+ {
235
+ changed_prefs.jports [1 ].id = JSEM_JOYS + cboPort1->getSelected () - 4 ;
236
+ changed_prefs.jports [1 ].mode = JSEM_MODE_JOYSTICK;
237
+ }
238
+ else
239
+ {
240
+ changed_prefs.jports [1 ].id = JSEM_JOYS + cboPort1->getSelected () - 4 - (inputdevice_get_device_total (IDTYPE_JOYSTICK) -1 );
241
+ changed_prefs.jports [1 ].mode = JSEM_MODE_JOYSTICK_CD32;
242
+ }
228
243
break ;
229
244
}
230
245
inputdevice_updateconfig (NULL , &changed_prefs);
@@ -320,14 +335,20 @@ static InputActionListener* inputActionListener;
320
335
void InitPanelInput (const struct _ConfigCategory & category)
321
336
{
322
337
inputActionListener = new InputActionListener ();
323
-
324
338
if (ctrlPortList.getNumberOfElements () < (4 + inputdevice_get_device_total (IDTYPE_JOYSTICK)))
325
339
{
326
340
int i;
327
341
for (i=0 ; i<(inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1 ); i++)
328
342
{
329
343
ctrlPortList.AddElement (inputdevice_get_device_name (IDTYPE_JOYSTICK,i + 1 ));
330
344
}
345
+ for (i=0 ; i<(inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1 ); i++)
346
+ {
347
+ char cd32joyname [128 ] = " " ;
348
+ strncat (cd32joyname , inputdevice_get_device_name (IDTYPE_JOYSTICK,i + 1 ), 128 - 1 );
349
+ strncat (cd32joyname ," as CD32 contr." , 128 - 1 );
350
+ ctrlPortList.AddElement (cd32joyname);
351
+ }
331
352
}
332
353
333
354
@@ -672,7 +693,10 @@ void RefreshPanelInput(void)
672
693
cboPort0->setSelected (4 );
673
694
break ;
674
695
default :
675
- cboPort0->setSelected (changed_prefs.jports [0 ].id -JSEM_JOYS + 4 );
696
+ if (changed_prefs.jports [0 ].mode != JSEM_MODE_JOYSTICK_CD32)
697
+ cboPort0->setSelected (changed_prefs.jports [0 ].id -JSEM_JOYS + 4 );
698
+ else
699
+ cboPort0->setSelected (changed_prefs.jports [0 ].id -JSEM_JOYS + 4 + inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1 );
676
700
break ;
677
701
}
678
702
@@ -694,7 +718,10 @@ void RefreshPanelInput(void)
694
718
cboPort1->setSelected (4 );
695
719
break ;
696
720
default :
697
- cboPort1->setSelected (changed_prefs.jports [1 ].id -JSEM_JOYS + 4 );
721
+ if (changed_prefs.jports [1 ].mode != JSEM_MODE_JOYSTICK_CD32)
722
+ cboPort1->setSelected (changed_prefs.jports [1 ].id -JSEM_JOYS + 4 );
723
+ else
724
+ cboPort1->setSelected (changed_prefs.jports [1 ].id -JSEM_JOYS + 4 + inputdevice_get_device_total (IDTYPE_JOYSTICK) - 1 );
698
725
break ;
699
726
}
700
727
0 commit comments