From e6535c873331a54a21435d8e9450b09a596a6874 Mon Sep 17 00:00:00 2001 From: "coadde [Márcio Alexandre Silva Delgado]" Date: Sun, 23 Aug 2015 22:25:37 -0300 Subject: pcr/reicast{,-multilib}-git --- pcr/reicast-git/enable_x11_keyboard_support.patch | 233 ++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 pcr/reicast-git/enable_x11_keyboard_support.patch (limited to 'pcr/reicast-git/enable_x11_keyboard_support.patch') diff --git a/pcr/reicast-git/enable_x11_keyboard_support.patch b/pcr/reicast-git/enable_x11_keyboard_support.patch new file mode 100644 index 000000000..1dfd41c72 --- /dev/null +++ b/pcr/reicast-git/enable_x11_keyboard_support.patch @@ -0,0 +1,233 @@ +diff -Nur a/core/linux-dist/main.cpp b/core/linux-dist/main.cpp +--- a/core/linux-dist/main.cpp 2015-08-23 00:16:33.930598582 -0300 ++++ b/core/linux-dist/main.cpp 2015-08-23 18:54:25.349048701 -0300 +@@ -157,6 +157,10 @@ + + void UpdateInputState(u32 port) + { ++ #if defined(SUPPORT_X11) ++ update_x11_input_state(); ++ #endif ++ + #if defined(TARGET_EMSCRIPTEN) + return; + #endif +diff -Nur a/core/linux-dist/x11.cpp b/core/linux-dist/x11.cpp +--- a/core/linux-dist/x11.cpp 2015-08-23 00:16:33.930598582 -0300 ++++ b/core/linux-dist/x11.cpp 2015-08-23 18:50:06.875072583 -0300 +@@ -3,6 +3,7 @@ + #include + #include + #include ++#include + + #if !defined(GLES) + #include +@@ -23,6 +24,18 @@ + #endif + #define DEFAULT_WINDOW_HEIGHT 480 + ++#define DC_KEY_AXIS_UP (25) ++#define DC_KEY_AXIS_DOWN (39) ++#define DC_KEY_AXIS_LEFT (38) ++#define DC_KEY_AXIS_RIGHT (40) ++#define DC_KEY_AXIS_LT (79) ++#define DC_KEY_AXIS_RT (81) ++ ++u8 axis_joyx = 0; ++u8 axis_joyy = 0; ++u8 axis_lt = 0; ++u8 axis_rt = 0; ++ + map x11_keymap; + int x11_dc_buttons = 0xFFFF; + int x11_keyboard_input = 0; +@@ -55,8 +68,27 @@ + XSendEvent((Display*)x11_disp, DefaultRootWindow((Display*)x11_disp), False, SubstructureNotifyMask, &xev); + } + ++void update_x11_input_state() ++{ ++ //static char key = 0; ++ ++ //kcode[port]=0xFFFF; ++ joyx[0] = axis_joyx; ++ joyy[0] = axis_joyy; ++ lt[0] = axis_lt; ++ rt[0] = axis_rt; ++ return; ++ ++ //HandleEvents(port); ++} ++ + void input_x11_handle() + { ++ static bool dc_axis_up = false; ++ static bool dc_axis_down = false; ++ static bool dc_axis_left = false; ++ static bool dc_axis_right = false; ++ + if (x11_win && x11_keyboard_input) + { + //Handle X11 +@@ -68,6 +100,90 @@ + { + case KeyPress: + case KeyRelease: ++ if (e.xkey.keycode == DC_KEY_AXIS_UP) ++ { ++ if (e.type == KeyPress) ++ { ++ dc_axis_up = true; ++ } ++ else if (e.type == KeyRelease) ++ { ++ dc_axis_up = false; ++ } ++ else ++ { ++ } ++ } ++ if (e.xkey.keycode == DC_KEY_AXIS_DOWN) ++ { ++ if (e.type == KeyPress) ++ { ++ dc_axis_down = true; ++ } ++ else if (e.type == KeyRelease) ++ { ++ dc_axis_down = false; ++ } ++ else ++ { ++ } ++ } ++ if (e.xkey.keycode == DC_KEY_AXIS_LEFT) ++ { ++ if (e.type == KeyPress) ++ { ++ dc_axis_left = true; ++ } ++ else if (e.type == KeyRelease) ++ { ++ dc_axis_left = false; ++ } ++ else ++ { ++ } ++ } ++ if (e.xkey.keycode == DC_KEY_AXIS_RIGHT) ++ { ++ if (e.type == KeyPress) ++ { ++ dc_axis_right = true; ++ } ++ else if (e.type == KeyRelease) ++ { ++ dc_axis_right = false; ++ } ++ else ++ { ++ } ++ } ++ if (e.xkey.keycode == DC_KEY_AXIS_LT) ++ { ++ if (e.type == KeyPress) ++ { ++ axis_lt = 255; ++ } ++ else if (e.type == KeyRelease) ++ { ++ axis_lt = 0; ++ } ++ else ++ { ++ } ++ } ++ if (e.xkey.keycode == DC_KEY_AXIS_RT) ++ { ++ if (e.type == KeyPress) ++ { ++ axis_rt = 255; ++ } ++ else if (e.type == KeyRelease) ++ { ++ axis_rt = 0; ++ } ++ else ++ { ++ } ++ } + if (e.type == KeyRelease && e.xkey.keycode == 95) // F11 button + { + x11_fullscreen = !x11_fullscreen; +@@ -89,26 +205,45 @@ + break; + } + } ++ if ((dc_axis_up == true) && (dc_axis_down == false)) ++ { ++ axis_joyy = -127; ++ } ++ else if ((dc_axis_up == false) && (dc_axis_down == true)) ++ { ++ axis_joyy = 127; ++ } ++ else ++ { ++ axis_joyy = 0; ++ } ++ if ((dc_axis_left == true) && (dc_axis_right == false)) ++ { ++ axis_joyx = -127; ++ } ++ else if ((dc_axis_left == false) && (dc_axis_right == true)) ++ { ++ axis_joyx = 127; ++ } ++ else ++ { ++ axis_joyx = 0; ++ } + } + } + + void input_x11_init() + { +- x11_keymap[113] = DC_DPAD_LEFT; +- x11_keymap[114] = DC_DPAD_RIGHT; ++ x11_keymap[44] = DC_DPAD_LEFT; ++ x11_keymap[46] = DC_DPAD_RIGHT; + +- x11_keymap[111] = DC_DPAD_UP; +- x11_keymap[116] = DC_DPAD_DOWN; ++ x11_keymap[31] = DC_DPAD_UP; ++ x11_keymap[45] = DC_DPAD_DOWN; + +- x11_keymap[53] = DC_BTN_X; +- x11_keymap[54] = DC_BTN_B; +- x11_keymap[55] = DC_BTN_A; +- +- /* +- //TODO: Fix sliders +- x11_keymap[38] = DPad_Down; +- x11_keymap[39] = DPad_Down; +- */ ++ x11_keymap[80] = DC_BTN_Y; ++ x11_keymap[83] = DC_BTN_X; ++ x11_keymap[85] = DC_BTN_B; ++ x11_keymap[84] = DC_BTN_A; + + x11_keymap[36] = DC_BTN_START; + +diff -Nur a/core/linux-dist/x11.h b/core/linux-dist/x11.h +--- a/core/linux-dist/x11.h 2015-08-23 00:16:33.930598582 -0300 ++++ b/core/linux-dist/x11.h 2015-08-23 18:58:04.534722602 -0300 +@@ -1,6 +1,7 @@ + #pragma once + + extern void* x11_glc; ++extern void update_x11_input_state(); + extern void input_x11_init(); + extern void input_x11_handle(); + extern void x11_window_create(); -- cgit v1.2.3