- unsigned long key = 0;
-switch(keymap[event->hardware_keycode]){
- case -1:
- return; break;
- case 0:
- key = GP2X_LEFT;break;
- case 1:
- key = GP2X_RIGHT;break;
- case 2:
- key = GP2X_UP;break;
- case 3:
- key = GP2X_DOWN;break;
- case 4:
- key = GP2X_B;break;
- case 5:
- key = GP2X_X;break;
- case 6:
- key = GP2X_Y;break;
- case 7:
- key = GP2X_A;break;
- case 8:
- key = GP2X_SELECT;break;
- case 9:
- key = GP2X_START;break;
- case 10:
- key = GP2X_VOL_DOWN;break;
- case 11:
- key = GP2X_VOL_UP;break;
- case 12:
- key = GP2X_L;break;
- case 13:
- key = GP2X_R;break;
- case 14:
- hildon_quit();break;
- case 15:
- if (event->type == GDK_KEY_PRESS){
- keys |= GP2X_LEFT;
- keys |= GP2X_UP;
- }else if (event->type == GDK_KEY_RELEASE){
- keys &= ~GP2X_LEFT;
- keys &= ~GP2X_UP;
- }
- key = -1; return ; break;
- case 16:
- if (event->type == GDK_KEY_PRESS){
- keys |= GP2X_RIGHT;
- keys |= GP2X_UP;
- }else if (event->type == GDK_KEY_RELEASE){
- keys &= ~GP2X_RIGHT;
- keys &= ~GP2X_UP;
- }
- key = -1; return ; break;
- case 17:
- if (event->type == GDK_KEY_PRESS){
- keys |= GP2X_LEFT;
- keys |= GP2X_DOWN;
- }else if (event->type == GDK_KEY_RELEASE){
- keys &= ~GP2X_LEFT;
- keys &= ~GP2X_DOWN;
- }
- key = -1; return ; break;
- case 18:
- if (event->type == GDK_KEY_PRESS){
- keys |= GP2X_RIGHT;
- keys |= GP2X_DOWN;
- }else if (event->type == GDK_KEY_RELEASE){
- keys &= ~GP2X_RIGHT;
- keys &= ~GP2X_DOWN;
+ int key, psxkey1 = -1, psxkey2 = -1;
+
+ key = keymap[event->hardware_keycode];
+ if (key < 0)
+ return;
+
+ if (key < ARRAY_SIZE(keymap2))
+ psxkey1 = keymap2[key];
+ else switch (key) {
+ case 14:
+ hildon_quit();
+ break;
+ case 15:
+ psxkey1 = DKEY_UP;
+ psxkey2 = DKEY_LEFT;
+ break;
+ case 16:
+ psxkey1 = DKEY_UP;
+ psxkey2 = DKEY_RIGHT;
+ break;
+ case 17:
+ psxkey1 = DKEY_DOWN;
+ psxkey2 = DKEY_LEFT;
+ break;
+ case 18:
+ psxkey1 = DKEY_DOWN;
+ psxkey2 = DKEY_RIGHT;
+ break;
+ case 19:
+ if (event->type == GDK_KEY_PRESS)
+ {
+ emu_save_state(state_slot);
+ char buf[MAXPATHLEN];
+ sprintf (buf,"/opt/maemo/usr/games/screenshots%s.%3.3d",file_name,state_slot);
+ writepng(buf, image->mem, pl_buf_w,pl_buf_h);