mirror of https://github.com/stella-emu/stella.git
Ported X11 joystick handling to the new eventhandler class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@180 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
b2f6fa4823
commit
68e30ca3f2
|
@ -13,7 +13,7 @@
|
||||||
## See the file "license" for information on usage and redistribution of
|
## See the file "license" for information on usage and redistribution of
|
||||||
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
##
|
##
|
||||||
## $Id: makefile,v 1.35 2003-09-09 16:45:47 stephena Exp $
|
## $Id: makefile,v 1.36 2003-09-11 00:13:39 stephena Exp $
|
||||||
##============================================================================
|
##============================================================================
|
||||||
|
|
||||||
##============================================================================
|
##============================================================================
|
||||||
|
@ -30,7 +30,7 @@ OPTIMIZATIONS = $(CXXFLAGS) -Wall -Wno-unused
|
||||||
### SDL sound not yet supported in the X11 version
|
### SDL sound not yet supported in the X11 version
|
||||||
### comment out all lines to completely disable sound
|
### comment out all lines to completely disable sound
|
||||||
###
|
###
|
||||||
#SOUND_ALSA = 1
|
SOUND_ALSA = 1
|
||||||
#SOUND_OSS = 1
|
#SOUND_OSS = 1
|
||||||
#SOUND_SDL = 1
|
#SOUND_SDL = 1
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ OPTIMIZATIONS = $(CXXFLAGS) -Wall -Wno-unused
|
||||||
# DEBUG = 1
|
# DEBUG = 1
|
||||||
|
|
||||||
### to include joystick support in the X11 and SDL versions
|
### to include joystick support in the X11 and SDL versions
|
||||||
# JOYSTICK_SUPPORT = 1
|
JOYSTICK_SUPPORT = 1
|
||||||
|
|
||||||
### to include support for saving snapshots in png format
|
### to include support for saving snapshots in png format
|
||||||
### (requires PNG library)
|
### (requires PNG library)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: mainSDL.cxx,v 1.47 2003-09-09 16:45:47 stephena Exp $
|
// $Id: mainSDL.cxx,v 1.48 2003-09-11 00:13:39 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -979,7 +979,7 @@ void handleEvents()
|
||||||
float fudgeFactor = 1000000.0;
|
float fudgeFactor = 1000000.0;
|
||||||
Int32 resistance = 0, x = 0;
|
Int32 resistance = 0, x = 0;
|
||||||
Int32 width = theWidth * theWindowSize * 2;
|
Int32 width = theWidth * theWindowSize * 2;
|
||||||
Event::Type type;
|
Event::Type type = Event::LastType;
|
||||||
|
|
||||||
// Grabmouse and hidecursor introduce some lag into the mouse movement,
|
// Grabmouse and hidecursor introduce some lag into the mouse movement,
|
||||||
// so we need to fudge the numbers a bit
|
// so we need to fudge the numbers a bit
|
||||||
|
@ -1016,7 +1016,7 @@ void handleEvents()
|
||||||
}
|
}
|
||||||
else if(event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP)
|
else if(event.type == SDL_MOUSEBUTTONDOWN || event.type == SDL_MOUSEBUTTONUP)
|
||||||
{
|
{
|
||||||
Event::Type type;
|
Event::Type type = Event::LastType;
|
||||||
Int32 value;
|
Int32 value;
|
||||||
|
|
||||||
if(event.type == SDL_MOUSEBUTTONDOWN)
|
if(event.type == SDL_MOUSEBUTTONDOWN)
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: mainX11.cxx,v 1.38 2003-09-09 16:45:47 stephena Exp $
|
// $Id: mainX11.cxx,v 1.39 2003-09-11 00:13:39 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -437,23 +437,23 @@ bool setupJoystick()
|
||||||
#ifdef HAVE_JOYSTICK
|
#ifdef HAVE_JOYSTICK
|
||||||
if((theLeftJoystickFd = open("/dev/js0", O_RDONLY | O_NONBLOCK)) >= 0)
|
if((theLeftJoystickFd = open("/dev/js0", O_RDONLY | O_NONBLOCK)) >= 0)
|
||||||
{
|
{
|
||||||
if(settings->theShowInfoFlag)
|
if(theConsole->settings().theShowInfoFlag)
|
||||||
cout << "Left joystick found.\n";
|
cout << "Left joystick found.\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(settings->theShowInfoFlag)
|
if(theConsole->settings().theShowInfoFlag)
|
||||||
cout << "Left joystick not present, use keyboard instead.\n";
|
cout << "Left joystick not present, use keyboard instead.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if((theRightJoystickFd = open("/dev/js1", O_RDONLY | O_NONBLOCK)) >= 0)
|
if((theRightJoystickFd = open("/dev/js1", O_RDONLY | O_NONBLOCK)) >= 0)
|
||||||
{
|
{
|
||||||
if(settings->theShowInfoFlag)
|
if(theConsole->settings().theShowInfoFlag)
|
||||||
cout << "Right joystick found.\n";
|
cout << "Right joystick found.\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(settings->theShowInfoFlag)
|
if(theConsole->settings().theShowInfoFlag)
|
||||||
cout << "Right joystick not present, use keyboard instead.\n";
|
cout << "Right joystick not present, use keyboard instead.\n";
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -787,7 +787,7 @@ void handleEvents()
|
||||||
{
|
{
|
||||||
Int32 resistance = 0;
|
Int32 resistance = 0;
|
||||||
uInt32 width = theWidth * theWindowSize * 2;
|
uInt32 width = theWidth * theWindowSize * 2;
|
||||||
Event::Type type;
|
Event::Type type = Event::LastType;
|
||||||
|
|
||||||
int x = width - event.xmotion.x;
|
int x = width - event.xmotion.x;
|
||||||
resistance = (Int32)((1000000.0 * x) / width);
|
resistance = (Int32)((1000000.0 * x) / width);
|
||||||
|
@ -806,7 +806,7 @@ void handleEvents()
|
||||||
}
|
}
|
||||||
else if(event.type == ButtonPress || event.type == ButtonRelease)
|
else if(event.type == ButtonPress || event.type == ButtonRelease)
|
||||||
{
|
{
|
||||||
Event::Type type;
|
Event::Type type = Event::LastType;
|
||||||
Int32 value;
|
Int32 value;
|
||||||
|
|
||||||
value = (event.type == ButtonPress) ? 1 : 0;
|
value = (event.type == ButtonPress) ? 1 : 0;
|
||||||
|
@ -837,6 +837,73 @@ void handleEvents()
|
||||||
|
|
||||||
#ifdef HAVE_JOYSTICK
|
#ifdef HAVE_JOYSTICK
|
||||||
// Read joystick events and modify event states
|
// Read joystick events and modify event states
|
||||||
|
StellaEvent::JoyStick stick;
|
||||||
|
StellaEvent::JoyCode code;
|
||||||
|
uInt32 state;
|
||||||
|
uInt8 axis;
|
||||||
|
Int32 value;
|
||||||
|
|
||||||
|
if(theLeftJoystickFd >= 0)
|
||||||
|
{
|
||||||
|
struct js_event event;
|
||||||
|
stick = joyList[0];
|
||||||
|
|
||||||
|
// Process each joystick event that's queued-up
|
||||||
|
while(read(theLeftJoystickFd, &event, sizeof(struct js_event)) > 0)
|
||||||
|
{
|
||||||
|
if((event.type & ~JS_EVENT_INIT) == JS_EVENT_BUTTON)
|
||||||
|
{
|
||||||
|
if(event.number >= StellaEvent::LastJCODE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
code = joyButtonList[event.number];
|
||||||
|
state = event.value;
|
||||||
|
|
||||||
|
theConsole->eventHandler().sendJoyEvent(stick, code, state);
|
||||||
|
}
|
||||||
|
else if((event.type & ~JS_EVENT_INIT) == JS_EVENT_AXIS)
|
||||||
|
{
|
||||||
|
code = StellaEvent::LastJCODE;
|
||||||
|
state = 1;
|
||||||
|
|
||||||
|
axis = event.number;
|
||||||
|
value = event.value;
|
||||||
|
|
||||||
|
if(axis == 0) // x-axis
|
||||||
|
{
|
||||||
|
if(value < -16384)
|
||||||
|
code = StellaEvent::JAXIS_LEFT;
|
||||||
|
else if(value > 16384)
|
||||||
|
code = StellaEvent::JAXIS_RIGHT;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theConsole->eventHandler().sendJoyEvent(stick, StellaEvent::JAXIS_LEFT, 0);
|
||||||
|
theConsole->eventHandler().sendJoyEvent(stick, StellaEvent::JAXIS_RIGHT, 0);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(axis == 1) // y-axis
|
||||||
|
{
|
||||||
|
if(value < -16384)
|
||||||
|
code = StellaEvent::JAXIS_UP;
|
||||||
|
else if(value > 16384)
|
||||||
|
code = StellaEvent::JAXIS_DOWN;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theConsole->eventHandler().sendJoyEvent(stick, StellaEvent::JAXIS_UP, 0);
|
||||||
|
theConsole->eventHandler().sendJoyEvent(stick, StellaEvent::JAXIS_DOWN, 0);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
theConsole->eventHandler().sendJoyEvent(stick, code, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* // Read joystick events and modify event states
|
||||||
if(theLeftJoystickFd >= 0)
|
if(theLeftJoystickFd >= 0)
|
||||||
{
|
{
|
||||||
struct js_event event;
|
struct js_event event;
|
||||||
|
@ -959,7 +1026,7 @@ void handleEvents()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue