예제 #1
0
파일: svga.c 프로젝트: Pa0l0ne/Amiga360
static void my_kbd_handlerx (int scancode, int newstate)
{
    int akey = scancode2amiga (scancode);

    assert (scancode >= 0 && scancode < 0x100);
    if (scancode == SCODE_F12) {
	uae_quit ();
    } else if (scancode == SCODE_F11) {
	gui_requested = 1;
    }
    if (keystate[scancode] == newstate)
	return;

    keystate[scancode] = newstate;

    if (akey == -1)
	return;

    if (newstate == KEY_EVENTPRESS) {
	if (akey == AK_inhibit)
	    toggle_inhibit_frame (0);
	else
	    record_key (akey << 1);
    } else
	record_key ((akey << 1) | 1);

    /* "Affengriff" */
    if ((keystate[AK_CTRL] || keystate[AK_RCTRL]) && keystate[AK_LAMI] && keystate[AK_RAMI])
	uae_reset ();
}
예제 #2
0
// apply the remapped button keystroke
void handle_remapped_button_down(int button)
{
	int key = get_key_for_button(button);
	if (!uae4all_keystate[key])
	{
		uae4all_keystate[key] = 1;
		record_key(key << 1);
	}
}
예제 #3
0
void handle_remapped_button_up(int button)
{
	int key = get_key_for_button(button);

	if (uae4all_keystate[key])
	{
		uae4all_keystate[key] = 0;
		record_key((key << 1) | 1);
	}
}
int main(int argc, char** argv) {
                 
      if(argc != 7 ) {
        fprintf(stderr, "ERROR: usage: <host> <port> <service-type> "
		"<key-type-str> <md5-fingerprint> <report-sock-name>\n");
        exit(1);
      }
      
      if(strlen(argv[1]) > (MAX_NAME_LEN + 10)) { 
	fprintf(stderr,"ERROR: DNS name / IP '%s' is too long\n", argv[1]); 
	exit(1); 
      }
      char *dns_name = argv[1], key_buf[KEY_LEN];
      uint32_t port = (uint32_t)atoi(argv[2]);
      if(port > 0xffff) { 
	fprintf(stderr, "ERROR: Invalid port number %d \n", port); 
	exit(1); 
      } 
      uint32_t service_type = (uint32_t) atoi(argv[3]);
      if(service_type != SERVICE_TYPE_SSL && 
	 service_type != SERVICE_TYPE_SSH) { 
	fprintf(stderr,"ERROR: Invalid service-type '%d'\n", 
		service_type); 
	exit(1); 
      } 
      int key_str_len = (KEY_LEN * 3) - 1; 
      if(strlen(argv[5]) != key_str_len) { 
	fprintf(stderr, 
	   "ERROR: Need a semi-colon delimited MD5 "
	   "fingerprint of length %d\n", key_str_len);
	exit(1);  
      }
      int len = hexstr_2_buf(argv[5],key_buf,KEY_LEN); 
      if(len != KEY_LEN) { 
	fprintf(stderr, "ERROR: Failed to parse MD5 fingerprint '%s',"
		" len %d != %d \n", argv[5], len, KEY_LEN); 
	exit(1); 
      }
      uint32_t key_type = str_2_keytype(argv[4]); 
      if(key_type == INVALID_KEY_TYPE) { 
	 fprintf(stderr, "ERROR: Invalid key type '%s'\n", argv[4]); 
         exit(1); 
      } 
      return record_key(dns_name, 0 /*no ip address*/, port, key_buf, KEY_LEN, 
			key_type, "", service_type, argv[6]); 
}
예제 #5
0
void handle_events (void)
{
    SDL_Event rEvent;
    int iAmigaKeyCode;
    int i, j;
    int iIsHotKey = 0;
#ifdef DEBUG_EVENTS
    dbg("Function: handle_events");
#endif


#if defined(MAX_AUTOEVENTS) || defined(AUTOEVENTS)
	{
		static unsigned cuenta=0;
/*
		switch(cuenta&63)
		{
			case 8:
				if ((cuenta<6500)||(cuenta>8000))
					joy1button=1;
				break;
			case 16:
				buttonstate[0]=1; break;
			case 24:
				joy1button=0; break;
			case 28:
				if (cuenta>11000)
					joy1dir=3;
				break;
			case 32:
				buttonstate[0]=0; break;
			case 62:
				joy1dir=0; break;
		}
//		lastmy+=8;
		switch(cuenta&127)
		{
			case 20:
				record_key(0x12); break;
			case 40:
				record_key(0x13); break;
			case 60:
				record_key(0x88); break;
			case 80:
				record_key(0x89); break;
		}
*/
/*
if (cuenta==7700)
{
strcpy(changed_df[0],"prueba2.adz");
real_changed_df[0]=1;
joy1button=1;
}
*/

// Defender of the Crown
 /*
switch(cuenta)
{
case 2600:
lastmx+=80;
break;
case 2610:
buttonstate[0]=1; break;
break;
case 2615:
buttonstate[0]=0; break;
break;
case 4500:
lastmy+=100;
break;
case 4510:
buttonstate[0]=1; break;
break;
case 4515:
buttonstate[0]=0; break;
break;
case 4640:
lastmy-=60;
lastmx+=550;
break;
case 4700:
lastmx+=200;
break;
case 4710:
buttonstate[0]=1; break;
break;
case 4715:
buttonstate[0]=0; break;
break;


}
// printf("%i -> %.8X\n",cuenta,chipmem_checksum());
 */


#if defined(START_DEBUG) && !defined(START_DEBUG_SAVESTATE)
		if (cuenta==START_DEBUG)
		{
#ifdef DEBUG_FILE
			if (!DEBUG_STR_FILE)
				DEBUG_STR_FILE=fopen(DEBUG_FILE,"wt");
#endif
			DEBUG_AHORA=1;
		}
#else
#ifdef START_DEBUG_SAVESTATE
		if (cuenta==START_DEBUG)
			savestate_state = STATE_DOSAVE;
#endif
#endif
#ifdef AUTO_SAVESTATE
		if (cuenta==AUTO_SAVESTATE)
			savestate_state = STATE_DORESTORE;
#endif

#ifdef MAX_AUTOEVENTS
#ifdef DEBUG_EVENTS
		dbgf(" AUTO EVENTS: %i =?= %i\n",cuenta,MAX_AUTOEVENTS);
#endif
		if (cuenta>MAX_AUTOEVENTS)
		{
			int i;
#ifdef DEBUG_FILE
			fclose(DEBUG_STR_FILE);
			SDL_Delay(100);
			for(i=0;i<0x10000;i+=78)
			{
				SDL_FillRect(prSDLScreen, NULL, i);
				SDL_Flip(prSDLScreen);
			}
			SDL_Delay(333);
#endif
			exit(0);
		}
		else
			dbgf("handle_events %i\n",cuenta);
#endif
		cuenta++;
	}
#else
    /* Handle GUI events */
    gui_handle_events ();

#ifdef EMULATED_JOYSTICK
	{
		if ((vkbd_button3==(SDLKey)0)&&(!vkbd_mode))
			buttonstate[0]=emulated_mouse_button1;
		if ((vkbd_button4==(SDLKey)0)&&(!vkbd_mode))
			buttonstate[2]=emulated_mouse_button2;
	}
#endif

    while (SDL_PollEvent(&rEvent))
    {
	switch (rEvent.type)
	{
	case SDL_QUIT:
#ifdef DEBUG_EVENTS
	    dbg("Event: quit");
#endif
	    uae_quit();
	    break;
	    break;
	case SDL_JOYBUTTONDOWN:
	    if (vkbd_mode) break;
	    if ((rEvent.jbutton.button==6) && (vkbd_button2!=(SDLKey)0))
		    rEvent.key.keysym.sym=vkbd_button2;
	    else if ((rEvent.jbutton.button==5) && (vkbd_button3!=(SDLKey)0))
		    rEvent.key.keysym.sym=vkbd_button3;
	    else if ((rEvent.jbutton.button==1) && (vkbd_button4!=(SDLKey)0))
		    rEvent.key.keysym.sym=vkbd_button4;
	    else
	    	break;
        case SDL_KEYDOWN:
#ifdef DEBUG_EVENTS
	    dbg("Event: key down");
#endif
#ifndef DREAMCAST
	    if ((rEvent.key.keysym.sym!=SDLK_F11)&&(rEvent.key.keysym.sym!=SDLK_F12)&&(rEvent.key.keysym.sym!=SDLK_PAGEUP)
#ifdef EMULATED_JOYSTICK
		&&(rEvent.key.keysym.sym!=SDLK_ESCAPE)&&((rEvent.key.keysym.sym!=SDLK_SPACE)||((rEvent.key.keysym.sym==SDLK_SPACE)&&(vkbd_button3!=(SDLKey)0)&&(!vkbd_mode)))&&(rEvent.key.keysym.sym!=SDLK_LCTRL)&&((rEvent.key.keysym.sym!=SDLK_LALT)||((rEvent.key.keysym.sym==SDLK_LALT)&&(vkbd_button2!=(SDLKey)0)&&(!vkbd_mode)))&&(rEvent.key.keysym.sym!=SDLK_RETURN)&&((rEvent.key.keysym.sym!=SDLK_LSHIFT)||((rEvent.key.keysym.sym==SDLK_LSHIFT)&&(vkbd_button4!=(SDLKey)0)&&(!vkbd_mode)))&&(rEvent.key.keysym.sym!=SDLK_TAB)&&(rEvent.key.keysym.sym!=SDLK_BACKSPACE)&&(rEvent.key.keysym.sym!=SDLK_UP)&&(rEvent.key.keysym.sym!=SDLK_DOWN)&&(rEvent.key.keysym.sym!=SDLK_LEFT)&&(rEvent.key.keysym.sym!=SDLK_RIGHT)
#endif
			    )
	    {
		    if ((rEvent.key.keysym.sym==SDLK_LALT)&&(vkbd_button2!=(SDLKey)0)&&(!vkbd_mode))
			    rEvent.key.keysym.sym=vkbd_button2;
		    else
		    if ((rEvent.key.keysym.sym==SDLK_LSHIFT)&&(vkbd_button4!=(SDLKey)0)&&(!vkbd_mode))
			    rEvent.key.keysym.sym=vkbd_button4;
		    else
		    if ((rEvent.key.keysym.sym==SDLK_SPACE)&&(vkbd_button3!=(SDLKey)0)&&(!vkbd_mode))
			    rEvent.key.keysym.sym=vkbd_button3;
#else
	    {
#endif
		iAmigaKeyCode = keycode2amiga(&(rEvent.key.keysym));
		if (iAmigaKeyCode >= 0)
		{
		    if (!uae4all_keystate[iAmigaKeyCode])
		    {
			uae4all_keystate[iAmigaKeyCode] = 1;
			record_key(iAmigaKeyCode << 1);
		    }
		}
	    }
	    break;
	case SDL_JOYBUTTONUP:
	    if (vkbd_mode) break;
	    if ((rEvent.jbutton.button==6) && (vkbd_button2!=(SDLKey)0))
		    rEvent.key.keysym.sym=vkbd_button2;
	    else if ((rEvent.jbutton.button==5) && (vkbd_button3!=(SDLKey)0))
		    rEvent.key.keysym.sym=vkbd_button3;
	    else if ((rEvent.jbutton.button==1) && (vkbd_button4!=(SDLKey)0))
		    rEvent.key.keysym.sym=vkbd_button4;
	    else
	    	break;
	case SDL_KEYUP:
#ifdef DEBUG_EVENTS
	    dbg("Event: key up");
#endif
#ifndef DREAMCAST
	    if ((rEvent.key.keysym.sym!=SDLK_F11)&&(rEvent.key.keysym.sym!=SDLK_F12)&&(rEvent.key.keysym.sym!=SDLK_PAGEUP)
#ifdef EMULATED_JOYSTICK
		&&(rEvent.key.keysym.sym!=SDLK_ESCAPE)&&((rEvent.key.keysym.sym!=SDLK_SPACE)||((rEvent.key.keysym.sym==SDLK_SPACE)&&(vkbd_button3!=(SDLKey)0)&&(!vkbd_mode)))&&(rEvent.key.keysym.sym!=SDLK_LCTRL)&&((rEvent.key.keysym.sym!=SDLK_LALT)||((rEvent.key.keysym.sym==SDLK_LALT)&&(vkbd_button2!=(SDLKey)0)&&(!vkbd_mode)))&&(rEvent.key.keysym.sym!=SDLK_RETURN)&&((rEvent.key.keysym.sym!=SDLK_LSHIFT)||((rEvent.key.keysym.sym==SDLK_LSHIFT)&&(vkbd_button4!=(SDLKey)0)&&(!vkbd_mode)))&&(rEvent.key.keysym.sym!=SDLK_TAB)&&(rEvent.key.keysym.sym!=SDLK_BACKSPACE)&&(rEvent.key.keysym.sym!=SDLK_UP)&&(rEvent.key.keysym.sym!=SDLK_DOWN)&&(rEvent.key.keysym.sym!=SDLK_LEFT)&&(rEvent.key.keysym.sym!=SDLK_RIGHT)
#endif
			    )
	    {
		    if ((rEvent.key.keysym.sym==SDLK_LALT)&&(vkbd_button2!=(SDLKey)0)&&(!vkbd_mode))
			    rEvent.key.keysym.sym=vkbd_button2;
		    else
		    if ((rEvent.key.keysym.sym==SDLK_LSHIFT)&&(vkbd_button4!=(SDLKey)0)&&(!vkbd_mode))
			    rEvent.key.keysym.sym=vkbd_button4;
		    else
		    if ((rEvent.key.keysym.sym==SDLK_SPACE)&&(vkbd_button3!=(SDLKey)0)&&(!vkbd_mode))
			    rEvent.key.keysym.sym=vkbd_button3;
#else
	    {
#endif
		iAmigaKeyCode = keycode2amiga(&(rEvent.key.keysym));
		if (iAmigaKeyCode >= 0)
		{
		    uae4all_keystate[iAmigaKeyCode] = 0;
		    record_key((iAmigaKeyCode << 1) | 1);
		}
	    }
	    break;
	case SDL_MOUSEBUTTONDOWN:
#ifdef DEBUG_EVENTS
	    dbg("Event: mouse button down");
#endif
#ifdef DREAMCAST
	    if (__sdl_dc_emulate_mouse)
	    {
	    	if (vkbd_mode) break;
	    	if (rEvent.button.button==5 ) {
			if (vkbd_button3==(SDLKey)0)
			    buttonstate[0] = 1;
			else 
				break;
		}
	    	else if (rEvent.button.button==1)  {
			if (vkbd_button4==(SDLKey)0)
		 	   buttonstate[2] = 1;
			else
				break;
		}
	    }
	    else
	    	if (rEvent.button.button)
			buttonstate[2]=1;
		else
			buttonstate[0]=1;
#else
	    	buttonstate[(rEvent.button.button-1)%3] = 1;
#endif
	    break;
	case SDL_MOUSEBUTTONUP:
#ifdef DEBUG_EVENTS
	    dbg("Event: mouse button up");
#endif
#ifdef DREAMCAST
	    if (__sdl_dc_emulate_mouse)
	    {
	    	if (vkbd_mode) break;
	    	if (rEvent.button.button==5) {
			if (vkbd_button3==(SDLKey)0)
			    buttonstate[0] = 0;
			else
				break;
		}
	    	else if (rEvent.button.button==1) {
			if (vkbd_button4==(SDLKey)0)
			    buttonstate[2] = 0;
			else
				break;
		}
	    }
	    else
	    	if (rEvent.button.button)
			buttonstate[2]=0;
		else
			buttonstate[0]=0;
				
#else
	    	buttonstate[(rEvent.button.button-1)%3] = 0;
#endif
	    break;
	case SDL_MOUSEMOTION:
#ifdef DEBUG_EVENTS
	    dbg("Event: mouse motion");
#endif
	    lastmx += rEvent.motion.xrel<<1;
	    lastmy += rEvent.motion.yrel<<1;
	    newmousecounters = 1;
	    break;
	}
    }
#endif


    /* Handle UAE reset */
/*
    if ((uae4all_keystate[AK_CTRL] || uae4all_keystate[AK_RCTRL]) && uae4all_keystate[AK_LAMI] && uae4all_keystate[AK_RAMI])
	uae_reset ();
*/
#ifdef DEBUG_EVENTS
    dbg(" handle_events -> terminado");
#endif
}

int check_prefs_changed_gfx (void)
{
	extern int mainMenu_vpos;
	static int last_vpos=0;
	int ret=(last_vpos!=mainMenu_vpos);
	last_vpos=mainMenu_vpos;
	return ret;
}

int debuggable (void)
{
    return 1;
}

int needmousehack (void)
{
    return 1;
}



#if !defined(DREAMCAST) && !defined(DINGOO)
int lockscr (void)
{
#ifdef DEBUG_GFX
    dbg("Function: lockscr");
#endif
    if (SDL_MUSTLOCK(prSDLScreen))
	SDL_LockSurface(prSDLScreen);
    return 1;
}

void unlockscr (void)
{
#ifdef DEBUG_GFX
    dbg("Function: unlockscr");
#endif
    if (SDL_MUSTLOCK(prSDLScreen))
    	SDL_UnlockSurface(prSDLScreen);
}
예제 #6
0
파일: keyboard.c 프로젝트: bernds/UAE
/* there's a problem remaining with the semantics of the '#' key on U.S. keyboards */
static int scancode2amiga (int keycode, int scancode)
{
	static int firstscan=0;
	if (!firstscan)
	{
	    keyboardlayoutid=GetKeyboardLayout(0);
	    keyboardlangid=LOWORD(keyboardlayoutid);
	    firstscan=1;
	}
#if DEBUG_KBD
    write_log ( "keycode = 0x%x, scancode = 0x%x\n", keycode, scancode ); 
#endif

    if(keyboardlangid==MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN))
    {
	if (keystate[AK_CTRL] &&
	    keystate[AK_RALT])
	{
	    switch (keycode & 0xff) 
	    {
	    case 0xdb:
		return AK_BACKSLASH;
	    case 0x51:          //@	     
		record_key ((AK_CTRL << 1)+1);
		return 0x10;
	    case 0xbb:          //~
		record_key ((AK_CTRL << 1)+1);
		return 0x1b;
		
	    }
	}
    }

#define USE_OLD_SHIFT_CODE

    switch (keycode & 0xff) 
    {
#ifndef USE_OLD_SHIFT_CODE
    case VK_SHIFT:
	{
	    SHORT lsh, rsh;
	    lsh = GetKeyState( VK_LSHIFT );
	    rsh = GetKeyState( VK_RSHIFT );
	    if( !keystate[AK_RSH] && (rsh & 0x8000))
		return AK_RSH;
	    if( keystate[AK_RSH] && !(rsh & 0x8000))
		return AK_RSH;
	    if( !keystate[AK_LSH] && (lsh & 0x8000))
		return AK_LSH;
	    if( keystate[AK_LSH] && !(lsh & 0x8000))
		return AK_LSH;
	}
#endif
     case VK_INSERT:
     case VK_LWIN:
	return AK_LAMI;
     case VK_HOME:
     case VK_RWIN:
	return AK_RAMI;
     case VK_MENU:
	 return scancode & KF_EXTENDED ? AK_RALT:AK_LALT;
     case VK_APPS: /* Map Windows "Menu" key to Right-Alt of Amiga, for Stefan Stuntz */
	 return AK_RALT;
     case VK_SCROLL:
	return AK_inhibit;
     case VK_F11:
#if 0
	 if( currprefs.win32_ctrl_F11_is_quit )
	 {
	    if (GetAsyncKeyState (VK_CONTROL)&0x8000)
		uae_quit();
	 }
#endif
	 return AK_BACKSLASH;
     case VK_F12:
	 if (GetAsyncKeyState (VK_CONTROL)&0x8000)
	     return -6;
	 if( shiftpressed() )
	     return -5;
	 else
	     return -2;
	 break;
     case VK_PAUSE:
	return -3;
     case VK_DECIMAL:
	return AK_NPDEL;
     case VK_DIVIDE:
	return AK_NPDIV;
     case VK_MULTIPLY:
	return AK_NPMUL;
     case VK_SUBTRACT:
	return AK_NPSUB;
     case VK_ADD:
	return AK_NPADD;
     case VK_NUMPAD0:
	return AK_NP0;
     case VK_NUMPAD1:
	return AK_NP1;
     case VK_NUMPAD2:
	return AK_NP2;
     case VK_NUMPAD3:
	return AK_NP3;
     case VK_NUMPAD4:
	return AK_NP4;
     case VK_NUMPAD5:
	return AK_NP5;
     case VK_NUMPAD6:
	return AK_NP6;
     case VK_NUMPAD7:
	return AK_NP7;
     case VK_NUMPAD8:
	return AK_NP8;
     case VK_NUMPAD9:
	return AK_NP9;
     case VK_UP:
	return AK_UP;
     case VK_DOWN:
	return AK_DN;
     case VK_LEFT:
	return AK_LF;
     case VK_RIGHT:
	return AK_RT;
     case VK_CONTROL:
	return scancode & KF_EXTENDED ? AK_RCTRL : AK_CTRL;
     case VK_RETURN:
	return scancode & KF_EXTENDED ? AK_ENT : AK_RET;
     case VK_CAPITAL:
	return -4;
     case VK_F1:
	if (helppressed ())
	    return -10 - shiftpressed ();
	return AK_F1;
     case VK_F2:
	if (helppressed ())
	    return -12 - shiftpressed ();
	return AK_F2;
    case VK_F3:
	if (helppressed ())
	    return -14 - shiftpressed ();
	return AK_F3;
    case VK_F4:
	if (helppressed ())
	    return -16 - shiftpressed ();
	return AK_F4;
     case VK_F5:
	return AK_F5;
     case VK_F6:
	return AK_F6;
     case VK_F7:
	return AK_F7;
     case VK_F8:
	return AK_F8;
     case VK_F9:
	return AK_F9;
     case VK_F10:
	return AK_F10;
     case VK_NEXT:
	return AK_HELP;
    }

    switch (scancode) {
     case 0x01:
	return 0x45;
     case 0x29:
	return 0x00;
     case 0x02:
	return 0x01;
     case 0x03:
	return 0x02;
     case 0x04:
	return 0x03;
     case 0x05:
	return 0x04;
     case 0x06:
	return 0x05;
     case 0x07:
	return 0x06;
     case 0x08:
	return 0x07;
     case 0x09:
	return 0x08;
     case 0x0a:
	return 0x09;
     case 0x0b:
	return 0x0a;
     case 0x0c:
	return 0x0b;
     case 0x0d:
	return 0x0c;
     case 0x57: /* This is F11 */
	return AK_BACKSLASH;
     case 0x0e:
	return 0x41;
     case 0x0f:
	return 0x42;
     case 0x10:
	return 0x10;
     case 0x11:
	return 0x11;
     case 0x12:
	return 0x12;
     case 0x13:
	return 0x13;
     case 0x14:
	return 0x14;
     case 0x15:
	return 0x15;
     case 0x16:
	return 0x16;
     case 0x17:
	return 0x17;
     case 0x18:
	return 0x18;
     case 0x19:
	return 0x19;
     case 0x1a:
	return 0x1a;
     case 0x1b:
	return 0x1b;
	/* special handling for caps lock: return 0x63*/
     case 0x3a:
	return 0x62;
     case 0x1e:
	return 0x20;
     case 0x1f:
	return 0x21;
     case 0x20:
	return 0x22;
     case 0x21:
	return 0x23;
     case 0x22:
	return 0x24;
     case 0x23:
	return 0x25;
     case 0x24:
	return 0x26;
     case 0x25:
	return 0x27;
     case 0x26:
	return 0x28;
     case 0x27:
	return AK_SEMICOLON;
     case 0x28:
	return AK_QUOTE;
     case 0x2b: /* This scancode is \ on US keyboards, but # on German ones - figure out which! */
	 if( getascii( keycode & 0xFF, scancode ) == '#' )
	     return AK_NUMBERSIGN;
	 else
	     return AK_BACKSLASH;
	 break;
#ifdef USE_OLD_SHIFT_CODE
     case 0x2a:
	return AK_LSH;
     case 0x36:
	return AK_RSH;
#endif
     case 0x56:
	return AK_LTGT;
     case 0x2c:
	return 0x31;
     case 0x2d:
	return 0x32;
     case 0x2e:
	return 0x33;
     case 0x2f:
	return 0x34;
     case 0x30:
	return 0x35;
     case 0x31:
	return 0x36;
     case 0x32:
	return 0x37;
     case 0x33:
	return 0x38;
     case 0x34:
	return 0x39;
     case 0x35:
	return 0x3a;
     case 0x38:
	return 0x64;
     case 0x39:
	return 0x40;
     case 0x153:
	return 0x46;
     case 0x51:
	return 0x5f;
     case 0x52:
	return AK_LAMI;
     case 0x47:
	return AK_RAMI;
     case 0x4b:
	return 0x4f;
     case 0x50:
	return 0x4d;
     case 0x4d:
	return 0x4e;
     case 0x48:
	return 0x4c;
     case 0x4e:
	return 0x5e;
     case 0x4a:
	return 0x4a;
     case 0x37:
	return 0x5d;
    }

    return -1;
}
예제 #7
0
파일: xwin.c 프로젝트: CrashSerious/PiUAE
void handle_events (void)
{
    for (;;) {
	XEvent event;
#if 0
	if (! XCheckMaskEvent (display, eventmask, &event))
	    break;
#endif
	if (! XPending (display))
	    break;

	XNextEvent (display, &event);

	switch (event.type) {
	 case KeyPress:
	 case KeyRelease: {
	    int state = (event.type == KeyPress);

	    if (currprefs.map_raw_keys) {
		unsigned int keycode = ((XKeyEvent *)&event)->keycode;
		unsigned int ievent;

		if ((ievent = match_hotkey_sequence (keycode, state)))
		    handle_hotkey_event (ievent, state);
		else
		    inputdevice_translatekeycode (0, keycode, state);
	    } else {
		KeySym keysym;
		int index = 0;
		int ievent, amiga_keycode;
		do {
		    keysym = XLookupKeysym ((XKeyEvent *)&event, index);
		    if ((ievent = match_hotkey_sequence (keysym, state))) {
			handle_hotkey_event (ievent, state);
			break;
		    } else
			if ((amiga_keycode = xkeysym2amiga (keysym)) >= 0) {
			    inputdevice_do_keyboard (amiga_keycode, state);
			    break;
			}
		    index++;
		} while (keysym != NoSymbol);
	    }
	    break;
	 }
	 case ButtonPress:
	 case ButtonRelease: {
	    int state = (event.type == ButtonPress);
	    int buttonno = -1;
	    switch ((int)((XButtonEvent *)&event)->button) {
		case 1:  buttonno = 0; break;
		case 2:  buttonno = 2; break;
		case 3:  buttonno = 1; break;
		/* buttons 4 and 5 report mousewheel events */
		case 4:  if (state) record_key (0x7a << 1); break;
		case 5:  if (state) record_key (0x7b << 1); break;
	    }
            if (buttonno >=0)
		setmousebuttonstate(0, buttonno, state);
	    break;
	 }
	 case MotionNotify:
	    if (dgamode) {
		int tx = ((XMotionEvent *)&event)->x_root;
		int ty = ((XMotionEvent *)&event)->y_root;
		setmousestate (0, 0, tx, 0);
		setmousestate (0, 1, ty, 0);
	    } else if (grabbed) {
		int realmove = 0;
		int tx, ty,ttx,tty;

		tx = ((XMotionEvent *)&event)->x;
		ty = ((XMotionEvent *)&event)->y;

		if (! event.xmotion.send_event) {
		    setmousestate( 0,0,tx-oldx,0);
		    setmousestate( 0,1,ty-oldy,0);
		    realmove = 1;
#undef ABS
#define ABS(a) (((a)<0) ? -(a) : (a) )
		    if (ABS(current_width / 2 - tx) > 3 * current_width / 8
			|| ABS(current_height / 2 - ty) > 3 * current_height / 8)
		    {
#undef ABS
			XEvent event;
			ttx = current_width / 2;
			tty = current_height / 2;
			event.type = MotionNotify;
			event.xmotion.display = display;
			event.xmotion.window = mywin;
			event.xmotion.x = ttx;
			event.xmotion.y = tty;
			XSendEvent (display, mywin, False,
				    PointerMotionMask, &event);
			XWarpPointer (display, None, mywin, 0, 0, 0, 0, ttx, tty);
		    }
		} else {
		    tx=event.xmotion.x;
		    ty=event.xmotion.y;
		}
		oldx = tx;
		oldy = ty;
	    } else if (inwindow) {
		int tx = ((XMotionEvent *)&event)->x;
		int ty = ((XMotionEvent *)&event)->y;
		setmousestate(0,0,tx,1);
		setmousestate(0,1,ty,1);
		if (! cursorOn && !currprefs.hide_cursor) {
		    XDefineCursor(display, mywin, xhairCursor);
		    cursorOn = 1;
		}
		gettimeofday(&lastMotionTime, NULL);
	    }
	    break;
	 case EnterNotify:
	    {
		int tx = ((XCrossingEvent *)&event)->x;
		int ty = ((XCrossingEvent *)&event)->y;
		setmousestate(0,0,tx,1);
		setmousestate(0,1,ty,1);
	    }
	    inwindow = 1;
	    break;
	 case LeaveNotify:
	    inwindow = 0;
	    break;
	 case FocusIn:
	    if (! autorepeatoff)
		XAutoRepeatOff (display);
	    autorepeatoff = 1;
	    break;
	 case FocusOut:
	    if (autorepeatoff)
		XAutoRepeatOn (display);
	    autorepeatoff = 0;
	    inputdevice_release_all_keys ();
	    break;
	 case Expose:
	    refresh_necessary = 1;
	    break;
         case ClientMessage:
            if (((Atom)event.xclient.data.l[0]) == delete_win) {
		uae_stop ();
            }
            break;
	}
    }

#if defined PICASSO96
    if (! dgamode) {
	if (screen_is_picasso && refresh_necessary) {
	    DO_PUTIMAGE (pic_dinfo.ximg, 0, 0, 0, 0,
			 picasso_vidinfo.width, picasso_vidinfo.height);
	    XFlush (display);
	    refresh_necessary = 0;
	    memset (picasso_invalid_lines, 0, sizeof picasso_invalid_lines);
	} else if (screen_is_picasso && picasso_has_invalid_lines) {
	    int i;
	    int strt = -1;

	    picasso_invalid_lines[picasso_vidinfo.height] = 0;
	    for (i = picasso_invalid_start; i < picasso_invalid_stop + 2; i++) {
		if (picasso_invalid_lines[i]) {
		    picasso_invalid_lines[i] = 0;
		    if (strt != -1)
			continue;
		    strt = i;
		} else {
		    if (strt == -1)
			continue;
		    DO_PUTIMAGE (pic_dinfo.ximg, 0, strt, 0, strt,
				 picasso_vidinfo.width, i - strt);
		    strt = -1;
		}
	    }
	    XFlush (display);
	    if (strt != -1)
		abort ();
	}
    }
    picasso_has_invalid_lines = 0;
    picasso_invalid_start = picasso_vidinfo.height + 1;
    picasso_invalid_stop = -1;
#endif

    if (! dgamode) {
	if (! screen_is_picasso && refresh_necessary) {
	    DO_PUTIMAGE (ami_dinfo.ximg, 0, 0, 0, 0, current_width, current_height);
	    refresh_necessary = 0;
	}
	if (cursorOn && !currprefs.hide_cursor) {
	    struct timeval now;
	    int diff;
	    gettimeofday(&now, NULL);
	    diff = (now.tv_sec - lastMotionTime.tv_sec) * 1000000 +
		(now.tv_usec - lastMotionTime.tv_usec);
	    if (diff > 1000000) {
		XDefineCursor (display, mywin, blankCursor);
		cursorOn = 0;
	    }
	}
    }
}
예제 #8
0
파일: gui.cpp 프로젝트: kerheol/uae4all
//pnd_nubstate_t t;
void gui_handle_events (void)
{
	printf("gui_handle_events\n");
/*if(blubb<0)
{
	test = pnd_evdev_open(pnd_evdev_nub1);
	printf("nub1 open: %d\n", test);
	test = pnd_evdev_open(pnd_evdev_nub2);
	printf("nub2 open: %d\n", test);
	t.x=1;
	t.y=1;
	printf("nubstate 1: x=%d y=%d\n", t.x, t.y);
}
blubb++;
if(blubb>100 && blubb<0)
{
	pnd_evdev_catchup(1);
	blubb=0;
}
test = pnd_evdev_nub_state(pnd_evdev_nub1, &t);
printf("nubstate 1: x=%d y=%d, returnvalue=%d\n", t.x, t.y, test);
pnd_evdev_nub_state(pnd_evdev_nub2, &t);
printf("nubstate 2: x=%d y=%d\n", t.x, t.y);
*/

#if ! defined (DREAMCAST) && ! defined (GP2X) && ! defined (PSP) && ! defined (GIZMONDO)
	Uint8 *keystate = SDL_GetKeyState(NULL);
	if ( keystate[SDLK_F12] )
		SDL_WM_ToggleFullScreen(prSDLScreen);
	else
	if ( keystate[SDLK_F11] )
#else
#ifdef DREAMCAST
	if (SDL_JoystickGetButton(uae4all_joy0,3) )
#endif
#ifdef GP2X
    if (SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_SELECT))
#endif
#ifdef PSP
	if (SDL_JoystickGetButton(uae4all_joy0, PSP_BUTTON_SELECT))
#endif
#ifdef GIZMONDO
	Uint8 *keystate = SDL_GetKeyState(NULL);
	if ( keystate[SDLK_F1] )
#endif
#endif
#ifdef GP2X
	{
		// hack: always use SDL_SWSURFACE in menus
		//switch_to_sw_sdl();
		goMenu();
		//switch_to_hw_sdl(0);
	}
#else
		goMenu();
#endif

#ifndef PANDORA
#if defined (DREAMCAST) || defined (GP2X) || defined (PSP) || defined (GIZMONDO)
#ifdef DREAMCAST
	if (SDL_JoystickGetAxis (uae4all_joy0, 2))
		if (vkbd_mode)
		{
			vkbd_mode=0;
   			notice_screen_contents_lost();
		}
	if (SDL_JoystickGetAxis (uae4all_joy0, 3))
		vkbd_mode=1;
#else

	if (!gp2xMouseEmuOn && !gp2xButtonRemappingOn)
	{
#ifdef GP2X
		if (SDL_JoystickGetButton (uae4all_joy0, GP2X_BUTTON_L))
#else
#ifdef GIZMONDO
		if (SDL_JoystickGetButton (uae4all_joy0, GIZ_LTRIG))
#else
		if (SDL_JoystickGetButton (uae4all_joy0, PSP_BUTTON_L))
#endif
#endif
		{
			/*if (vkbd_mode)
			{
				vkbd_mode = 0;
				goingVkbd=0;
				notice_screen_contents_lost();
			}
			else*/
				goingSuperThrottle=1;
		}
		else
		{
			if (!nowSuperThrottle)
				goingSuperThrottle=0;
			/*else
				goingVkbd=0;*/
		}

#ifdef GP2X
		if (SDL_JoystickGetButton (uae4all_joy0, GP2X_BUTTON_R))
#else
#ifdef GIZMONDO
		if (SDL_JoystickGetButton (uae4all_joy0, GIZ_RTRIG))
#else
		if (SDL_JoystickGetButton (uae4all_joy0, PSP_BUTTON_R))
#endif
#endif
		{
			if (goingSuperThrottle)
				goSuperThrottle();
			/*else
			{
				if (goingVkbd>4)
					vkbd_mode=1;
				else
					goingVkbd++;
			}*/
		}
		else
		{
			if (nowSuperThrottle)
				leftSuperThrottle();
			/*else
				goingVkbd=0;*/
		}
	}

#endif
#endif

	/*if (vkbd_key)
	{
		if (vkbd_keysave==-1234567)
		{
			SDL_keysym ks;
			ks.sym=vkbd_key;
			vkbd_keysave=keycode2amiga(&ks);
			if (vkbd_keysave >= 0)
			{
				if (!uae4all_keystate[vkbd_keysave])
				{
					uae4all_keystate[vkbd_keysave]=1;
					record_key(vkbd_keysave<<1);
				}
			}
		}
	}
	else
		if (vkbd_keysave!=-1234567)
		{
			if (vkbd_keysave >= 0)
			{
				uae4all_keystate[vkbd_keysave]=0;
				record_key((vkbd_keysave << 1) | 1);
			}
			vkbd_keysave=-1234567;
		}*/
#endif

#ifdef PANDORA
	Uint8 *keystate = SDL_GetKeyState(NULL);
	if(keystate[SDLK_F12])
	{
		if(hwScaled)
			SDL_WM_ToggleFullScreen(prSDLScreen);
		else
			SDL_WM_ToggleFullScreen(prSDLScaleScreen);
	}

if(!vkbd_mode)
{
	//L + R
	if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_R))
	{
		//up
		if(SDL_JoystickGetAxis(uae4all_joy0, 1) < 0)
		{
			moveVertical(1);
			moved_y += 2;
		}
		//down
		else if(SDL_JoystickGetAxis(uae4all_joy0, 1) > 0)
		{
			moveVertical(-1);
			moved_y -= 2;
		}
		//left
		else if(SDL_JoystickGetAxis(uae4all_joy0, 0) < 0)
		{
			screenWidth -=10;
			if(screenWidth<200)
				screenWidth = 200;
			update_display();
		}
		//right
		else if(SDL_JoystickGetAxis(uae4all_joy0, 0) > 0)
		{
			screenWidth +=10;
			if(screenWidth>800)
				screenWidth = 800;
			update_display();
		}
		//1
		else if(keystate[SDLK_1])
		{
			mainMenu_displayedLines = 200;
			screenWidth = 768;
			presetModeId = 0;
			strcpy(presetMode, "320x200 upscaled");
			update_display();
		}
		//2
		else if(keystate[SDLK_2])
		{
			mainMenu_displayedLines = 216;
			screenWidth = 716;
			presetModeId = 1;
			strcpy(presetMode, "320x216 upscaled");
			update_display();
		}
		//3
		else if(keystate[SDLK_3])
		{
			mainMenu_displayedLines = 240;
			screenWidth = 640;
			presetModeId = 2;
			strcpy(presetMode, "320x240 upscaled");
			update_display();
		}
		//4
		else if(keystate[SDLK_4])
		{
			mainMenu_displayedLines = 256;
			screenWidth = 600;
			presetModeId = 3;
			strcpy(presetMode, "320x256 upscaled");
			update_display();
		}
		//5
		else if(keystate[SDLK_5])
		{
			mainMenu_displayedLines = 262;
			screenWidth = 588;
			presetModeId = 4;
			strcpy(presetMode, "320x262 upscaled");
			update_display();
		}
		//6
		else if(keystate[SDLK_6])
		{
			mainMenu_displayedLines = 270;
			screenWidth = 570;
			presetModeId = 5;
			strcpy(presetMode, "320x270 upscaled");
			update_display();
		}
		//7
		else if(keystate[SDLK_7])
		{
			mainMenu_displayedLines = 200;
			screenWidth = 640;
			presetModeId = 6;
			strcpy(presetMode, "320x200 NTSC");
			update_display();
		}
		//8
		else if(keystate[SDLK_8])
		{
			mainMenu_displayedLines = 200;
			screenWidth = 800;
			presetModeId = 7;
			strcpy(presetMode, "320x200 fullscreen");
			update_display();
		}
	}

	//autofire on/off
	if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_R))
	{
		//(Y) button
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_Y))
		{
			if(!justPressedY)
			{
				//autofire on/off
				switch_autofire = !switch_autofire;
				justPressedY=1;
			}
		}
		else if(justPressedY)
			justPressedY=0;
	}

	if (mainMenu_customControls && !gp2xMouseEmuOn && !gp2xButtonRemappingOn)
	{
		if(mainMenu_custom_dpad == 0)
		{
			//UP
			if(SDL_JoystickGetAxis(uae4all_joy0, 1) < 0)
			{
				if(!justMovedUp)
				{
					if(mainMenu_custom_up == -1) buttonstate[0]=1;
					else if(mainMenu_custom_up == -2) buttonstate[2]=1;
					else if(mainMenu_custom_up > 0)
					{
						getMapping(mainMenu_custom_up);
						uae4all_keystate[customKey] = 1;
						record_key(customKey << 1);
					}
					justMovedUp=1;
				}
			}
			else if(justMovedUp)
			{
				if(mainMenu_custom_up == -1) buttonstate[0]=0;
				else if(mainMenu_custom_up == -2) buttonstate[2]=0;
				else if(mainMenu_custom_up > 0)
				{
					getMapping(mainMenu_custom_up);
					uae4all_keystate[customKey] = 0;
					record_key((customKey << 1) | 1);
				}
				justMovedUp=0;
			}

			//DOWN
			if(SDL_JoystickGetAxis(uae4all_joy0, 1) > 0)
			{
				if(!justMovedDown)
				{
					if(mainMenu_custom_down == -1) buttonstate[0]=1;
					else if(mainMenu_custom_down == -2) buttonstate[2]=1;
					else if(mainMenu_custom_down > 0)
					{
						getMapping(mainMenu_custom_down);
						uae4all_keystate[customKey] = 1;
						record_key(customKey << 1);
					}
					justMovedDown=1;
				}
			}
			else if(justMovedDown)
			{
				if(mainMenu_custom_down == -1) buttonstate[0]=0;
				else if(mainMenu_custom_down == -2) buttonstate[2]=0;
				else if(mainMenu_custom_down > 0)
				{
					getMapping(mainMenu_custom_down);
					uae4all_keystate[customKey] = 0;
					record_key((customKey << 1) | 1);
				}
				justMovedDown=0;
			}

			//LEFT
			if(SDL_JoystickGetAxis(uae4all_joy0, 0) < 0)
			{
				if(!justMovedLeft)
				{
					if(mainMenu_custom_left == -1) buttonstate[0]=1;
					else if(mainMenu_custom_left == -2) buttonstate[2]=1;
					else if(mainMenu_custom_left > 0)
					{
						getMapping(mainMenu_custom_left);
						uae4all_keystate[customKey] = 1;
						record_key(customKey << 1);
					}
					justMovedLeft=1;
				}
			}
			else if(justMovedLeft)
			{
				if(mainMenu_custom_left == -1) buttonstate[0]=0;
				else if(mainMenu_custom_left == -2) buttonstate[2]=0;
				else if(mainMenu_custom_left > 0)
				{
					getMapping(mainMenu_custom_left);
					uae4all_keystate[customKey] = 0;
					record_key((customKey << 1) | 1);
				}
				justMovedLeft=0;
			}

 			//RIGHT
			if(SDL_JoystickGetAxis(uae4all_joy0, 0) > 0)
			{
				if(!justMovedRight)
				{
					if(mainMenu_custom_right == -1) buttonstate[0]=1;
					else if(mainMenu_custom_right == -2) buttonstate[2]=1;
					else if(mainMenu_custom_right > 0)
					{
						getMapping(mainMenu_custom_right);
						uae4all_keystate[customKey] = 1;
						record_key(customKey << 1);
					}
					justMovedRight=1;
				}
			}
			else if(justMovedRight)
			{
				if(mainMenu_custom_right == -1) buttonstate[0]=0;
				else if(mainMenu_custom_right == -2) buttonstate[2]=0;
				else if(mainMenu_custom_right > 0)
				{
					getMapping(mainMenu_custom_right);
					uae4all_keystate[customKey] = 0;
					record_key((customKey << 1) | 1);
				}
				justMovedRight=0;
			}
		}

		//(A)
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_B))
		{
			if(!justPressedA)
			{
				if(mainMenu_custom_A == -1) buttonstate[0]=1;
				else if(mainMenu_custom_A == -2) buttonstate[2]=1;
				else if(mainMenu_custom_A > 0)
				{
					getMapping(mainMenu_custom_A);
					uae4all_keystate[customKey] = 1;
					record_key(customKey << 1);
				}
				justPressedA=1;
			}
		}
		else if(justPressedA)
		{
			if(mainMenu_custom_A == -1) buttonstate[0]=0;
			else if(mainMenu_custom_A == -2) buttonstate[2]=0;
			else if(mainMenu_custom_A > 0)
			{
				getMapping(mainMenu_custom_A);
				uae4all_keystate[customKey] = 0;
				record_key((customKey << 1) | 1);
			}
			justPressedA=0;
		}

		//(B)
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_A))
		{
			if(!justPressedB)
			{
				if(mainMenu_custom_B == -1) buttonstate[0]=1;
				else if(mainMenu_custom_B == -2) buttonstate[2]=1;
				else if(mainMenu_custom_B > 0)
				{
					getMapping(mainMenu_custom_B);
					uae4all_keystate[customKey] = 1;
					record_key(customKey << 1);
				}
				justPressedB=1;
			}
		}
		else if(justPressedB)
		{
			if(mainMenu_custom_B == -1) buttonstate[0]=0;
			else if(mainMenu_custom_B == -2) buttonstate[2]=0;
			else if(mainMenu_custom_B > 0)
			{
				getMapping(mainMenu_custom_B);
				uae4all_keystate[customKey] = 0;
				record_key((customKey << 1) | 1);
			}
			justPressedB=0;
		}

		//(X)
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_X))
		{
			if(!justPressedX)
			{
				if(mainMenu_custom_X == -1) buttonstate[0]=1;
				else if(mainMenu_custom_X == -2) buttonstate[2]=1;
				else if(mainMenu_custom_X > 0)
				{
					getMapping(mainMenu_custom_X);
					uae4all_keystate[customKey] = 1;
					record_key(customKey << 1);
				}
				justPressedX=1;
			}
		}
		else if(justPressedX)
		{
			if(mainMenu_custom_X == -1) buttonstate[0]=0;
			else if(mainMenu_custom_X == -2) buttonstate[2]=0;
			else if(mainMenu_custom_X > 0)
			{
				getMapping(mainMenu_custom_X);
				uae4all_keystate[customKey] = 0;
				record_key((customKey << 1) | 1);
			}
			justPressedX=0;
		}

		//(Y)
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_Y))
		{
			if(!justPressedY)
			{
				if(mainMenu_custom_Y == -1) buttonstate[0]=1;
				else if(mainMenu_custom_Y == -2) buttonstate[2]=1;
				else if(mainMenu_custom_Y > 0)
				{
					getMapping(mainMenu_custom_Y);
					uae4all_keystate[customKey] = 1;
					record_key(customKey << 1);
				}
				justPressedY=1;
			}
		}
		else if(justPressedY)
		{
			if(mainMenu_custom_Y == -1) buttonstate[0]=0;
			else if(mainMenu_custom_Y == -2) buttonstate[2]=0;
			else if(mainMenu_custom_Y > 0)
			{
				getMapping(mainMenu_custom_Y);
				uae4all_keystate[customKey] = 0;
				record_key((customKey << 1) | 1);
			}
			justPressedY=0;
		}

		//(L)
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L))
		{
			if(!justPressedL)
			{
				if(mainMenu_custom_L == -1) buttonstate[0]=1;
				else if(mainMenu_custom_L == -2) buttonstate[2]=1;
				else if(mainMenu_custom_L > 0)
				{
					getMapping(mainMenu_custom_L);
					uae4all_keystate[customKey] = 1;
					record_key(customKey << 1);
				}
				justPressedL=1;
			}
		}
		else if(justPressedL)
		{
			if(mainMenu_custom_L == -1) buttonstate[0]=0;
			else if(mainMenu_custom_L == -2) buttonstate[2]=0;
			else if(mainMenu_custom_L > 0)
			{
				getMapping(mainMenu_custom_L);
				uae4all_keystate[customKey] = 0;
				record_key((customKey << 1) | 1);
			}
			justPressedL=0;
		}

		//(R)
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_R))
		{
			if(!justPressedR)
			{
				if(mainMenu_custom_R == -1) buttonstate[0]=1;
				else if(mainMenu_custom_R == -2) buttonstate[2]=1;
				else if(mainMenu_custom_R > 0)
				{
					getMapping(mainMenu_custom_R);
					uae4all_keystate[customKey] = 1;
					record_key(customKey << 1);
				}
				justPressedR=1;
			}
		}
		else if(justPressedR)
		{
			if(mainMenu_custom_R == -1) buttonstate[0]=0;
			else if(mainMenu_custom_R == -2) buttonstate[2]=0;
			else if(mainMenu_custom_R > 0)
			{
				getMapping(mainMenu_custom_R);
				uae4all_keystate[customKey] = 0;
				record_key((customKey << 1) | 1);
			}
			justPressedR=0;
		}
	}
	else if(!gp2xMouseEmuOn)
	{
		//DPad = arrow keys in stylus-mode
		if(gp2xButtonRemappingOn)
		{
			//dpad up
			if (SDL_JoystickGetAxis(uae4all_joy0, 1) < 0)
			{
				if(!justMovedUp)
				{
					//left and right mouse-buttons down
					buttonstate[0] = 1;
					buttonstate[2] = 1;
					stylusClickOverride = 1;
					justMovedUp=1;
				}
			}
			else if(justMovedUp)
			{
				//left and right mouse-buttons up
				buttonstate[0] = 0;
				buttonstate[2] = 0;
				stylusClickOverride = 0;
				justMovedUp=0;
			}
			//dpad down
			if (SDL_JoystickGetAxis(uae4all_joy0, 1) > 0)
			{
				if(!justMovedDown)
				{
					//no clicks with stylus now
					stylusClickOverride=1;
					justMovedDown=1;
				}
			}
			else if(justMovedDown)
			{
				//clicks active again
				stylusClickOverride=0;
				justMovedDown=0;
			}
			//dpad left
			if (SDL_JoystickGetAxis(uae4all_joy0, 0) < 0)
			{
				if(!justMovedLeft)
				{
					//left mouse-button down
					buttonstate[0] = 1;
					stylusClickOverride = 1;
					justMovedLeft=1;
				}
			}
			else if(justMovedLeft)
			{
				//left mouse-button up
				buttonstate[0] = 0;
				stylusClickOverride = 0;
				justMovedLeft=0;
			}
			//dpad right
			if (SDL_JoystickGetAxis(uae4all_joy0, 0) > 0)
			{
				if(!justMovedRight)
				{
					//right mouse-button down
					buttonstate[2] = 1;
					stylusClickOverride = 1;
					justMovedRight=1;
				}
			}
			else if(justMovedRight)
			{
				//right mouse-button up
				buttonstate[2] = 0;
				stylusClickOverride = 0;
				justMovedRight=0;
			}
			//L + up
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && SDL_JoystickGetAxis(uae4all_joy0, 1) < 0)
				stylusAdjustY-=2;
			//L + down
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && SDL_JoystickGetAxis(uae4all_joy0, 1) > 0)
				stylusAdjustY+=2;
			//L + left
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && SDL_JoystickGetAxis(uae4all_joy0, 0) < 0)
				stylusAdjustX-=2;
			//L + right
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && SDL_JoystickGetAxis(uae4all_joy0, 0) > 0)
				stylusAdjustX+=2;
		}
		//R-trigger in joystick mode
		else if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_R))
		{
			//(A) button
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_A))
			{
				if(!justPressedA)
				{
					//CTRL
					uae4all_keystate[AK_CTRL] = 1;
					record_key(AK_CTRL << 1);
					justPressedA=1;
				}
			}
			else if(justPressedA)
			{
				uae4all_keystate[AK_CTRL] = 0;
				record_key((AK_CTRL << 1) | 1);
				justPressedA=0;
			}
			//(B) button
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_B))
			{
				if(!justPressedB)
				{
					//left ALT
					uae4all_keystate[AK_LALT] = 1;
					record_key(AK_LALT << 1);
					justPressedB=1;
				}
			}
			else if(justPressedB)
			{
				uae4all_keystate[AK_LALT] = 0;
				record_key((AK_LALT << 1) | 1);
				justPressedB=0;
			}
			//(X) button
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_X))
			{
				if(!justPressedX)
				{
					//HELP
					uae4all_keystate[AK_HELP] = 1;
					record_key(AK_HELP << 1);
					justPressedX=1;
				}
			}
			else if(justPressedX)
			{
				//HELP
				uae4all_keystate[AK_HELP] = 0;
				record_key((AK_HELP << 1) | 1);
				justPressedX=0;
			}
		}
		else if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L))
		{
			//(A) button
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_A))
			{
				if(!justPressedA)
				{
					//right mouse-button down
					buttonstate[2] = 1;
					justPressedA=1;
				}
			}
			else if(justPressedA)
			{
				//right mouse-button up
				buttonstate[2] = 0;
				justPressedA=0;
			}
			//(B) button
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_B))
			{
				if(!justPressedB)
				{
					//left mouse-button down
					buttonstate[0] = 1;
					justPressedB=1;
				}
			}
			else if(justPressedB)
			{
				//left mouse-button up
				buttonstate[0] = 0;
				justPressedB=0;
			}
		}
		else
		{
			if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_Y))
			{
				if(!justPressedY)
				{
					//SPACE
					uae4all_keystate[AK_SPC] = 1;
					record_key(AK_SPC << 1);
					justPressedY=1;
				}
			}
			else if(justPressedY)
			{
				//SPACE
				uae4all_keystate[AK_SPC] = 0;
				record_key((AK_SPC << 1) | 1);
				justPressedY=0;
			}
		}
	}
	else
	{
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_A))
		{
			if(!justPressedA)
			{
				//right mouse-button down
				buttonstate[2] = 1;
				justPressedA=1;
			}
		}
		else if(justPressedA)
		{
			//right mouse-button up
			buttonstate[2] = 0;
			justPressedA=0;
		}
		//(B) button
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_B))
		{
			if(!justPressedB)
			{
				//left mouse-button down
				buttonstate[0] = 1;
				justPressedB=1;
			}
		}
		else if(justPressedB)
		{
			//left mouse-button up
			buttonstate[0] = 0;
			justPressedB=0;
		}
		if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_Y))
		{
			if(!justPressedY)
			{
				//SPACE
				uae4all_keystate[AK_SPC] = 1;
				record_key(AK_SPC << 1);
				justPressedY=1;
			}
		}
		else if(justPressedY)
		{
			//SPACE
			uae4all_keystate[AK_SPC] = 0;
			record_key((AK_SPC << 1) | 1);
			justPressedY=0;
		}
		if (SDL_JoystickGetAxis(uae4all_joy0, 0) < 0)
		{
			if(!justMovedLeft)
			{
				//left ALT
				uae4all_keystate[0x64] = 1;
				record_key(0x64 << 1);
				justMovedLeft=1;
			}
		}
		else if(justMovedLeft)
		{
			//left ALT
			uae4all_keystate[0x64] = 0;
			record_key((0x64 << 1) | 1);
			justMovedLeft=0;
		}
		if (SDL_JoystickGetAxis(uae4all_joy0, 0) > 0)
		{
			if(!justMovedRight)
			{
				//left ALT
				uae4all_keystate[0x64] = 1;
				record_key(0x64 << 1);
				justMovedRight=1;
			}
		}
		else if(justMovedRight)
		{
			//left ALT
			uae4all_keystate[0x64] = 0;
			record_key((0x64 << 1) | 1);
			justMovedRight=0;
		}
	}

	if(!mainMenu_customControls && SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_R))
	{
		//R+dpad = arrow keys in joystick mode
		//dpad up
		if (SDL_JoystickGetAxis(uae4all_joy0, 1) < 0)
		{
			if(!justMovedUp)
			{
				//arrow up
				uae4all_keystate[0x4C] = 1;
				record_key(0x4C << 1);
				justMovedUp=1;
			}
		}
		else if(justMovedUp)
		{
			//arrow up
			uae4all_keystate[0x4C] = 0;
			record_key((0x4C << 1) | 1);
			justMovedUp=0;
		}
		//dpad down
		if (SDL_JoystickGetAxis(uae4all_joy0, 1) > 0)
		{
			if(!justMovedDown)
			{
				//arrow down
				uae4all_keystate[0x4D] = 1;
				record_key(0x4D << 1);
				justMovedDown=1;
			}
		}
		else if(justMovedDown)
		{
			//arrow down
			uae4all_keystate[0x4D] = 0;
			record_key((0x4D << 1) | 1);
			justMovedDown=0;
		}
		//dpad left
		if (SDL_JoystickGetAxis(uae4all_joy0, 0) < 0)
		{
			if(!justMovedLeft)
			{
				//arrow left
				uae4all_keystate[0x4F] = 1;
				record_key(0x4F << 1);
				justMovedLeft=1;
			}
		}
		else if(justMovedLeft)
		{
			//arrow left
			uae4all_keystate[0x4F] = 0;
			record_key((0x4F << 1) | 1);
			justMovedLeft=0;
		}
		//dpad right
		if (SDL_JoystickGetAxis(uae4all_joy0, 0) > 0)
		{
			if(!justMovedRight)
			{
				//arrow right
				uae4all_keystate[0x4E] = 1;
				record_key(0x4E << 1);
				justMovedRight=1;
			}
		}
		else if(justMovedRight)
		{
			//arrow right
			uae4all_keystate[0x4E] = 0;
			record_key((0x4E << 1) | 1);
			justMovedRight=0;
		}
	}

	//L+D: show/hide status ln
	if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && keystate[SDLK_d])
	{
		keystate[SDLK_d]=0;
		mainMenu_showStatus = !mainMenu_showStatus;
	}
}

	//L+K: virtual keyboard
	if (SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && keystate[SDLK_k])
	{
		if(!justLK)
		{
			vkbd_mode = !vkbd_mode;
			justLK=1;
		}
	}
	else if(justLK)
		justLK=0;

#ifndef CYCLONE
	if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && keystate[SDLK_s])
	{
		keystate[SDLK_s]=0;
		savestate_state = STATE_DOSAVE;
	}
	if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && keystate[SDLK_l])
	{
		extern char *savestate_filename;
		FILE *f=fopen(savestate_filename, "rb");
		keystate[SDLK_l]=0;
		if(f)
		{
			fclose(f);
			savestate_state = STATE_DORESTORE;
		}
		else
			gui_set_message("Failed: Savestate not found", 100);
	}
#endif
//if(SDL_JoystickGetButton(uae4all_joy0, GP2X_BUTTON_L) && keystate[SDLK_1])
//{
//	resChange = 1;
//	gfxHeight	 = 256;
//	prSDLScreen = SDL_SetVideoMode(320, 256, 16, VIDEO_FLAGS);
//	system("export SDL_OMAP_LAYER_SIZE=800x480");
//}
#endif

	if (vkbd_key)
	{
		if (vkbd_keysave==-1234567)
		{
			SDL_keysym ks;
			ks.sym=vkbd_key;
			vkbd_keysave=keycode2amiga(&ks);
			if (vkbd_keysave >= 0)
			{
				if (!uae4all_keystate[vkbd_keysave])
				{
					uae4all_keystate[vkbd_keysave]=1;
					record_key(vkbd_keysave<<1);
				}
			}
		}
	}
	else
		if (vkbd_keysave!=-1234567)
		{
			if (vkbd_keysave >= 0)
			{
				uae4all_keystate[vkbd_keysave]=0;
				record_key((vkbd_keysave << 1) | 1);
			}
			vkbd_keysave=-1234567;
		}
}
예제 #9
0
void handle_events (void)
{
    SDL_Event rEvent;
    int iAmigaKeyCode;
    int i, j;
    int iIsHotKey = 0;
#ifdef DEBUG_EVENTS
    dbg("Function: handle_events");
#endif


#ifdef MAX_AUTOEVENTS
	{
		static unsigned cuenta=0;
// /*
		switch(cuenta&63)
		{
			case 8:
				if ((cuenta<6500)||(cuenta>8000))
					joy1button=1;
				break;
			case 16:
				buttonstate[0]=1; break;
			case 24:
				joy1button=0; break;
			case 28:
				if (cuenta>11000)
					joy1dir=3;
				break;
			case 32:
				buttonstate[0]=0; break;
			case 62:
				joy1dir=0; break;
		}
//		lastmy+=8;
		switch(cuenta&127)
		{
			case 20:
				record_key(0x12); break;
			case 40:
				record_key(0x13); break;
			case 60:
				record_key(0x88); break;
			case 80:
				record_key(0x89); break;
		}
if (cuenta==7700)
{
strcpy(changed_df[0],"prueba2.adz");
real_changed_df[0]=1;
joy1button=1;
}
// */

// Defender of the Crown
 /*
switch(cuenta)
{
case 2600:
lastmx+=80;
break;
case 2610:
buttonstate[0]=1; break;
break;
case 2615:
buttonstate[0]=0; break;
break;
case 4500:
lastmy+=100;
break;
case 4510:
buttonstate[0]=1; break;
break;
case 4515:
buttonstate[0]=0; break;
break;
case 4640:
lastmy-=60;
lastmx+=550;
break;
case 4700:
lastmx+=200;
break;
case 4710:
buttonstate[0]=1; break;
break;
case 4715:
buttonstate[0]=0; break;
break;


}
// printf("%i -> %.8X\n",cuenta,chipmem_checksum());
 */
printf("%i\n",cuenta); fflush(stdout);


#ifdef START_DEBUG
		if (cuenta>START_DEBUG)
			DEBUG_AHORA=1;
#endif
#ifdef DEBUG_EVENTS
		dbgf(" AUTO EVENTS: %i =?= %i\n",cuenta,MAX_AUTOEVENTS);
#endif
		if (cuenta>MAX_AUTOEVENTS)
			exit(0);
		else
			dbgf("handle_events %i\n",cuenta);
		cuenta++;
	}
#else
    /* Handle GUI events */
    gui_handle_events ();

    while (SDL_PollEvent(&rEvent))
    {
	switch (rEvent.type)
	{
	case SDL_QUIT:
#ifdef DEBUG_EVENTS
	    dbg("Event: quit");
#endif
	    uae_quit();
	    break;
	    break;
	case SDL_JOYBUTTONDOWN:
#if defined (GP2X) || defined (PSP) || defined (GIZMONDO)
		if (gp2xButtonRemappingOn && is_overridden_button(rEvent.jbutton.button))
		{
			// handle the buttons as specified
			handle_remapped_button_down(rEvent.jbutton.button);
		}
#ifdef GP2X
		else if (rEvent.jbutton.button==GP2X_BUTTON_A)
#else
#ifdef GIZMONDO
		else if (rEvent.jbutton.button==GIZ_BACK)
#else
		else if (rEvent.jbutton.button==PSP_BUTTON_SQUARE)
#endif
#endif
		{
			// critical: temporary hack to send return and space when the A button
			// is pressed
			if (!uae4all_keystate[AK_RET])
			{
				uae4all_keystate[AK_RET] = 1;
				record_key(AK_RET << 1);
			}
			if (!uae4all_keystate[AK_SPC])
			{
				uae4all_keystate[AK_SPC] = 1;
				record_key(AK_SPC << 1);
			}
		}
#ifdef GP2X
		else if (rEvent.jbutton.button==GP2X_BUTTON_START)
#else
#ifdef GIZMONDO
		else if (rEvent.jbutton.button==GIZ_STOP)
#else
		else if (rEvent.jbutton.button==PSP_BUTTON_START)
#endif
#endif
		{
			if (!vkbd_mode)
			{
				// only do this if the virtual keyboard isn't visible
				
				// state moves thus:
				// joystick mode (with virt keyboard on L and R)
				// mouse mode (with mouse buttons on L and R)
				// if specified:
				// remapping mode (with whatever's been supplied)
				// back to start of state
				if (!hasGp2xButtonRemapping)
				{
					// skip the remapping state
					gp2xMouseEmuOn = !gp2xMouseEmuOn;
				}
				else
				{
					// start condition is gp2xMouseEmuOn = 0, gp2xButtonRemappingOn = 0
					if (!gp2xButtonRemappingOn && !gp2xMouseEmuOn)
					{
						// move to mouse emu mode
						gp2xMouseEmuOn = 1;
						gp2xButtonRemappingOn = 0;
					}
					else if (gp2xMouseEmuOn && !gp2xButtonRemappingOn)
					{
						// move to button remapping mode
						gp2xMouseEmuOn = 0;
						gp2xButtonRemappingOn = 1;
					}
					else if (!gp2xMouseEmuOn && gp2xButtonRemappingOn)
					{
						gp2xMouseEmuOn = 0;
						gp2xButtonRemappingOn = 0;
					}
				}

				show_inputmode = 1;
			}			
		}
		else if (gp2xMouseEmuOn)
		{
#ifdef GP2X
			if (rEvent.jbutton.button==GP2X_BUTTON_L)
				buttonstate[0] = 1;
			
			if (rEvent.jbutton.button==GP2X_BUTTON_R)
				buttonstate[2] = 1;
#else
#ifdef GIZMONDO
			if (rEvent.jbutton.button==GIZ_LTRIG)
				buttonstate[0] = 1;
			
			if (rEvent.jbutton.button==GIZ_RTRIG)
				buttonstate[2] = 1;

#else
			if (rEvent.jbutton.button==PSP_BUTTON_L)
				buttonstate[0] = 1;
			
			if (rEvent.jbutton.button==PSP_BUTTON_R)
				buttonstate[2] = 1;

#endif
#endif
		}
		
		else if ((!gp2xMouseEmuOn) && (!gp2xButtonRemappingOn) && (!vkbd_mode) && (vkbd_button2!=(SDLKey)0))
		{
			if (vkbd_button2)
				rEvent.key.keysym.sym=vkbd_button2;
			else
				break;
		}
#ifdef GP2X
		if (rEvent.jbutton.button==GP2X_BUTTON_VOLUP)
		{
			if (soundVolume <100)
			{
				soundVolume+= 10;
				
				gp2x_set_volume(soundVolume);
			}
			show_volumecontrol = 1;
		}
		else if (rEvent.jbutton.button==GP2X_BUTTON_VOLDOWN)
		{
			int vol;

			if (soundVolume > 0)
			{
				soundVolume-= 10;
				gp2x_set_volume(soundVolume);
			}
			show_volumecontrol = 1;
		}
#endif
#else         
	    if ((rEvent.jbutton.button==6) && (!vkbd_mode) && (vkbd_button2!=(SDLKey)0))
	    {
		    if (vkbd_button2)
			    rEvent.key.keysym.sym=vkbd_button2;
		    else
			    break;
            }
#endif
	    else
	    	break;
        case SDL_KEYDOWN:
#ifdef DEBUG_EVENTS
	    dbg("Event: key down");
#endif
#if !defined (DREAMCAST) && !defined (GP2X)
	    if ((rEvent.key.keysym.sym!=SDLK_F11)&&(rEvent.key.keysym.sym!=SDLK_F12)&&(rEvent.key.keysym.sym!=SDLK_PAGEUP))
#endif
	    {
		iAmigaKeyCode = keycode2amiga(&(rEvent.key.keysym));
		if (iAmigaKeyCode >= 0)
		{
		    if (!uae4all_keystate[iAmigaKeyCode])
		    {
				if (iAmigaKeyCode == AK_P)
				{
					joy0button = 1;
				}
			uae4all_keystate[iAmigaKeyCode] = 1;
			record_key(iAmigaKeyCode << 1);
		    }
		}
	    }
	    break;
	case SDL_JOYBUTTONUP:
#if defined (GP2X) || defined (PSP) || defined (GIZMONDO)
			if (gp2xButtonRemappingOn && is_overridden_button(rEvent.jbutton.button))
			{
				// handle the buttons as specified
				handle_remapped_button_up(rEvent.jbutton.button);
			}
#ifdef GP2X
        	else if (rEvent.jbutton.button==GP2X_BUTTON_A)
#else
#ifdef GIZMONDO
			else if (rEvent.jbutton.button==GIZ_BACK)
#else
			else if (rEvent.jbutton.button==PSP_BUTTON_SQUARE)
#endif
#endif
			{
				// critical: temporary hack to send return and space when the A button
				// is pressed
				uae4all_keystate[AK_RET] = 0;
				record_key((AK_RET << 1) | 1);
				
				uae4all_keystate[AK_SPC] = 0;
				record_key((AK_SPC << 1) | 1);
			}
			else if (gp2xMouseEmuOn)
			{
#ifdef GP2X
				if (rEvent.jbutton.button==GP2X_BUTTON_L)
				{
					buttonstate[0] = 0;
				}
				else if (rEvent.jbutton.button==GP2X_BUTTON_R)
				{
					buttonstate[2] = 0;
				}
#else
#ifdef GIZMONDO
				if (rEvent.jbutton.button==GIZ_LTRIG)
				{
					buttonstate[0] = 0;
				}
				else if (rEvent.jbutton.button==GIZ_RTRIG)
				{
					buttonstate[2] = 0;
				}
#else
				if (rEvent.jbutton.button==PSP_BUTTON_L)
				{
					buttonstate[0] = 0;
				}
				else if (rEvent.jbutton.button==PSP_BUTTON_R)
				{
					buttonstate[2] = 0;
				}
#endif
#endif
			}
#ifdef GP2X
			if (rEvent.jbutton.button==GP2X_BUTTON_VOLDOWN || rEvent.jbutton.button==GP2X_BUTTON_VOLUP)
			{
				show_volumecontrol = 0;
			}
#endif
#ifdef GP2X
			if (rEvent.jbutton.button==GP2X_BUTTON_START)
#else
#ifdef GIZMONDO
			if (rEvent.jbutton.button==GIZ_STOP)
#else
			if (rEvent.jbutton.button==PSP_BUTTON_START)
#endif
#endif
			{
				show_inputmode = 0;
			}

#else         
	    if ((rEvent.jbutton.button==6) && (!vkbd_mode) && (vkbd_button2!=(SDLKey)0))
	    {
		    if (vkbd_button2)
			    rEvent.key.keysym.sym=vkbd_button2;
		    else
			    break;
            }
#endif
	    else
	    	break;
	case SDL_KEYUP:
#ifdef DEBUG_EVENTS
	    dbg("Event: key up");
#endif
#if !defined (DREAMCAST) && !defined (GP2X)
	    if ((rEvent.key.keysym.sym!=SDLK_F11)&&(rEvent.key.keysym.sym!=SDLK_F12)&&(rEvent.key.keysym.sym!=SDLK_PAGEUP))
#endif
	    {
		iAmigaKeyCode = keycode2amiga(&(rEvent.key.keysym));
		if (iAmigaKeyCode >= 0)
		{
			if (iAmigaKeyCode == AK_P)
				{
					joy0button = 0;
				}
		    uae4all_keystate[iAmigaKeyCode] = 0;
		    record_key((iAmigaKeyCode << 1) | 1);
		}
	    }
	    break;
	case SDL_MOUSEBUTTONDOWN:
#ifdef DEBUG_EVENTS
	    dbg("Event: mouse button down");
#endif
#ifdef DREAMCAST
	    if (__sdl_dc_emulate_mouse)
	    {
	    	if (rEvent.button.button==5)
			    buttonstate[0] = 1;
	    	else if (rEvent.button.button==1)
		 	   buttonstate[2] = 1;
	    }
	    else
	    	if (rEvent.button.button)
			buttonstate[2]=1;
		else
			buttonstate[0]=1;
#else
#ifdef ANDROID
		if (right_mouse == 1)
			buttonstate[2] = 1;
		else
			buttonstate[(rEvent.button.button-1)%3] = 1;
#else
	    	buttonstate[(rEvent.button.button-1)%3] = 1;
#endif
#endif
	    break;
	case SDL_MOUSEBUTTONUP:
#ifdef DEBUG_EVENTS
	    dbg("Event: mouse button up");
#endif
#ifdef DREAMCAST
	    if (__sdl_dc_emulate_mouse)
	    {
	    	if (rEvent.button.button==5)
			    buttonstate[0] = 0;
	    	else if (rEvent.button.button==1)
			    buttonstate[2] = 0;
	    }
	    else
	    	if (rEvent.button.button)
			buttonstate[2]=0;
		else
			buttonstate[0]=0;
				
#else
#ifdef ANDROID
		if (right_mouse == 1)
			buttonstate[2] = 0;
		else
			buttonstate[(rEvent.button.button-1)%3] = 0;
#else
	    	buttonstate[(rEvent.button.button-1)%3] = 0;
#endif
#endif
	    break;
	case SDL_MOUSEMOTION:
#ifdef DEBUG_EVENTS
	    dbg("Event: mouse motion");
#endif
	    lastmx += rEvent.motion.xrel<<1;
	    lastmy += rEvent.motion.yrel<<1;
	    newmousecounters = 1;
	    break;
	}
    }
#endif


    /* Handle UAE reset */
/*
    if ((uae4all_keystate[AK_CTRL] || uae4all_keystate[AK_RCTRL]) && uae4all_keystate[AK_LAMI] && uae4all_keystate[AK_RAMI])
	uae_reset ();
*/
#ifdef DEBUG_EVENTS
    dbg(" handle_events -> terminado");
#endif
}