X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fgp2x%2Fusbjoy.c;h=7be18d59dbca6ab6a04c6ddd7916b0348646e48c;hb=1832075ec7b43b166a9d5f83753832a05e7d4239;hp=569f6151d1f8cd57bbf64dde082567eea8750ef9;hpb=cc68a136aa179a5f32fe40208371eb9c2b0aadae;p=picodrive.git diff --git a/platform/gp2x/usbjoy.c b/platform/gp2x/usbjoy.c index 569f615..7be18d5 100644 --- a/platform/gp2x/usbjoy.c +++ b/platform/gp2x/usbjoy.c @@ -34,6 +34,8 @@ #include "usbjoy.h" +/* This is a try to support analog joys. Untested. */ +#define DEAD_ZONE (8*1024) /* Function: joy_open @@ -210,14 +212,16 @@ int joy_update (struct usbjoy * joy) { switch (events[i].type & ~JS_EVENT_INIT) { case JS_EVENT_AXIS: if (events[i].number == 0) { - if (events[i].value == 0) joy->stateaxes[JOYLEFT] = joy->stateaxes[JOYRIGHT] = 0; - else if (events[i].value < 0) joy->stateaxes[JOYLEFT] = 1; - else joy->stateaxes[JOYRIGHT] = 1; + joy->stateaxes[JOYLEFT] = joy->stateaxes[JOYRIGHT] = 0; + if (events[i].value < -DEAD_ZONE) joy->stateaxes[JOYLEFT] = 1; + else if (events[i].value > DEAD_ZONE) joy->stateaxes[JOYRIGHT] = 1; + joy->axevals[0] = events[i].value; } else if (events[i].number == 1) { - if (events[i].value == 0) joy->stateaxes[JOYUP] = joy->stateaxes[JOYDOWN] = 0; - else if (events[i].value < 0) joy->stateaxes[JOYUP] = 1; - else joy->stateaxes[JOYDOWN] = 1; + joy->stateaxes[JOYUP] = joy->stateaxes[JOYDOWN] = 0; + if (events[i].value < -DEAD_ZONE) joy->stateaxes[JOYUP] = 1; + else if (events[i].value > DEAD_ZONE) joy->stateaxes[JOYDOWN] = 1; + joy->axevals[1] = events[i].value; } event = 1; break; @@ -418,6 +422,7 @@ void gp2x_usbjoy_deinit (void) { int i; for (i=0; i