Mercurial > sdl-ios-xcode
diff src/joystick/bsd/SDL_sysjoystick.c @ 461:1d36f593078a
Date: Thu, 18 Jul 2002 23:51:40 +0200 (MEST)
From: Krister Walfridsson
Subject: [SDL] src/joystick/bsd/SDL_sysjoystick.c patch
The *BSD USB HID joystick code has two serious bugs:
1. If a joystick reports unhandled hid_input usage (for example HUG_RZ or
HUG_DIAL), then the last handled value will be overwritten with an
arbitrary value. (Fixed in the patch below by adding a default case.)
2. The current code does only handle logical coordinates in the range 0-255,
while a big part of available joysticks report -128 - 127. (This is solved
in the patch below by first center the range around 0, and then stretch
it to the correct range.)
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 20 Aug 2002 06:08:42 +0000 |
parents | 33712e5d1ec8 |
children | 2ee72e47ca08 |
line wrap: on
line diff
--- a/src/joystick/bsd/SDL_sysjoystick.c Tue Aug 20 06:01:20 2002 +0000 +++ b/src/joystick/bsd/SDL_sysjoystick.c Tue Aug 20 06:08:42 2002 +0000 @@ -332,23 +332,14 @@ case HUG_WHEEL: naxe = JOYAXE_WHEEL; goto scaleaxe; + default: + continue; } scaleaxe: v = (Sint32)hid_get_data(REP_BUF_DATA(rep), &hitem); - if (v != 127) { - if (v < 127) { - v = -(256 - v); - v <<= 7; - v++; - } else { - v++; - v <<= 7; - v--; - } - } else { - v = 0; - } + v -= (hitem.logical_maximum + hitem.logical_minimum + 1)/2; + v *= 32768/((hitem.logical_maximum - hitem.logical_minimum + 1)/2); if (v != joy->axes[naxe]) { SDL_PrivateJoystickAxis(joy, naxe, v); }