[retro-gtk/wip/aplazas/gamepad: 1/6] input: Add retro_gamepad_button_converter()
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [retro-gtk/wip/aplazas/gamepad: 1/6] input: Add retro_gamepad_button_converter()
- Date: Tue, 5 Sep 2017 06:12:48 +0000 (UTC)
commit 5b560c0706bb6a1556fb7e6aea50f9e613f40c37
Author: Adrien Plazas <kekun plazas laposte net>
Date: Tue Jul 25 12:02:49 2017 +0200
input: Add retro_gamepad_button_converter()
This will allow to use Linux input event codes for gamepad buttons and
to convert them internally to the corresponding Libretro buttons,
reducing the public API.
retro-gtk/Makefile.am | 4 +++
retro-gtk/input/device.vala | 5 ++-
retro-gtk/input/retro-gamepad-input.c | 46 +++++++++++++++++++++++++++++++++
retro-gtk/input/retro-gamepad-input.h | 15 ++++++++++
4 files changed, 68 insertions(+), 2 deletions(-)
---
diff --git a/retro-gtk/Makefile.am b/retro-gtk/Makefile.am
index a14d581..d8d69f5 100644
--- a/retro-gtk/Makefile.am
+++ b/retro-gtk/Makefile.am
@@ -37,6 +37,7 @@ libretro_gtk_la_SOURCES = \
input/input-device-manager.vala \
input/keyboard-state.vala \
input/mouse.vala \
+ input/retro-gamepad-input.c \
input/retro-keyboard-key.c \
input/virtual-gamepad.vala \
\
@@ -72,6 +73,8 @@ libretro_gtk_la_SOURCES = \
video/video-filter.vala \
$(NULL)
+input/retro-gamepad-input.c: retro-gtk-internal.h
+
video/retro-video-converter.c: retro-gtk-internal.h
retro-core.c: retro-gtk-internal.h
@@ -152,6 +155,7 @@ pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = retro-gtk-0.12.pc
EXTRA_DIST = \
+ input/retro-gamepad-input.h \
input/retro-keyboard-key.h \
retro-core.h \
retro-module.h \
diff --git a/retro-gtk/input/device.vala b/retro-gtk/input/device.vala
index ce8a5bf..4b7f40a 100644
--- a/retro-gtk/input/device.vala
+++ b/retro-gtk/input/device.vala
@@ -62,7 +62,7 @@ public enum JoypadId {
*/
public enum AnalogIndex {
LEFT,
- RIGHT
+ RIGHT,
}
/**
@@ -70,7 +70,8 @@ public enum AnalogIndex {
*/
public enum AnalogId {
X,
- Y
+ Y,
+ COUNT,
}
/**
diff --git a/retro-gtk/input/retro-gamepad-input.c b/retro-gtk/input/retro-gamepad-input.c
new file mode 100644
index 0000000..8c44101
--- /dev/null
+++ b/retro-gtk/input/retro-gamepad-input.c
@@ -0,0 +1,46 @@
+// This file is part of retro-gtk. License: GPL-3.0+.
+
+#include "retro-gamepad-input.h"
+
+RetroJoypadId
+retro_gamepad_button_converter (guint16 button)
+{
+ switch (button) {
+ case BTN_A:
+ return RETRO_JOYPAD_ID_B;
+ case BTN_Y:
+ return RETRO_JOYPAD_ID_Y;
+ case BTN_SELECT:
+ return RETRO_JOYPAD_ID_SELECT;
+ case BTN_START:
+ return RETRO_JOYPAD_ID_START;
+ case BTN_DPAD_UP:
+ return RETRO_JOYPAD_ID_UP;
+ case BTN_DPAD_DOWN:
+ return RETRO_JOYPAD_ID_DOWN;
+ case BTN_DPAD_LEFT:
+ return RETRO_JOYPAD_ID_LEFT;
+ case BTN_DPAD_RIGHT:
+ return RETRO_JOYPAD_ID_RIGHT;
+ case BTN_B:
+ return RETRO_JOYPAD_ID_A;
+ case BTN_X:
+ return RETRO_JOYPAD_ID_X;
+ case BTN_TL:
+ return RETRO_JOYPAD_ID_L;
+ case BTN_TR:
+ return RETRO_JOYPAD_ID_R;
+ case BTN_TL2:
+ return RETRO_JOYPAD_ID_L2;
+ case BTN_TR2:
+ return RETRO_JOYPAD_ID_R2;
+ case BTN_THUMBL:
+ return RETRO_JOYPAD_ID_L3;
+ case BTN_THUMBR:
+ return RETRO_JOYPAD_ID_R3;
+ default:
+ return RETRO_JOYPAD_ID_COUNT;
+ }
+
+ return RETRO_JOYPAD_ID_COUNT;
+}
diff --git a/retro-gtk/input/retro-gamepad-input.h b/retro-gtk/input/retro-gamepad-input.h
new file mode 100644
index 0000000..388d64e
--- /dev/null
+++ b/retro-gtk/input/retro-gamepad-input.h
@@ -0,0 +1,15 @@
+// This file is part of retro-gtk. License: GPL-3.0+.
+
+#ifndef RETRO_GAMEPAD_BUTTON_H
+#define RETRO_GAMEPAD_BUTTON_H
+
+#include <linux/input-event-codes.h>
+#include "../retro-gtk-internal.h"
+
+G_BEGIN_DECLS
+
+RetroJoypadId retro_gamepad_button_converter (guint16 button);
+
+G_END_DECLS
+
+#endif /* RETRO_GAMEPAD_BUTTON_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]