static DWORD my_pad1 = 0;
void *thread_joy_listen(void *arg)
{
int keys_fd;
char ret[2];
struct input_event t;
//keys_fd = open ("/dev/input/event2", O_RDONLY|O_NONBLOCK);
keys_fd = open ("/dev/input/event2", O_RDONLY);
if (keys_fd <= 0)
{
printf ("open /dev/input/event2 device error!\n");
return 0;
}
while (1)
{
if (read (keys_fd, &t, sizeof (t)) == sizeof (t))
{
switch(t.type)
{
case EV_ABS:
printf("EV_ABS - code 0x%02X, value 0x%02X\n", t.code, t.value);
switch(t.code)
{
case 0:
switch(t.value)
{
case 0x80:
my_pad1 &= ~(PAD_JOY_LEFT|PAD_JOY_RIGHT);
break;
case 0x00:
my_pad1 |= PAD_JOY_LEFT;
break;
case 0xff:
my_pad1 |= PAD_JOY_RIGHT;
break;
default:
break;
}
break;
case 1:
switch(t.value)
{
case 0x80:
my_pad1 &= ~(PAD_JOY_UP|PAD_JOY_DOWN);
break;
case 0x00:
my_pad1 |= PAD_JOY_UP;
break;
case 0xff:
my_pad1 |= PAD_JOY_DOWN;
break;
default:
break;
}
break;
default:
break;
}
break;
/*
case EV_MSC:
printf("EV_MSC - code 0x%02X, value 0x%02X\n", t.code,t.value);
if(t.code == 0x04)
{
switch(t.value)
{
case 0x90001:
my_pad1 ^= PAD_JOY_A;
break;
case 0x90002:
my_pad1 ^= PAD_JOY_B;
break;
case 0x90003:
my_pad1 ^= PAD_JOY_B;
break;
case 0x90004:
my_pad1 ^= PAD_JOY_A;
break;
case 0x90009:
my_pad1 ^= PAD_JOY_SELECT;
break;
case 0x9000c:
my_pad1 ^= PAD_JOY_START;
break;
default:
break;
}
}
break;
*/
case EV_KEY:
printf("EV_KEY - code 0x%02X, value 0x%02X\n", t.code,t.value);
switch(t.code)
{
case 0x120:
if(t.value)
{
my_pad1 |= PAD_JOY_B;
}
else
{
my_pad1 &= ~PAD_JOY_B;
}
break;
case 0x121:
if(t.value)
{
my_pad1 |= PAD_JOY_A;
}
else
{
my_pad1 &= ~PAD_JOY_A;
}
break;
case 0x122:
if(t.value)
{
my_pad1 |= PAD_JOY_A;
}
else
{
my_pad1 &= ~PAD_JOY_A;
}
break;
case 0x123:
if(t.value)
{
my_pad1 |= PAD_JOY_B;
}
else
{
my_pad1 &= ~PAD_JOY_B;
}
break;
case 0x128:
if(t.value)
{
my_pad1 |= PAD_JOY_SELECT;
}
else
{
my_pad1 &= ~PAD_JOY_SELECT;
}
break;
case 0x12b:
if(t.value)
{
my_pad1 |= PAD_JOY_START;
}
else
{
my_pad1 &= ~PAD_JOY_START;
}
break;
default:
break;
}
break;
default:
printf("UNKNOWN - type 0x%02X, code 0x%02X, value 0x%02X\n", t.type, t.code, t.value);
break;
}
}
}
close (keys_fd);
return 0;
}