[gnome-games/wip/aplazas/gamepad-event: 7/7] gamepad: Remove custom types
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games/wip/aplazas/gamepad-event: 7/7] gamepad: Remove custom types
- Date: Sat, 13 May 2017 16:16:42 +0000 (UTC)
commit becc837c6f202e8c96a21e7384aed4da53b6ebca
Author: Adrien Plazas <kekun plazas laposte net>
Date: Sat May 13 17:39:32 2017 +0200
gamepad: Remove custom types
Remove StandardGamepadButton, StandardGamepadAxis and GamepadInputType
and directly use the corresponding Linux event types and codes.
src/Makefile.am | 3 -
src/gamepad/gamepad-dpad.h | 7 +-
src/gamepad/gamepad-input-type.c | 22 -----
src/gamepad/gamepad-input-type.h | 30 -------
src/gamepad/gamepad-mapped-event.h | 9 +--
src/gamepad/gamepad-mapping.c | 141 +++++++++++++++++----------------
src/gamepad/gamepad.c | 21 +++---
src/gamepad/standard-gamepad-axis.c | 24 ------
src/gamepad/standard-gamepad-axis.h | 37 ---------
src/gamepad/standard-gamepad-button.c | 37 ---------
src/gamepad/standard-gamepad-button.h | 60 --------------
11 files changed, 88 insertions(+), 303 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 64ad992..5e78c90 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -77,7 +77,6 @@ gnome_games_SOURCES = \
\
gamepad/gamepad.c \
gamepad/gamepad-dpad.c \
- gamepad/gamepad-input-type.c \
gamepad/gamepad-mapped-event.c \
gamepad/gamepad-mapping.c \
gamepad/gamepad-mapping-error.c \
@@ -85,8 +84,6 @@ gnome_games_SOURCES = \
gamepad/gamepad-monitor.c \
gamepad/raw-gamepad.c \
gamepad/raw-gamepad-monitor.c \
- gamepad/standard-gamepad-axis.c \
- gamepad/standard-gamepad-button.c \
\
generic/generic-game.vala \
generic/generic-game-uri-adapter.vala \
diff --git a/src/gamepad/gamepad-dpad.h b/src/gamepad/gamepad-dpad.h
index bfc0a2c..b344484 100644
--- a/src/gamepad/gamepad-dpad.h
+++ b/src/gamepad/gamepad-dpad.h
@@ -4,16 +4,15 @@
#define GAMES_GAMEPAD_DPAD_H
#include <glib-object.h>
-#include "gamepad-input-type.h"
G_BEGIN_DECLS
#define GAMES_TYPE_GAMEPAD_DPAD (games_gamepad_dpad_get_type ())
typedef struct {
- GamesGamepadInputType types[4];
- gint values[4];
- gint axis_values[2];
+ guint16 types[4];
+ guint16 values[4];
+ gint32 axis_values[2];
} GamesGamepadDPad;
GType games_gamepad_dpad_get_type (void) G_GNUC_CONST;
diff --git a/src/gamepad/gamepad-mapped-event.h b/src/gamepad/gamepad-mapped-event.h
index 241a5d6..441b49c 100644
--- a/src/gamepad/gamepad-mapped-event.h
+++ b/src/gamepad/gamepad-mapped-event.h
@@ -4,18 +4,15 @@
#define GAMES_GAMEPAD_MAPPED_EVENT_H
#include <glib-object.h>
-#include "gamepad-input-type.h"
-#include "standard-gamepad-axis.h"
-#include "standard-gamepad-button.h"
G_BEGIN_DECLS
#define GAMES_TYPE_GAMEPAD_MAPPED_EVENT (games_gamepad_mapped_event_get_type ())
typedef struct {
- GamesGamepadInputType type;
- GamesStandardGamepadAxis axis;
- GamesStandardGamepadButton button;
+ guint16 type;
+ guint16 axis;
+ guint16 button;
} GamesGamepadMappedEvent;
GType games_gamepad_mapped_event_get_type (void) G_GNUC_CONST;
diff --git a/src/gamepad/gamepad-mapping.c b/src/gamepad/gamepad-mapping.c
index 971d637..1184578 100644
--- a/src/gamepad/gamepad-mapping.c
+++ b/src/gamepad/gamepad-mapping.c
@@ -3,13 +3,14 @@
#include "gamepad-mapping.h"
#include <glib/gi18n-lib.h>
+#include <linux/input-event-codes.h>
#include <stdlib.h>
#include "gamepad-dpad.h"
#include "gamepad-mapping-error.h"
typedef struct {
- GamesGamepadInputType type;
- gint value;
+ guint16 type;
+ guint16 value;
} input_t;
struct _GamesGamepadMapping {
@@ -118,34 +119,34 @@ parse_axis_value (GamesGamepadMapping *self,
g_array_index (self->axes, input_t, axis) = input;
}
-static GamesGamepadInputType
+static guint16
parse_input_type (const gchar *mapping_string)
{
const static struct {
- GamesGamepadInputType enum_value;
+ guint16 enum_value;
const gchar *string_value;
} values[] = {
- { GAMES_GAMEPAD_INPUT_TYPE_AXIS, "leftx" },
- { GAMES_GAMEPAD_INPUT_TYPE_AXIS, "lefty" },
- { GAMES_GAMEPAD_INPUT_TYPE_AXIS, "rightx" },
- { GAMES_GAMEPAD_INPUT_TYPE_AXIS, "righty" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "a" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "b" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "back" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "dpdown" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "dpleft" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "dpright" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "dpup" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "guide" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "leftshoulder" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "leftstick" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "lefttrigger" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "rightshoulder" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "rightstick" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "righttrigger" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "start" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "x" },
- { GAMES_GAMEPAD_INPUT_TYPE_BUTTON, "y" },
+ { EV_ABS, "leftx" },
+ { EV_ABS, "lefty" },
+ { EV_ABS, "rightx" },
+ { EV_ABS, "righty" },
+ { EV_KEY, "a" },
+ { EV_KEY, "b" },
+ { EV_KEY, "back" },
+ { EV_KEY, "dpdown" },
+ { EV_KEY, "dpleft" },
+ { EV_KEY, "dpright" },
+ { EV_KEY, "dpup" },
+ { EV_KEY, "guide" },
+ { EV_KEY, "leftshoulder" },
+ { EV_KEY, "leftstick" },
+ { EV_KEY, "lefttrigger" },
+ { EV_KEY, "rightshoulder" },
+ { EV_KEY, "rightstick" },
+ { EV_KEY, "righttrigger" },
+ { EV_KEY, "start" },
+ { EV_KEY, "x" },
+ { EV_KEY, "y" },
};
const gint length = sizeof (values) / sizeof (values[0]);
gint i;
@@ -154,20 +155,20 @@ parse_input_type (const gchar *mapping_string)
if (g_strcmp0 (mapping_string, values[i].string_value) == 0)
return values[i].enum_value;
- return GAMES_GAMEPAD_INPUT_TYPE_INVALID;
+ return EV_MAX;
}
-static GamesStandardGamepadAxis
+static guint16
parse_axis (const gchar *mapping_string)
{
const static struct {
- GamesStandardGamepadAxis enum_value;
+ guint16 enum_value;
const gchar *string_value;
} values[] = {
- { GAMES_STANDARD_GAMEPAD_AXIS_LEFT_X, "leftx" },
- { GAMES_STANDARD_GAMEPAD_AXIS_LEFT_Y, "lefty" },
- { GAMES_STANDARD_GAMEPAD_AXIS_RIGHT_X, "rightx" },
- { GAMES_STANDARD_GAMEPAD_AXIS_RIGHT_Y, "righty" },
+ { ABS_X, "leftx" },
+ { ABS_Y, "lefty" },
+ { ABS_RX, "rightx" },
+ { ABS_RY, "righty" },
};
const gint length = sizeof (values) / sizeof (values[0]);
gint i;
@@ -176,33 +177,33 @@ parse_axis (const gchar *mapping_string)
if (g_strcmp0 (mapping_string, values[i].string_value) == 0)
return values[i].enum_value;
- return GAMES_STANDARD_GAMEPAD_AXIS_UNKNOWN;
+ return ABS_MAX;
}
-static GamesStandardGamepadButton
+static guint16
parse_button (const gchar *mapping_string)
{
const static struct {
- GamesStandardGamepadButton enum_value;
+ guint16 enum_value;
const gchar *string_value;
} values[] = {
- { GAMES_STANDARD_GAMEPAD_BUTTON_A, "a" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_B, "b" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_DOWN, "dpdown" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_LEFT, "dpleft" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_RIGHT, "dpright" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_UP, "dpup" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_HOME, "guide" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_SELECT, "back" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_SHOULDER_L, "leftshoulder" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_SHOULDER_R, "rightshoulder" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_START, "start" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_STICK_L, "leftstick" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_STICK_R, "rightstick" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_TRIGGER_L, "lefttrigger" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_TRIGGER_R, "righttrigger" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_X, "x" },
- { GAMES_STANDARD_GAMEPAD_BUTTON_Y, "y" },
+ { BTN_A, "a" },
+ { BTN_B, "b" },
+ { BTN_DPAD_DOWN, "dpdown" },
+ { BTN_DPAD_LEFT, "dpleft" },
+ { BTN_DPAD_RIGHT, "dpright" },
+ { BTN_DPAD_UP, "dpup" },
+ { BTN_MODE, "guide" },
+ { BTN_SELECT, "back" },
+ { BTN_TL, "leftshoulder" },
+ { BTN_TR, "rightshoulder" },
+ { BTN_START, "start" },
+ { BTN_THUMBL, "leftstick" },
+ { BTN_THUMBR, "rightstick" },
+ { BTN_TL2, "lefttrigger" },
+ { BTN_TR2, "righttrigger" },
+ { BTN_Y, "x" },
+ { BTN_X, "y" },
};
const gint length = sizeof (values) / sizeof (values[0]);
gint i;
@@ -211,7 +212,7 @@ parse_button (const gchar *mapping_string)
if (g_strcmp0 (mapping_string, values[i].string_value) == 0)
return values[i].enum_value;
- return GAMES_STANDARD_GAMEPAD_BUTTON_UNKNOWN;
+ return KEY_MAX;
}
// This function doesn't take care of cleaning up the object's state before
@@ -248,15 +249,15 @@ set_from_sdl_string (GamesGamepadMapping *self,
g_strfreev (splitted_mapping);
switch (input.type) {
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
+ case EV_KEY:
input.value = (gint) parse_button (mapping_key);
break;
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
+ case EV_ABS:
input.value = (gint) parse_axis (mapping_key);
break;
- case GAMES_GAMEPAD_INPUT_TYPE_INVALID:
+ case EV_MAX:
if (g_strcmp0 (mapping_key, "platform") != 0)
g_debug ("Invalid token: %s", mapping_key);
@@ -359,12 +360,12 @@ games_gamepad_mapping_get_dpad_mapping (GamesGamepadMapping *self,
event->type = dpad->types[dpad_position];
switch (event->type) {
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
- event->axis = (GamesStandardGamepadAxis) dpad->values[dpad_position];
+ case EV_ABS:
+ event->axis = dpad->values[dpad_position];
break;
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
- event->button = (GamesStandardGamepadButton) dpad->values[dpad_position];
+ case EV_KEY:
+ event->button = dpad->values[dpad_position];
break;
default:
@@ -384,15 +385,15 @@ games_gamepad_mapping_get_axis_mapping (GamesGamepadMapping *self,
event->type = (axis_number < self->axes->len) ?
g_array_index (self->axes, input_t, axis_number).type :
- GAMES_GAMEPAD_INPUT_TYPE_INVALID;
+ EV_MAX;
switch (event->type) {
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
- event->axis = (GamesStandardGamepadAxis) g_array_index (self->axes, input_t, axis_number).value;
+ case EV_ABS:
+ event->axis = g_array_index (self->axes, input_t, axis_number).value;
break;
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
- event->button = (GamesStandardGamepadButton) g_array_index (self->axes, input_t, axis_number).value;
+ case EV_KEY:
+ event->button = g_array_index (self->axes, input_t, axis_number).value;
break;
default:
@@ -412,15 +413,15 @@ games_gamepad_mapping_get_button_mapping (GamesGamepadMapping *self,
event->type = (button_number < self->buttons->len) ?
g_array_index (self->buttons, input_t, button_number).type :
- GAMES_GAMEPAD_INPUT_TYPE_INVALID;
+ EV_MAX;
switch (event->type) {
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
- event->axis = (GamesStandardGamepadAxis) g_array_index (self->buttons, input_t, button_number).value;
+ case EV_ABS:
+ event->axis = g_array_index (self->buttons, input_t, button_number).value;
break;
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
- event->button = (GamesStandardGamepadButton) g_array_index (self->buttons, input_t, button_number).value;
+ case EV_KEY:
+ event->button = g_array_index (self->buttons, input_t, button_number).value;
break;
default:
diff --git a/src/gamepad/gamepad.c b/src/gamepad/gamepad.c
index f5e3050..509f102 100644
--- a/src/gamepad/gamepad.c
+++ b/src/gamepad/gamepad.c
@@ -2,6 +2,7 @@
#include "gamepad.h"
+#include <linux/input-event-codes.h>
#include <stdlib.h>
#include "../event/event.h"
#include "gamepad-mapping.h"
@@ -63,13 +64,13 @@ on_button_event (GamesRawGamepad *sender,
&event);
switch (event.type) {
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
+ case EV_ABS:
g_signal_emit (self,
signals[SIGNAL_AXIS_EVENT],
0, event.axis, value ? 1 : 0);
break;
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
+ case EV_KEY:
g_signal_emit (self,
signals[SIGNAL_BUTTON_EVENT],
0, event.button, value);
@@ -96,11 +97,11 @@ on_axis_event (GamesRawGamepad *sender,
games_gamepad_mapping_get_axis_mapping (self->mapping, games_event->index, &event);
switch (event.type) {
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
+ case EV_ABS:
g_signal_emit (self, signals[SIGNAL_AXIS_EVENT],
0, event.axis, games_event->value);
break;
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
+ case EV_KEY:
g_signal_emit (self, signals[SIGNAL_BUTTON_EVENT],
0, event.button, games_event->value > 0.);
@@ -129,16 +130,16 @@ on_hat_event (GamesRawGamepad *sender,
switch (games_event->axis) {
case 0:
g_signal_emit (self, signals[SIGNAL_BUTTON_EVENT],
- 0, GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_LEFT, games_event->value < 0);
+ 0, BTN_DPAD_LEFT, games_event->value < 0);
g_signal_emit (self, signals[SIGNAL_BUTTON_EVENT],
- 0, GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_RIGHT, games_event->value > 0);
+ 0, BTN_DPAD_RIGHT, games_event->value > 0);
break;
case 1:
g_signal_emit (self, signals[SIGNAL_BUTTON_EVENT],
- 0, GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_UP, games_event->value < 0);
+ 0, BTN_DPAD_UP, games_event->value < 0);
g_signal_emit (self, signals[SIGNAL_BUTTON_EVENT],
- 0, GAMES_STANDARD_GAMEPAD_BUTTON_DPAD_DOWN, games_event->value > 0);
+ 0, BTN_DPAD_DOWN, games_event->value > 0);
break;
default:
@@ -152,12 +153,12 @@ on_hat_event (GamesRawGamepad *sender,
games_gamepad_mapping_get_dpad_mapping (self->mapping, games_event->index, games_event->axis,
games_event->value, &event);
switch (event.type) {
- case GAMES_GAMEPAD_INPUT_TYPE_AXIS:
+ case EV_ABS:
g_signal_emit (self, signals[SIGNAL_AXIS_EVENT],
0, event.axis, (gdouble) abs (games_event->value));
break;
- case GAMES_GAMEPAD_INPUT_TYPE_BUTTON:
+ case EV_KEY:
g_signal_emit (self, signals[SIGNAL_BUTTON_EVENT],
0, event.button, (gboolean) abs (games_event->value));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]