|
@@ -38,7 +38,6 @@
|
|
#include <string.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <unistd.h>
|
|
|
|
|
|
-#define NUM_BITS(size) ((size) / 8)
|
|
|
|
#define TEST_BIT(bit, arr) (arr[(bit) / 8] & (1 << ((bit) % 8)))
|
|
#define TEST_BIT(bit, arr) (arr[(bit) / 8] & (1 << ((bit) % 8)))
|
|
|
|
|
|
static void handleKeyEvent(_GLFWjoystick* js, int code, int value)
|
|
static void handleKeyEvent(_GLFWjoystick* js, int code, int value)
|
|
@@ -100,8 +99,11 @@ static void pollJoystick(_GLFWjoystick* js)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
|
|
|
|
- for (i = ABS_X; i < ABS_MAX; i++)
|
|
|
|
|
|
+ for (i = 0; i < ABS_CNT; i++)
|
|
{
|
|
{
|
|
|
|
+ if (js->linjs.absMap[i] < 0)
|
|
|
|
+ continue;
|
|
|
|
+
|
|
struct input_absinfo *info = &js->linjs.absInfo[i];
|
|
struct input_absinfo *info = &js->linjs.absInfo[i];
|
|
|
|
|
|
if (ioctl(js->linjs.fd, EVIOCGABS(i), info) < 0)
|
|
if (ioctl(js->linjs.fd, EVIOCGABS(i), info) < 0)
|
|
@@ -117,9 +119,9 @@ static GLFWbool openJoystickDevice(const char* path)
|
|
{
|
|
{
|
|
int jid, fd, i;
|
|
int jid, fd, i;
|
|
char name[256] = "";
|
|
char name[256] = "";
|
|
- char evBits[NUM_BITS(EV_MAX)] = {0};
|
|
|
|
- char keyBits[NUM_BITS(KEY_MAX)] = {0};
|
|
|
|
- char absBits[NUM_BITS(ABS_MAX)] = {0};
|
|
|
|
|
|
+ char evBits[(EV_CNT + 7) / 8] = {0};
|
|
|
|
+ char keyBits[(KEY_CNT + 7) / 8] = {0};
|
|
|
|
+ char absBits[(ABS_CNT + 7) / 8] = {0};
|
|
int axisCount = 0;
|
|
int axisCount = 0;
|
|
int buttonCount = 0;
|
|
int buttonCount = 0;
|
|
int hatCount = 0;
|
|
int hatCount = 0;
|
|
@@ -151,7 +153,7 @@ static GLFWbool openJoystickDevice(const char* path)
|
|
if (ioctl(fd, EVIOCGNAME(sizeof(name)), name) < 0)
|
|
if (ioctl(fd, EVIOCGNAME(sizeof(name)), name) < 0)
|
|
strncpy(name, "Unknown", sizeof(name));
|
|
strncpy(name, "Unknown", sizeof(name));
|
|
|
|
|
|
- for (i = BTN_MISC; i < KEY_MAX; i++)
|
|
|
|
|
|
+ for (i = BTN_MISC; i < KEY_CNT; i++)
|
|
{
|
|
{
|
|
if (!TEST_BIT(i, keyBits))
|
|
if (!TEST_BIT(i, keyBits))
|
|
continue;
|
|
continue;
|
|
@@ -159,8 +161,9 @@ static GLFWbool openJoystickDevice(const char* path)
|
|
linjs.keyMap[i] = buttonCount++;
|
|
linjs.keyMap[i] = buttonCount++;
|
|
}
|
|
}
|
|
|
|
|
|
- for (i = ABS_X; i < ABS_MAX; i++)
|
|
|
|
|
|
+ for (i = 0; i < ABS_CNT; i++)
|
|
{
|
|
{
|
|
|
|
+ linjs.absMap[i] = -1;
|
|
if (!TEST_BIT(i, absBits))
|
|
if (!TEST_BIT(i, absBits))
|
|
continue;
|
|
continue;
|
|
|
|
|