applied kode54's sdl/gtk joypad patch

This commit is contained in:
Squall-Leonhart 2011-01-09 20:14:40 +00:00
parent 9de4eedf3b
commit 60f7dad351
2 changed files with 639 additions and 619 deletions

View File

@ -144,9 +144,17 @@ void JoypadConfigDialog::vUpdateEntries()
else if (what < 0x30)
{
// joystick hat
int dir = (what & 3);
what = (what & 15);
what >>= 2;
os << " Hat " << what;
os << " Hat " << what << " ";
switch (dir)
{
case 0: os << "Up"; break;
case 1: os << "Down"; break;
case 2: os << "Right"; break;
case 3: os << "Left"; break;
}
}
csName = os.str().c_str();
@ -209,6 +217,7 @@ void JoypadConfigDialog::vOnInputEvent(const SDL_Event &event)
}
int code = inputGetEventCode(event);
if (!code) return;
inputSetKeymap(m_ePad, m_astKeys[m_iCurrentEntry].m_eKeyFlag, code);
vUpdateEntries();
@ -241,11 +250,17 @@ bool JoypadConfigDialog::bOnConfigIdle()
}
vEmptyEventQueue();
break;
case SDL_JOYHATMOTION:
case SDL_JOYBUTTONUP:
vOnInputEvent(event);
vEmptyEventQueue();
break;
case SDL_JOYHATMOTION:
if (event.jhat.value)
{
vOnInputEvent(event);
vEmptyEventQueue();
}
break
}
}

View File

@ -84,8 +84,11 @@ static int sensorY = 2047;
static uint32_t sdlGetHatCode(const SDL_Event &event)
{
if (!event.jhat.value) return 0;
return (
((event.jhat.which + 1) << 16) |
32 |
(event.jhat.hat << 2) |
(
event.jhat.value & SDL_HAT_UP ? 0 :
@ -106,6 +109,8 @@ static uint32_t sdlGetButtonCode(const SDL_Event &event)
static uint32_t sdlGetAxisCode(const SDL_Event &event)
{
if (event.jaxis.value >= -16384 && event.jaxis.value <= 16384) return 0;
return (
((event.jaxis.which + 1) << 16) |
(event.jaxis.axis << 1) |