Commit Graph

45 Commits

Author SHA1 Message Date
Ryan C. Gordon
d4bb6faea5 Linux: Search a smaller set of potential joystick axes.
Newer kernels seem to report bogus axes in the higher ranges, for example
 with a standard PlayStation 3 controller plugged in via USB.

--HG--
branch : SDL-1.2
2011-07-13 17:36:29 -07:00
Sam Lantinga
6341d68347 Fixed bug #1121 (More than one device through SDL_JOYSTICK_DEVICE)
Chusslove Illich      2011-02-13 04:30:28 PST

Currently SDL_JOYSTICK_DEVICE environment variable can be used to add
exactly one topmost device. I think it would be nice if one could also set
several devices (e.g. a stick and a throttle) in this way, as a colon-
separated list. The attached patch implements this

--HG--
branch : SDL-1.2
2011-02-16 04:49:07 -08:00
Sam Lantinga
75d7d9364d Missed a small part of the patch
--HG--
branch : SDL-1.2
2011-01-24 14:34:58 -08:00
Sam Lantinga
2b8a7320bf Fixed bug #1080
Markus Rathgeb      2011-01-23 14:34:23 PST

With kernel 2.6.31 the struct input_absinfo defined in linux/input.h changed.
A field "__s32 resolution" was added at the end of the struct.

Because the macro EVIOCGABS(abs) is using the struct input_absinfo, it would be
better (IMHO) to change the declaration of variable values to
"int values[sizeof(struct input_absinfo) / sizeof(int)];" or using "struct
input_absinfo" directly.

--HG--
branch : SDL-1.2
2011-01-24 14:31:32 -08:00
Sam Lantinga
fb5a13f95e Merged SDL 1.3 revision 5424, fixing a crash in the joystick code on recent kernels.
--HG--
branch : SDL-1.2
2009-12-17 14:33:00 +00:00
Sam Lantinga
4ec7a0bc45 Fixed bug #853
Ludwig Nussel      2009-10-18 05:34:18 PDT

src/joystick/linux/SDL_sysjoystick.c has some problems:

- test_bit() might break with strict aliasing
- test_bit() assumes array is Uint32 but its actually "unsigned long"
  on 64bit systems sizeof(long) != sizeof(Uint32).
- the keybit array is too small
- the arrays are unitialized so the number of
  detected buttons is quite random

--HG--
branch : SDL-1.2
2009-10-18 16:14:57 +00:00
Sam Lantinga
746b79e2be Temporary band-aid for bug #575
It looks like newer kernels do the logical device mapping in the driver,
so this code crashes.  I don't have one of these nor do I have remote
access to debug this, so I'm disabling the logical mapping for now.

--HG--
branch : SDL-1.2
2009-09-29 00:37:36 +00:00
Sam Lantinga
ac28d9683d Fixed bug #638
Philipp Nordhus      2008-11-05 13:56:33 PST

The Linux version of SDL_SYS_JoystickQuit() tries to free an invalid pointer
when the number of joysticks was reduced since the last call.

Reproduce: Connect two joysticks, call SDL_Init() and SDL_Quit(), then
disconnect one joystick and call the functions again.

--HG--
branch : SDL-1.2
2009-09-21 11:34:50 +00:00
Sam Lantinga
aefdf6c5fb Fixed type size for test_bit()
--HG--
branch : SDL-1.2
2009-08-02 20:45:40 +00:00
Sam Lantinga
2bdc5af575 Updated copyright date
--HG--
branch : SDL-1.2
2008-12-08 00:25:42 +00:00
Sam Lantinga
76f1001651 Fixed bug #497
Check all joysticks instead of stopping if one has been removed.

--HG--
branch : SDL-1.2
2007-12-29 06:16:35 +00:00
Ryan C. Gordon
4a1affc401 Merged r2987:2988 from trunk/SDL: buggy Sidewinder ID added to linux joysticks.
--HG--
branch : SDL-1.2
2007-02-20 22:57:28 +00:00
Sam Lantinga
5905a7b56a Date: Thu, 11 May 2006 19:08:05 -0400
From: Mike Frysinger
Subject: [SDL] [patch] remove limits.h hack from linux joystick code

there is a small hack in the current linux joystick code to work around broken
cross-compilers by including more than one limits.h ... at the very least,
this is not arm-specific by any means

i'm of the opinion that libsdl should not contain such things ... people
should be fixing their cross-compilers, not bloating other's source trees

patch attached to clean the cruft
-mike
2006-05-11 23:32:11 +00:00
Sam Lantinga
cb3a0ae8da SDL_sysjoystick.c:983: warning: 'return' with a value, in function returning void 2006-05-01 06:40:00 +00:00
Sam Lantinga
4ffa1daabc Make sure code is only compiled if the appropriate subsystem is enabled 2006-04-14 04:46:47 +00:00
Sam Lantinga
e1ae9a0b81 Fixed bug #175
Removed obsolete .cvsignore files... whee!
2006-03-23 21:39:58 +00:00
Sam Lantinga
6a04e810c0 Fixed bug #4
[Note: I'm applying this patch since it's a cleaner version of what's already implemented, and supports this controller on older kernels.  I'll ask to make sure this doesn't break on the new kernels where it's no longer necessary]

Date: Mon, 21 Mar 2005 09:41:11 -0500
From: Chris Nelson
Subject: SDL Patch

Hey, Ryan.

I submitted the following patch about a year ago. It's just a simple
patch for the linux port, to make multiple joysticks each appear to SDL
as their own device, if they are on the same USB port (specifically,
these guys
<http://www.consoleplus.co.uk/product_info.php?pName=super-joybox-5-quad-joypad-converter>,

which allow 4 Playstation2 controllers to be accessed via a single USB
port). Without this patch, SDL pretty much drops the ball, and reports
that there are 4 joysticks available when less than that number  are
plugged in.

My work built upon the work of another person with the same device. When
I submitted the patch to the list, he tested it, but it didn't work for
him, so the patch was never accepted. Maybe about 3 times in the past
year, I've tried to email the guy, to see if he couldn't run my new
version, complete with debug code to diagnose the problem he was having.
He never got back  to me.

So, I'm attaching the patch. I wish I knew why it didn't work for him,
but I've been using it for the last year with no problems. Let me know
if you need any more information, or have any ideas as to how I could
test it. I'd like to see it in the tree, but I want to make sure it works.

-Chris
2006-03-19 06:31:34 +00:00
Sam Lantinga
190b425364 Use consistent identifiers for the various platforms we support.
Make sure every source file includes SDL_config.h, so the proper system
headers are chosen.
2006-02-21 08:46:50 +00:00
Sam Lantinga
0ef73d9eae Use only safe string functions 2006-02-19 23:46:34 +00:00
Sam Lantinga
f05187e232 New configure-based build system. Still work in progress, but much improved 2006-02-16 10:11:48 +00:00
Sam Lantinga
769424426d More header massaging... works great on Windows. ;-) 2006-02-10 06:48:43 +00:00
Sam Lantinga
1e037cc218 Removed uses of stdlib.h and string.h 2006-02-07 09:29:18 +00:00
Sam Lantinga
02cc6c0f11 Use SDL_ prefixed versions of C library functions.
FIXME:
Change #include <stdlib.h> to #include "SDL_stdlib.h"
Change #include <string.h> to #include "SDL_string.h"
Make sure nothing else broke because of this...
2006-02-07 06:59:48 +00:00
Sam Lantinga
808a16717c Updated copyright information and removed rcs id lines (problematic in branch merges)
I batch edited these files, so please let me know if I've accidentally removed anybody's
credit here.
2006-02-01 06:32:25 +00:00
Sam Lantinga
6797e47739 Reverted in favor of this one:
https://bugzilla.libsdl.org/attachment.cgi?id=3
2006-01-31 18:08:33 +00:00
Sam Lantinga
ed75553184 Date: Sat, 14 Jan 2006 15:16:01 -0500
From: Andrew Fuller
Subject: [SDL] [PATCH] ML-8866 PS2->USB converter

This converter seems to go by several names --  Super Dual Box, Dual
USB Joypad, and who knows what else.  Also branded differently with
different colour cases, etc.  But it seems to all be the same
internals.  It is a common converter used for StepMania, with several
posts Googleable trying to make it work in Linux.  I got mine
yesterday and wanted to play stepmania, so I went ahead and made a
crude patch for libsdl to split this baby into two logical joysticks.

A couple notes about the patch:

This patch works well for two dance mats hooked up and playing
stepmania, however the mapping of the other buttons may be off.  I
have no joystick which uses all the buttons the converter reports, so
I have no way of testing them.

The name I used 0925:8866 which is the USB ID, and what SDLjoytest-GL
reported is the name, even though lsusb shows Wisegroup, Ltd MP-8866
Dual USB Joypad, and the existing virtual joystick mapping uses the
Wisegroup... name.  Not sure why the discrepency.

I'm not subscribed to this mailing list, so please CC me on any
comments to this.

-Andrew
2006-01-31 14:59:43 +00:00
Sam Lantinga
b5c719c730 Fixed to match the docs 2006-01-27 06:36:33 +00:00
Sam Lantinga
4e112a5f20 Backing out new changes, at Chris Nelson's request. 2004-09-11 17:48:41 +00:00
Sam Lantinga
32a76c379b Date: Wed, 23 Jun 2004 17:05:33 -0400
From: Chris Nelson
Subject: [SDL] [Patch] WiseGroup MP-8800 / MP-8866 (PS2 Joystick)

In the current cvs version, SDL doesn't handle these Playstation2
controller => USB adapters correctly, in linux.

It will always assume that the maximum number of joysticks (2 in the
case of the MP-8866, 4 in the case of the 8800) are plugged in. This is
bad not only because it allows SDL to exaggerate the number of logical
joysticks, but primarily because the joystick axes are mapped
incorrectly, all over the place, such that the devices are effectively
unusable unless you have the maximum number of joysticks plugged in.

My changes to src/joystick/linux/SDL_sysjoystick.c build on another's
previous work (which was a special case for this very joystick,
actually), and fix both of these problems, as well as making the current
code a little more general, to allow for others to more easily drop in
code for quirky joysticks such as these.

I've tested this code under 2.6.7 as well as 2.4.24... Both work as
advertised (provided you load the JOYDEV linux code as a module,
otherwise they won't work at all, new code or old, but that's another
issue entirely).

Though this sounds horribly formal, you have my permission to distribute
all of my work on this issue under the LGPL. So there.
2004-07-25 18:31:50 +00:00
Sam Lantinga
9a80383a8f Date: Tue, 16 Mar 2004 12:40:33 +0000
From: Alan Swanson
Subject: [SDL] [PATCH] Linux joystick evdev axis count fix

The event device configuration under Linux does not check the returned
ioctl value when reading the axis information. This means extra
undefined axes are returned.

Note, in EV_HandleEvents, the default for case EV_ABS is to return any
axis information which is fine as we have already checked for all valid
absolute axes. No new axes should be returned after opening the device.

(Unless, of course, the evdev allows closing and reassigning a new
device while in use and I can't believe that happens.)
2004-05-16 22:48:06 +00:00
Sam Lantinga
f67acf7443 Date: Sun, 18 Apr 2004 16:09:53 -0400 (EDT)
From: David MacCormack
Subject: [SDL] Linux joystick patch

I recently got myself a PS2 -> USB converter (a super joybox 5).  It
accepts 4 PSX/PS2 controllers.  It's implemented as a HID, which is nice
because it doesn't require its own driver, but the problem is that it's
implemented as a *single* HID -- that is, it shows up as a single
joystick with 19 axes, 4 hats, and 48 buttons.  This poses a problem for a
number of apps which use SDL (stella, fce ultra, zsnes, to name a few) and
see only a single (physical) joystick even though there are really 4
(logical) joysticks.  There are a number of these types of devices on the
market, and I've seen others post messages (in the zsnes forum, for
example) with the same problem, so I came up with what I think is a pretty
generic solution.

I patched src/joystick/linux/SDL_sysjoystic.c to include support for
logical joysticks; basically, it's a static array and supporting functions
that map a single physical joystick to multiple logical joysticks.  The
attached patch has the new code.  It's wrapped inside #ifndef
statements so that you can get the old behavior if you want.
2004-05-16 18:46:24 +00:00
Sam Lantinga
456a172311 Date: Fri, 05 Mar 2004 16:08:01 +0000
From: Alan Swanson
Subject: Re: [SDL] Fatal signal when initiaize with USB joystick on 2.6.2 kern

On Fri, 2004-03-05 at 15:09, Sam Lantinga wrote:
> > Fred, how does the attached patch work for you? Do all your axes work?
>
> I think you meant the two lines to be reversed.
> I checked a more robust version of this into CVS.  Fred, can you see if
> it works?

You've misread the code. :-/

For coef[0] and coef[1], it is (values[2]+values[1]) / 2 and then add
or subtract values[4] to the answer.
2004-03-06 02:58:06 +00:00
Sam Lantinga
ac9d12eaf8 Avoid FPE with Linux 2.6 2004-03-05 15:09:18 +00:00
Sam Lantinga
32719e7429 Updated copyright information for 2004 (Happy New Year!) 2004-01-04 16:49:27 +00:00
Sam Lantinga
416454888d Removed obsolete Linux joystick code 2003-02-01 20:25:34 +00:00
Sam Lantinga
957178f75d Linux joystick cleanups from Alan Swanson 2002-12-02 03:11:36 +00:00
Sam Lantinga
4f1db35368 *** empty log message *** 2002-06-12 23:49:31 +00:00
Sam Lantinga
9171b08182 Added some more joysticks on Linux 2002-06-12 03:30:58 +00:00
Sam Lantinga
0247943d34 *** empty log message *** 2002-05-20 17:40:55 +00:00
Sam Lantinga
df4885048e Updated copyright information for 2002 2002-03-06 11:23:08 +00:00
Sam Lantinga
acfcfd3e44 Updated the source with the correct e-mail address 2001-12-14 12:38:15 +00:00
Sam Lantinga
4faa015012 *** empty log message *** 2001-11-26 22:22:20 +00:00
Sam Lantinga
5f2a95f4ca *** empty log message *** 2001-11-02 18:12:52 +00:00
Sam Lantinga
8a8a90deea If we're looking at the /dev/input event devices, and we found
at least one, then we don't want to look at the input joystick
devices, since they're built on top of devices that we've already
seen, so we're done.
2001-10-22 21:34:50 +00:00
Sam Lantinga
5d2015c741 Initial revision 2001-04-26 16:45:43 +00:00