|
|
1.1 ! root 1: /* ! 2: Hatari ! 3: ! 4: Shortcut keys ! 5: */ ! 6: ! 7: #include <SDL.h> ! 8: ! 9: #include "main.h" ! 10: #include "dialog.h" ! 11: #include "audio.h" ! 12: #include "memAlloc.h" ! 13: #include "reset.h" ! 14: #include "screen.h" ! 15: #include "shortcut.h" ! 16: ! 17: ! 18: /* List of possible short-cuts(MUST match SHORTCUT_xxxx) */ ! 19: char *pszShortCutTextStrings[NUM_SHORTCUTS+1] = { ! 20: "(not assigned)", ! 21: "Full Screen", ! 22: "Mouse Mode", ! 23: "Reset", ! 24: NULL /*term*/ ! 25: }; ! 26: ! 27: char *pszShortCutF11TextString[] = { ! 28: "Full Screen", ! 29: NULL /*term*/ ! 30: }; ! 31: ! 32: char *pszShortCutF12TextString[] = { ! 33: "Mouse Mode", ! 34: NULL /*term*/ ! 35: }; ! 36: ! 37: ShortCutFunction_t pShortCutFunctions[NUM_SHORTCUTS] = { ! 38: NULL, ! 39: ShortCut_FullScreen, ! 40: ShortCut_MouseMode, ! 41: ShortCut_ColdReset, ! 42: }; ! 43: ! 44: SHORTCUT_KEY ShortCutKey; ! 45: ! 46: /*-----------------------------------------------------------------------*/ ! 47: /* ! 48: Clear shortkey structure ! 49: */ ! 50: void ShortCut_ClearKeys(void) ! 51: { ! 52: /* Clear short-cut key structure */ ! 53: Memory_Clear(&ShortCutKey,sizeof(SHORTCUT_KEY)); ! 54: } ! 55: ! 56: /*-----------------------------------------------------------------------*/ ! 57: /* ! 58: Check to see if pressed any shortcut keys, and call handling function ! 59: */ ! 60: void ShortCut_CheckKeys(void) ! 61: { ! 62: /* Check for supported keys: */ ! 63: switch(ShortCutKey.Key) { ! 64: case SDLK_F12: /* Show options dialog */ ! 65: Dialog_DoProperty(); ! 66: break; ! 67: case SDLK_F11: /* Switch between fullscreen/windowed mode */ ! 68: ShortCut_FullScreen(); ! 69: break; ! 70: case SDLK_m: /* Toggle mouse mode */ ! 71: ShortCut_MouseMode(); ! 72: break; ! 73: case SDLK_r: /* Cold reset */ ! 74: ShortCut_ColdReset(); ! 75: break; ! 76: case SDLK_q: /* Quit program */ ! 77: bQuitProgram = TRUE; ! 78: break; ! 79: } ! 80: ! 81: /* And clear */ ! 82: ShortCut_ClearKeys(); ! 83: } ! 84: ! 85: ! 86: /*-----------------------------------------------------------------------*/ ! 87: /* ! 88: Shortcut to toggle full-screen ! 89: */ ! 90: void ShortCut_FullScreen(void) ! 91: { ! 92: if(!bInFullScreen) ! 93: { ! 94: Screen_EnterFullScreen(); ! 95: } ! 96: else ! 97: { ! 98: Screen_ReturnFromFullScreen(); ! 99: } ! 100: } ! 101: ! 102: ! 103: /*-----------------------------------------------------------------------*/ ! 104: /* ! 105: Shortcut to toggle mouse mode ! 106: */ ! 107: void ShortCut_MouseMode(void) ! 108: { ! 109: bGrabMouse = !bGrabMouse; /* Toggle flag */ ! 110: ! 111: /* If we are in windowed mode, toggle the mouse cursor mode now: */ ! 112: if(!bInFullScreen) ! 113: { ! 114: if(bGrabMouse) ! 115: { ! 116: SDL_WM_GrabInput(SDL_GRAB_ON); ! 117: } ! 118: else ! 119: { ! 120: SDL_WM_GrabInput(SDL_GRAB_OFF); ! 121: } ! 122: } ! 123: } ! 124: ! 125: ! 126: /*-----------------------------------------------------------------------*/ ! 127: /* ! 128: Shortcut to 'Cold' reset ! 129: */ ! 130: void ShortCut_ColdReset(void) ! 131: { ! 132: Reset_VM(); /* Reset emulator with 'cold' (clear all) */ ! 133: } ! 134:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.