[retro-gtk/wip/aplazas/gamepad: 2/6] input: Add retro_gamepad_axis_converter()



commit 4049722d44f47e5697cb82079257a46ba15a0370
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Thu Aug 3 17:11:22 2017 +0200

    input: Add retro_gamepad_axis_converter()
    
    This will allow to use Linux input event codes for gamepad axes and to
    convert them internally to the corresponding Libretro axes, reducing the
    public API.

 retro-gtk/input/retro-gamepad-input.c |   33 +++++++++++++++++++++++++++++++++
 retro-gtk/input/retro-gamepad-input.h |    3 +++
 2 files changed, 36 insertions(+), 0 deletions(-)
---
diff --git a/retro-gtk/input/retro-gamepad-input.c b/retro-gtk/input/retro-gamepad-input.c
index 8c44101..abc120f 100644
--- a/retro-gtk/input/retro-gamepad-input.c
+++ b/retro-gtk/input/retro-gamepad-input.c
@@ -44,3 +44,36 @@ retro_gamepad_button_converter (guint16 button)
 
   return RETRO_JOYPAD_ID_COUNT;
 }
+
+gboolean
+retro_gamepad_axis_converter (guint16           axis,
+                              RetroAnalogIndex *index,
+                              RetroAnalogId    *id)
+{
+  switch (axis) {
+  case ABS_X:
+    *index = RETRO_ANALOG_INDEX_LEFT;
+    *id = RETRO_ANALOG_ID_X;
+
+    return TRUE;
+  case ABS_Y:
+    *index = RETRO_ANALOG_INDEX_LEFT;
+    *id = RETRO_ANALOG_ID_Y;
+
+    return TRUE;
+  case ABS_RX:
+    *index = RETRO_ANALOG_INDEX_RIGHT;
+    *id = RETRO_ANALOG_ID_X;
+
+    return TRUE;
+  case ABS_RY:
+    *index = RETRO_ANALOG_INDEX_RIGHT;
+    *id = RETRO_ANALOG_ID_Y;
+
+    return TRUE;
+  default:
+    return FALSE;
+  }
+
+  return FALSE;
+}
diff --git a/retro-gtk/input/retro-gamepad-input.h b/retro-gtk/input/retro-gamepad-input.h
index 388d64e..d1d852c 100644
--- a/retro-gtk/input/retro-gamepad-input.h
+++ b/retro-gtk/input/retro-gamepad-input.h
@@ -9,6 +9,9 @@
 G_BEGIN_DECLS
 
 RetroJoypadId retro_gamepad_button_converter (guint16 button);
+gboolean retro_gamepad_axis_converter (guint16           axis,
+                                       RetroAnalogIndex *index,
+                                       RetroAnalogId    *id);
 
 G_END_DECLS
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]