@@ -538,7 +538,32 @@ bool handle_events(SDL_Renderer* renderer, SDL_Event* event)
538538 {
539539 return false;
540540 }
541- case SDL_EVENT_GAMEPAD_BUTTON_DOWN :
541+ #ifndef __SYMBIAN32__
542+ case SDL_EVENT_JOYSTICK_ADDED :
543+ {
544+ const SDL_JoystickID which = event -> jdevice .which ;
545+ SDL_Joystick * joystick = SDL_OpenJoystick (which );
546+ if (!joystick )
547+ {
548+ SDL_Log ("Joystick #%u could not be opened: %s" , (unsigned int )which , SDL_GetError ());
549+ }
550+ else
551+ {
552+ SDL_Log ("Joystick #%u connected: %s" , (unsigned int )which , SDL_GetJoystickName (joystick ));
553+ }
554+ return true;
555+ }
556+ case SDL_EVENT_JOYSTICK_REMOVED :
557+ {
558+ const SDL_JoystickID which = event -> jdevice .which ;
559+ SDL_Joystick * joystick = SDL_GetJoystickFromID (which );
560+ if (joystick )
561+ {
562+ SDL_CloseJoystick (joystick ); /* the joystick was unplugged. */
563+ }
564+ return true;
565+ }
566+ #endif
542567 case SDL_EVENT_KEY_DOWN :
543568 {
544569 if (state == STATE_MENU )
@@ -571,20 +596,6 @@ bool handle_events(SDL_Renderer* renderer, SDL_Event* event)
571596 case SDLK_HASH : // Show FPS on the N-Gage.
572597 render_cartridge (renderer );
573598 }
574- switch (event -> button .button )
575- {
576- case SDL_BUTTON_LEFT :
577- select_prev_cartridge (renderer );
578- render_cartridge (renderer );
579- return true;
580- case SDL_BUTTON_RIGHT :
581- select_next_cartridge (renderer );
582- render_cartridge (renderer );
583- return true;
584- case SDL_BUTTON_X1 :
585- run_cartridge (renderer );
586- return true;
587- }
588599 }
589600 else if (state == STATE_EMULATOR )
590601 {
@@ -601,9 +612,37 @@ bool handle_events(SDL_Renderer* renderer, SDL_Event* event)
601612 state = STATE_MENU ;
602613 return true;
603614 }
604- switch (event -> button .button )
615+ }
616+ break ;
617+ }
618+ #ifndef __SYMBIAN32__
619+ case SDL_EVENT_JOYSTICK_BUTTON_DOWN :
620+ {
621+ const SDL_JoystickID which = event -> jbutton .which ;
622+ SDL_Log ("Joystick #%u button %d -> %s" , (unsigned int )which , (int )event -> jbutton .button , event -> jbutton .down ? "PRESSED" : "RELEASED" );
623+
624+ if (state == STATE_MENU )
625+ {
626+ switch (event -> jbutton .button )
605627 {
606- case SDL_BUTTON_X2 :
628+ case 4 :
629+ select_prev_cartridge (renderer );
630+ render_cartridge (renderer );
631+ return true;
632+ case 5 :
633+ select_next_cartridge (renderer );
634+ render_cartridge (renderer );
635+ return true;
636+ case 0 :
637+ run_cartridge (renderer );
638+ return true;
639+ }
640+ }
641+ else if (state == STATE_EMULATOR )
642+ {
643+ switch (event -> jbutton .button )
644+ {
645+ case 1 :
607646 destroy_vm ();
608647 init_vm (renderer );
609648 reset_memory ();
@@ -613,6 +652,7 @@ bool handle_events(SDL_Renderer* renderer, SDL_Event* event)
613652 }
614653 break ;
615654 }
655+ #endif
616656 }
617657 return true;
618658}
0 commit comments