嵌入式linux加入nes模拟器,给NES模拟器增加USB手柄的支持

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值