(QNX) Input - cleanups

This commit is contained in:
twinaphex 2014-09-30 16:50:28 +02:00
parent 9b8fb4cac5
commit 40894b2cc3

View File

@ -39,8 +39,8 @@ typedef struct {
int analogCount; int analogCount;
int buttonCount; int buttonCount;
char id[64]; char id[64];
char vendor[64]; char vid[64];
char product[64]; char pid[64];
int device; int device;
int port; int port;
@ -129,8 +129,7 @@ static void process_gamepad_event(void *data,
SCREEN_PROPERTY_ANALOG1, controller->analog1); SCREEN_PROPERTY_ANALOG1, controller->analog1);
/* Only player 1 /* Only player 1
* TODO: Am I missing something? Is there a better way? * TODO: Am I missing something? Is there a better way? */
*/
if((controller->port == 0) && if((controller->port == 0) &&
(controller->buttons & (controller->buttons &
g_settings.input.binds[0][RARCH_MENU_TOGGLE].joykey)) g_settings.input.binds[0][RARCH_MENU_TOGGLE].joykey))
@ -153,9 +152,9 @@ static void loadController(void *data, input_device_t* controller)
screen_get_device_property_cv(controller->handle, screen_get_device_property_cv(controller->handle,
SCREEN_PROPERTY_ID_STRING, sizeof(controller->id), controller->id); SCREEN_PROPERTY_ID_STRING, sizeof(controller->id), controller->id);
screen_get_device_property_cv(controller->handle, screen_get_device_property_cv(controller->handle,
SCREEN_PROPERTY_VENDOR, sizeof(controller->id), controller->vendor); SCREEN_PROPERTY_VENDOR, sizeof(controller->id), controller->vid);
screen_get_device_property_cv(controller->handle, screen_get_device_property_cv(controller->handle,
SCREEN_PROPERTY_PRODUCT, sizeof(controller->id), controller->product); SCREEN_PROPERTY_PRODUCT, sizeof(controller->id), controller->pid);
if (controller->type == SCREEN_EVENT_GAMEPAD || if (controller->type == SCREEN_EVENT_GAMEPAD ||
controller->type == SCREEN_EVENT_JOYSTICK) controller->type == SCREEN_EVENT_JOYSTICK)
@ -185,8 +184,8 @@ static void loadController(void *data, input_device_t* controller)
RARCH_LOG("Keyboard Device Connected:\n"); RARCH_LOG("Keyboard Device Connected:\n");
RARCH_LOG("\tID: %s\n", controller->id); RARCH_LOG("\tID: %s\n", controller->id);
RARCH_LOG("\tVendor: %s\n", controller->vendor); RARCH_LOG("\tVendor ID: %s\n", controller->vid);
RARCH_LOG("\tProduct: %s\n", controller->product); RARCH_LOG("\tProduct ID: %s\n", controller->pid);
RARCH_LOG("\tButton Count: %d\n", controller->buttonCount); RARCH_LOG("\tButton Count: %d\n", controller->buttonCount);
RARCH_LOG("\tAnalog Count: %d\n", controller->analogCount); RARCH_LOG("\tAnalog Count: %d\n", controller->analogCount);
} }
@ -313,7 +312,8 @@ static void qnx_input_autodetect_gamepad(void *data,
} }
} }
static void process_keyboard_event(void *data, screen_event_t event, int type) static void process_keyboard_event(void *data,
screen_event_t event, int type)
{ {
input_device_t* controller = NULL; input_device_t* controller = NULL;
int i, b, sym, modifiers, flags, scan, cap; int i, b, sym, modifiers, flags, scan, cap;
@ -695,23 +695,15 @@ static void qnx_input_poll(void *data)
} }
} }
static int16_t qnx_input_state(void *data,
const struct retro_keybind **retro_keybinds,
unsigned port, unsigned device, unsigned index, unsigned id)
{
qnx_input_t *qnx = (qnx_input_t*)data;
switch (device)
{
case RETRO_DEVICE_JOYPAD:
return input_joypad_pressed(qnx->joypad, port,
(unsigned int)g_settings.input.binds[port], id);
#ifdef HAVE_BB10
case RETRO_DEVICE_ANALOG:
/* Need to return [-0x8000, 0x7fff]. /* Need to return [-0x8000, 0x7fff].
* Gamepad API gives us [-128, 127] with (0,0) center * Gamepad API gives us [-128, 127] with (0,0) center
* Untested * Untested
*/ */
static int16_t qnx_analog_input_state(qnx_input_t *qnx,
unsigned port, unsigned index, unsigned id)
{
#ifdef HAVE_BB10
if(qnx->port_device[port]) if(qnx->port_device[port])
{ {
switch ((index << 1) | id) switch ((index << 1) | id)
@ -724,13 +716,16 @@ static int16_t qnx_input_state(void *data,
return qnx->port_device[port]->analog1[0] * 256; return qnx->port_device[port]->analog1[0] * 256;
case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y: case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y:
return qnx->port_device[port]->analog1[1] * 256; return qnx->port_device[port]->analog1[1] * 256;
default:
break;
} }
} }
break;
#endif #endif
case RARCH_DEVICE_POINTER_SCREEN:
return 0;
}
static int16_t qnx_pointer_screen_input_state(qnx_input_t *qnx,
unsigned index, unsigned id)
{
switch (id) switch (id)
{ {
case RETRO_DEVICE_ID_POINTER_X: case RETRO_DEVICE_ID_POINTER_X:
@ -742,11 +737,14 @@ static int16_t qnx_input_state(void *data,
index < qnx->pointer_count) index < qnx->pointer_count)
&& (qnx->pointer[index].full_x != -0x8000) && (qnx->pointer[index].full_x != -0x8000)
&& (qnx->pointer[index].full_y != -0x8000); && (qnx->pointer[index].full_y != -0x8000);
default: }
return 0; return 0;
} }
break;
case RETRO_DEVICE_POINTER: static int16_t qnx_pointer_input_state(qnx_input_t *qnx,
unsigned index, unsigned id)
{
switch (id) switch (id)
{ {
case RETRO_DEVICE_ID_POINTER_X: case RETRO_DEVICE_ID_POINTER_X:
@ -758,12 +756,28 @@ static int16_t qnx_input_state(void *data,
index < qnx->pointer_count) index < qnx->pointer_count)
&& (qnx->pointer[index].x != -0x8000) && (qnx->pointer[index].x != -0x8000)
&& (qnx->pointer[index].y != -0x8000); && (qnx->pointer[index].y != -0x8000);
default: }
return 0; return 0;
} }
break;
default: static int16_t qnx_input_state(void *data,
break; const struct retro_keybind **retro_keybinds,
unsigned port, unsigned device, unsigned index, unsigned id)
{
qnx_input_t *qnx = (qnx_input_t*)data;
switch (device)
{
case RETRO_DEVICE_JOYPAD:
return input_joypad_pressed(qnx->joypad, port,
(unsigned int)g_settings.input.binds[port], id);
case RETRO_DEVICE_ANALOG:
return qnx_analog_input_state(qnx, port, index, id);
case RARCH_DEVICE_POINTER_SCREEN:
return qnx_pointer_screen_input_state(qnx, index, id);
case RETRO_DEVICE_POINTER:
return qnx_pointer_input_state(qnx, index, id);
} }
return 0; return 0;