diff options
Diffstat (limited to 'pcr/reicast-git/enable_joystick_support_old.patch')
-rw-r--r-- | pcr/reicast-git/enable_joystick_support_old.patch | 346 |
1 files changed, 0 insertions, 346 deletions
diff --git a/pcr/reicast-git/enable_joystick_support_old.patch b/pcr/reicast-git/enable_joystick_support_old.patch deleted file mode 100644 index 0fbb59ac7..000000000 --- a/pcr/reicast-git/enable_joystick_support_old.patch +++ /dev/null @@ -1,346 +0,0 @@ -diff -Nur reicast-emulator.orig/core/linux-dist/main.cpp reicast-emulator/core/linux-dist/main.cpp ---- reicast-emulator.orig/core/linux-dist/main.cpp 2015-06-29 21:42:22.674278849 -0300 -+++ reicast-emulator/core/linux-dist/main.cpp 2015-06-29 22:08:38.780500620 -0300 -@@ -22,6 +22,7 @@ - #include <X11/Xlib.h> - #include <X11/Xatom.h> - #include <X11/Xutil.h> -+ #include <X11/XKBlib.h> - - #if !defined(GLES) - #include <GL/gl.h> -@@ -49,6 +50,34 @@ - #endif - #define WINDOW_HEIGHT 480 - -+/*****************************************************************/ -+/****************** Configure Controls ***************************/ -+/*****************************************************************/ -+ -+// Use XEV in terminal window to find keycodes to configure buttons. -+#define XANA_UP (25) -+#define XANA_DOWN (39) -+#define XANA_LEFT (38) -+#define XANA_RIGHT (40) -+#define XANA_LT (79) -+#define XANA_RT (81) -+#define XDPAD_UP (31) -+#define XDPAD_DOWN (45) -+#define XDPAD_LEFT (44) -+#define XDPAD_RIGHT (46) -+#define XBTN_Y (80) -+#define XBTN_X (83) -+#define XBTN_B (85) -+#define XBTN_A (84) -+#define XBTN_START (36) -+ -+/*******************************************************************/ -+ -+u8 temp_joyx = 0; -+u8 temp_joyy = 0; -+u8 temp_lt = 0; -+u8 temp_rt = 0; -+ - void* x11_win=0,* x11_disp=0; - void* libPvr_GetRenderTarget() - { -@@ -124,8 +153,8 @@ - { Btn_A,Btn_B,Btn_X,Btn_Y,0,0,0,Btn_Start,0,0 }; - - const u32 JMapAxis_360[MAP_SIZE] = -- { Axis_X,Axis_Y,Axis_LT,0,0,Axis_RT,DPad_Left,DPad_Up,0,0 }; -- -+ //{ Axis_X,Axis_Y,Axis_LT,0,0,Axis_RT,DPad_Left,DPad_Up,0,0 }; -+ { Axis_X,Axis_Y,0,0,Axis_RT,Axis_LT,DPad_Left,DPad_Up,0,0 }; - const u32* JMapBtn=JMapBtn_USB; - const u32* JMapAxis=JMapAxis_USB; - -@@ -180,7 +209,7 @@ - - printf("SDK: Found '%s' joystick with %d axis and %d buttons\n",Name,AxisCount,ButtonCount); - -- if (strcmp(Name,"Microsoft X-Box 360 pad")==0) -+ if (strcmp(Name,"Microsoft X-Box 360 pad")==0 || strcmp(Name,"Xbox Gamepad (userspace driver)")==0) - { - JMapBtn=JMapBtn_360; - JMapAxis=JMapAxis_360; -@@ -414,9 +443,20 @@ - { - static char key = 0; - -- kcode[port]= x11_dc_buttons; -- rt[port]=0; -- lt[port]=0; -+ if (cfgLoadInt("config","usejoypad",0)==1) -+ { -+ HandleJoystick(port); -+ return; -+ } -+ else -+ { -+ kcode[port]= x11_dc_buttons; -+ joyx[0] = temp_joyx; -+ joyy[0] = temp_joyy; -+ lt[0] = temp_lt; -+ rt[0] = temp_rt; -+ return; -+ } - - #if defined(TARGET_GCW0) || defined(TARGET_PANDORA) - HandleJoystick(port); -@@ -472,7 +512,13 @@ - void os_DoEvents() - { - #if defined(SUPPORT_X11) -- if (x11_win) { -+ -+ static bool ana_up = false; -+ static bool ana_down = false; -+ static bool ana_left = false; -+ static bool ana_right = false; -+ -+ if (x11_win) { - //Handle X11 - XEvent e; - if(XCheckWindowEvent((Display*)x11_disp, (Window)x11_win, KeyPressMask | KeyReleaseMask, &e)) -@@ -483,6 +529,103 @@ - case KeyPress: - case KeyRelease: - { -+ -+ //Detect up press -+ if(e.xkey.keycode == XANA_UP) -+ { -+ if(e.type == KeyPress) -+ { -+ ana_up = true; -+ } -+ else if(e.type == KeyRelease) -+ { -+ ana_up = false; -+ } -+ else -+ { -+ } -+ } -+ -+ //Detect down Press -+ if(e.xkey.keycode == XANA_DOWN) -+ { -+ if(e.type == KeyPress) -+ { -+ ana_down = true; -+ } -+ else if(e.type == KeyRelease) -+ { -+ ana_down = false; -+ } -+ else -+ { -+ } -+ } -+ -+ //Detect left press -+ if(e.xkey.keycode == XANA_LEFT) -+ { -+ if(e.type == KeyPress) -+ { -+ ana_left = true; -+ } -+ else if(e.type == KeyRelease) -+ { -+ ana_left = false; -+ } -+ else -+ { -+ } -+ } -+ -+ //Detect right Press -+ if(e.xkey.keycode == XANA_RIGHT) -+ { -+ if(e.type == KeyPress) -+ { -+ ana_right = true; -+ } -+ else if(e.type == KeyRelease) -+ { -+ ana_right = false; -+ } -+ else -+ { -+ } -+ } -+ -+ //detect LT press -+ if (e.xkey.keycode == XANA_LT) -+ { -+ if (e.type == KeyPress) -+ { -+ temp_lt = 255; -+ } -+ else if (e.type == KeyRelease) -+ { -+ temp_lt = 0; -+ } -+ else -+ { -+ } -+ } -+ -+ //detect RT press -+ if (e.xkey.keycode == XANA_RT) -+ { -+ if (e.type == KeyPress) -+ { -+ temp_rt = 255; -+ } -+ else if (e.type == KeyRelease) -+ { -+ temp_rt = 0; -+ } -+ else -+ { -+ } -+ } -+ - int dc_key = x11_keymap[e.xkey.keycode]; - - if (e.type == KeyPress) -@@ -494,14 +637,44 @@ - } - break; - -- -+ default: - { - printf("KEYRELEASE\n"); - } - break; - - } -- } -+ } -+ -+ /* Check analogue control states (up/down) */ -+ if((ana_up == true) && (ana_down == false)) -+ { -+ temp_joyy = -127; -+ } -+ else if((ana_up == false) && (ana_down == true)) -+ { -+ temp_joyy = 127; -+ } -+ else -+ { -+ /* Either both pressed simultaniously or neither pressed */ -+ temp_joyy = 0; -+ } -+ -+ /* Check analogue control states (left/right) */ -+ if((ana_left == true) && (ana_right == false)) -+ { -+ temp_joyx = -127; -+ } -+ else if((ana_left == false) && (ana_right == true)) -+ { -+ temp_joyx = 127; -+ } -+ else -+ { -+ /* Either both pressed simultaniously or neither pressed */ -+ temp_joyx = 0; -+ } - } - #endif - } -@@ -527,6 +700,9 @@ - void os_CreateWindow() - { - #if defined(SUPPORT_X11) -+ -+ Bool ar_set, ar_supp = false; -+ - if (cfgLoadInt("pvr","nox11",0)==0) - { - XInitThreads(); -@@ -636,7 +812,8 @@ - int height=cfgLoadInt("x11","height", WINDOW_HEIGHT); - #endif - -- if (width==-1) -+ //if (width==-1) -+ if (cfgLoadInt("x11","fullscreen",0)==1) - { - width=XDisplayWidth(x11Display,x11Screen); - height=XDisplayHeight(x11Display,x11Screen); -@@ -653,8 +830,21 @@ - - XMapRaised(x11Display, x11Window); - #else -- XMapWindow(x11Display, x11Window); -- -+ -+ if (cfgLoadInt("x11","fullscreen",0)==1) -+ { -+ // fullscreen -+ Atom wmState = XInternAtom(x11Display, "_NET_WM_STATE", False); -+ Atom wmFullscreen = XInternAtom(x11Display, "_NET_WM_STATE_FULLSCREEN", False); -+ XChangeProperty(x11Display, x11Window, wmState, XA_ATOM, 32, PropModeReplace, (unsigned char *)&wmFullscreen, 1); -+ } -+ -+ XMapWindow(x11Display, x11Window); -+ -+ //This 1 second delay is important. Without it the GLX code can execute before the window -+ //resize completes causing a black border at the top of the screen.... -+ sleep(1); -+ - #if !defined(GLES) - - #define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 -@@ -690,6 +880,11 @@ - //(EGLNativeDisplayType)x11Display; - x11_disp=(void*)x11Display; - x11_win=(void*)x11Window; -+ -+ ar_set = XkbSetDetectableAutoRepeat(x11Display, True, &ar_supp); -+ printf("XkbSetDetectableAutoRepeat returns %u, supported = %u\n",ar_set, ar_supp); -+ -+ - } - else - printf("Not creating X11 window ..\n"); -@@ -805,16 +1000,16 @@ - #endif - - #if defined(SUPPORT_X11) -- x11_keymap[113] = DPad_Left; -- x11_keymap[114] = DPad_Right; -+ x11_keymap[XDPAD_LEFT] = DPad_Left; -+ x11_keymap[XDPAD_RIGHT] = DPad_Right; - -- x11_keymap[111] = DPad_Up; -- x11_keymap[116] = DPad_Down; -+ x11_keymap[XDPAD_UP] = DPad_Up; -+ x11_keymap[XDPAD_DOWN] = DPad_Down; - -- x11_keymap[52] = Btn_Y; -- x11_keymap[53] = Btn_X; -- x11_keymap[54] = Btn_B; -- x11_keymap[55] = Btn_A; -+ x11_keymap[XBTN_Y] = Btn_Y; -+ x11_keymap[XBTN_X] = Btn_X; -+ x11_keymap[XBTN_B] = Btn_B; -+ x11_keymap[XBTN_A] = Btn_A; - - /* - //TODO: Fix sliders -@@ -822,7 +1017,7 @@ - x11_keymap[39] = DPad_Down; - */ - -- x11_keymap[36] = Btn_Start; -+ x11_keymap[XBTN_START] = Btn_Start; - #endif - - printf("Home dir is: %s\n",GetPath("/").c_str()); |