Clarified joystick axis processing.
This commit is contained in:
parent
a334dd6309
commit
0f6cd38709
|
@ -201,6 +201,20 @@ u16 get_set_joy_key(int index) {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reset corresponding key and its twin axis key */
|
||||||
|
u16 get_joy_axis_twin(u16 key)
|
||||||
|
{
|
||||||
|
switch(key)
|
||||||
|
{
|
||||||
|
case KEYMASK_( KEY_RIGHT-1 ):
|
||||||
|
return KEYMASK_( KEY_LEFT-1 );
|
||||||
|
case KEYMASK_( KEY_UP-1 ):
|
||||||
|
return KEYMASK_( KEY_DOWN-1 );
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Get and set a new joystick axis */
|
/* Get and set a new joystick axis */
|
||||||
void get_set_joy_axis(int index, int index_o) {
|
void get_set_joy_axis(int index, int index_o) {
|
||||||
BOOL done = FALSE;
|
BOOL done = FALSE;
|
||||||
|
@ -287,34 +301,24 @@ u16 process_ctrls_events(u16 keypad)
|
||||||
Note: button constants have a 1bit offset. */
|
Note: button constants have a 1bit offset. */
|
||||||
case SDL_JOYAXISMOTION:
|
case SDL_JOYAXISMOTION:
|
||||||
key = lookup_joy_key( JOY_AXIS_(event.jaxis.axis) );
|
key = lookup_joy_key( JOY_AXIS_(event.jaxis.axis) );
|
||||||
if( key != 0 )
|
if( key == 0 ) break; /* Not an axis of interest? */
|
||||||
{
|
|
||||||
if( event.jaxis.value == 0 )
|
|
||||||
{
|
|
||||||
switch(key)
|
|
||||||
{
|
|
||||||
case KEYMASK_( KEY_RIGHT-1 ):
|
|
||||||
key |= KEYMASK_( KEY_LEFT-1 );
|
|
||||||
break;
|
|
||||||
case KEYMASK_( KEY_UP-1 ):
|
|
||||||
key |= KEYMASK_( KEY_DOWN-1 );
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("Unknown joystick state!\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
RM_KEY( keypad, key );
|
|
||||||
}
|
|
||||||
else if( (event.jaxis.value > 0) &&
|
|
||||||
(key == KEYMASK_( KEY_UP-1 )) )
|
|
||||||
key = KEYMASK_( KEY_DOWN-1 );
|
|
||||||
else if( (event.jaxis.value < 0) &&
|
|
||||||
(key == KEYMASK_( KEY_RIGHT-1 )) )
|
|
||||||
key = KEYMASK_( KEY_LEFT-1 );
|
|
||||||
|
|
||||||
if( (event.jaxis.value >> 5) != 0 )
|
/* Axis is back to initial position */
|
||||||
ADD_KEY( keypad, key );
|
if( event.jaxis.value == 0 )
|
||||||
}
|
RM_KEY( keypad, key | get_joy_axis_twin(key) );
|
||||||
|
/* Key should have been down but its currently set to up? */
|
||||||
|
else if( (event.jaxis.value > 0) &&
|
||||||
|
(key == KEYMASK_( KEY_UP-1 )) )
|
||||||
|
key = KEYMASK_( KEY_DOWN-1 );
|
||||||
|
/* Key should have been left but its currently set to right? */
|
||||||
|
else if( (event.jaxis.value < 0) &&
|
||||||
|
(key == KEYMASK_( KEY_RIGHT-1 )) )
|
||||||
|
key = KEYMASK_( KEY_LEFT-1 );
|
||||||
|
|
||||||
|
/* Remove some sensitivity before checking if different than zero...
|
||||||
|
Fixes some badly behaving joypads [like one of mine]. */
|
||||||
|
if( (event.jaxis.value >> 5) != 0 )
|
||||||
|
ADD_KEY( keypad, key );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Joystick button pressed */
|
/* Joystick button pressed */
|
||||||
|
|
Loading…
Reference in New Issue