Annotation of hatari/src/shortcut.c, revision 1.1

1.1     ! root        1: /*
        !             2:   Hatari
        !             3: 
        !             4:   Shortcut keys
        !             5: */
        !             6: 
        !             7: #include "main.h"
        !             8: #include "dialog.h"
        !             9: #include "audio.h"
        !            10: /*#include "dsurface.h"*/
        !            11: #include "joy.h"
        !            12: #include "memAlloc.h"
        !            13: #include "memorySnapShot.h"
        !            14: #include "reset.h"
        !            15: #include "screen.h"
        !            16: #include "screenSnapShot.h"
        !            17: #include "shortcut.h"
        !            18: #include "sound.h"
        !            19: /*#include "toolbar.h"*/
        !            20: /*#include "view.h"*/
        !            21: 
        !            22: // List of possible short-cuts(MUST match SHORTCUT_xxxx)
        !            23: char *pszShortCutTextStrings[NUM_SHORTCUTS+1] = {
        !            24:   "(not assigned)",
        !            25:   "Full Screen",
        !            26:   "Mouse Mode",
        !            27:   "Record YM/WAV",
        !            28:   "Record Animation",
        !            29:   "Joystick Emulation",
        !            30:   "Sound On/Off",
        !            31:   "Maximum Speed",
        !            32:   "'Cold' Reset",
        !            33:   "'Warm' Reset",
        !            34:   "'Boss' Key",
        !            35:   NULL  //term
        !            36: };
        !            37: 
        !            38: char *pszShortCutF11TextString[] = {
        !            39:   "Full Screen",
        !            40:   NULL  //term
        !            41: };
        !            42: 
        !            43: char *pszShortCutF12TextString[] = {
        !            44:   "Mouse Mode",
        !            45:   NULL  //term
        !            46: };
        !            47: 
        !            48: ShortCutFunction_t pShortCutFunctions[NUM_SHORTCUTS] = {
        !            49:   NULL,
        !            50:   ShortCut_FullScreen,
        !            51:   ShortCut_MouseMode,
        !            52:   ShortCut_RecordSound,
        !            53:   ShortCut_RecordAnimation,
        !            54:   ShortCut_JoystickCursorEmulation,
        !            55:   ShortCut_SoundOnOff,
        !            56:   ShortCut_MaximumSpeed,
        !            57:   ShortCut_ColdReset,
        !            58:   ShortCut_WarmReset,
        !            59:   ShortCut_BossKey
        !            60: };
        !            61: 
        !            62: SHORTCUT_KEY ShortCutKey;
        !            63: 
        !            64: //-----------------------------------------------------------------------
        !            65: /*
        !            66:   Clear shortkey structure
        !            67: */
        !            68: void ShortCut_ClearKeys(void)
        !            69: {
        !            70:   // Clear short-cut key structure
        !            71:   Memory_Clear(&ShortCutKey,sizeof(SHORTCUT_KEY));
        !            72: }
        !            73: 
        !            74: //-----------------------------------------------------------------------
        !            75: /*
        !            76:   Check to see if pressed ayn shortcut keys, and call handling function
        !            77: */
        !            78: void ShortCut_CheckKeys(void)
        !            79: {
        !            80: /* FIXME */
        !            81: /*
        !            82:   ShortCutFunction_t pShortCutFunction;
        !            83:   int PressedKey=SHORT_CUT_NONE;
        !            84: 
        !            85:   // Check for F11 or F12
        !            86:   if (ShortCutKey.Key==KEY_F11)
        !            87:     PressedKey = SHORT_CUT_F11;
        !            88:   else if (ShortCutKey.Key==KEY_F12)
        !            89:     PressedKey = SHORT_CUT_F12;
        !            90: 
        !            91:   // Did press key?
        !            92:   if (PressedKey!=SHORT_CUT_NONE) {
        !            93:     // Find which short-cut to do, eg do have Ctrl or Shift held down?
        !            94:     if (ShortCutKey.bCtrlPressed)
        !            95:       pShortCutFunction = pShortCutFunctions[ ConfigureParams.Keyboard.ShortCuts[PressedKey][SHORT_CUT_CTRL] ];
        !            96:     else if (ShortCutKey.bShiftPressed) {
        !            97:       pShortCutFunction = pShortCutFunctions[ ConfigureParams.Keyboard.ShortCuts[PressedKey][SHORT_CUT_SHIFT] ];
        !            98:       // If we don't have a SHIFT short-cut assigned, set to normal key(to allow for SHIFT+F11 to bring up Floppy A)
        !            99:       if (pShortCutFunction==NULL)
        !           100:         pShortCutFunction = pShortCutFunctions[ ConfigureParams.Keyboard.ShortCuts[PressedKey][SHORT_CUT_KEY] ];
        !           101:     }
        !           102:     else
        !           103:       pShortCutFunction = pShortCutFunctions[ ConfigureParams.Keyboard.ShortCuts[PressedKey][SHORT_CUT_KEY] ];
        !           104: 
        !           105:     // And call short-cut, if have one
        !           106:     if (pShortCutFunction)
        !           107:       pShortCutFunction();
        !           108: 
        !           109:     // And clear
        !           110:     ShortCut_ClearKeys();
        !           111:   }
        !           112: */
        !           113: }
        !           114: 
        !           115: //-----------------------------------------------------------------------
        !           116: /*
        !           117:   Shortcut to toggle full-screen
        !           118: */
        !           119: void ShortCut_FullScreen(void)
        !           120: {
        !           121: /* FIXME */
        !           122: /*
        !           123:   // Is working?
        !           124:   if (bDirectDrawWorking) {
        !           125:     // Toggle full screen
        !           126:     if (bInFullScreen) {
        !           127:       // Did hold down SHIFT? Bring up insert floppy dialog
        !           128:       if (ShortCutKey.bShiftPressed) {
        !           129:         // Flip to Windows full-screen GDI surface(or back to Windows if fails)
        !           130:         DSurface_FlipToGDI();
        !           131: 
        !           132:         // Open dialog(ignore SHIFT key)
        !           133:         PostMessage(hWnd,WM_COMMAND,ID_FLOPPYA_INSERTDISC,0);
        !           134: 
        !           135:         // Back if sent user to Windows
        !           136:         if (!bFullScreenHold) {
        !           137:           // Return back to full-screen
        !           138:           Screen_EnterFullScreen();
        !           139:         }
        !           140:       }
        !           141:       else
        !           142:         Screen_ReturnFromFullScreen();
        !           143:     }
        !           144:     else {
        !           145:       // Did hold down SHIFT? Bring up insert floppy dialog
        !           146:       if (ShortCutKey.bShiftPressed) {
        !           147:         // Back to Windows mouse
        !           148:         View_ToggleWindowsMouse(MOUSE_WINDOWS);
        !           149:         // Open dialog(ignore SHIFT key)
        !           150:         ToolBar_Activate_FloppyA(TRUE);
        !           151:       }
        !           152:       else {
        !           153:         // Just pressed F11, so go to full-screen
        !           154:         Screen_EnterFullScreen();
        !           155:       }
        !           156:     }
        !           157:   }
        !           158: */
        !           159: }
        !           160: 
        !           161: //-----------------------------------------------------------------------
        !           162: /*
        !           163:   Shortcut to toggle mouse mode
        !           164: */
        !           165: void ShortCut_MouseMode(void)
        !           166: {
        !           167: /* FIXME */
        !           168: /*
        !           169:   if (bInFullScreen) {
        !           170:     // Were we in our full-screen menu/Windows mouse mode?
        !           171:     if (bFullScreenHold && bWindowsMouseMode) {
        !           172:       SetMenu(hWnd,NULL);
        !           173:       bFullScreenHold = FALSE;            // Release screen hold
        !           174:       
        !           175:       View_ToggleWindowsMouse(MOUSE_ST);
        !           176: 
        !           177:       return;
        !           178:     }
        !           179:     else {
        !           180:       // Flip to Windows full-screen GDI surface(or back to Windows if fails)
        !           181:       if (DSurface_FlipToGDI()) {
        !           182:         // Did hold down SHIFT? Bring up insert floppy dialog
        !           183:         if (ShortCutKey.bShiftPressed) {
        !           184:           // Open dialog(ignore SHIFT key)
        !           185:           PostMessage(hWnd,WM_COMMAND,ID_FLOPPYB_INSERTDISC_NORESET,0);
        !           186:         }
        !           187:       }
        !           188:     }
        !           189:     
        !           190:     // Do need to return to Windows to handle F12? Ie, low resolution, or GDI flip failed?
        !           191:     if (!bFullScreenHold) {
        !           192:       Screen_ReturnFromFullScreen();
        !           193: 
        !           194:       // Did hold down SHIFT? Bring up insert floppy dialog
        !           195:       if (ShortCutKey.bShiftPressed) {
        !           196:         // Back to Windows mouse
        !           197:         View_ToggleWindowsMouse(MOUSE_WINDOWS);
        !           198:         // Open dialog(ignore SHIFT key)
        !           199:         ToolBar_Activate_FloppyB(TRUE);
        !           200:         // Return back to full-screen
        !           201:         Screen_EnterFullScreen();
        !           202:       }
        !           203:       else {
        !           204:         View_ToggleWindowsMouse(MOUSE_TOGGLE);
        !           205:       }
        !           206:     }
        !           207:   }
        !           208:   else {
        !           209:     // Did hold down SHIFT? Bring up insert floppy dialog
        !           210:     if (ShortCutKey.bShiftPressed) {
        !           211:       // Back to Windows mouse
        !           212:       View_ToggleWindowsMouse(MOUSE_WINDOWS);
        !           213:       // Open dialog(ignore SHIFT key)
        !           214:       ToolBar_Activate_FloppyB(TRUE);
        !           215:     }
        !           216:     else
        !           217:       View_ToggleWindowsMouse(MOUSE_TOGGLE);
        !           218:   }
        !           219: */
        !           220: }
        !           221: 
        !           222: //-----------------------------------------------------------------------
        !           223: /*
        !           224:   Shortcut to toggle YM/WAV sound recording
        !           225: */
        !           226: void ShortCut_RecordSound(void)
        !           227: {
        !           228: /* FIXME */
        !           229: /*
        !           230:   // Is working?
        !           231:   if (bDirectSoundWorking) {
        !           232:     // Are we currently recording? If so stop
        !           233:     if (Sound_AreWeRecording()) {
        !           234:       // Stop, and save
        !           235:       Sound_EndRecording(NULL);
        !           236:     }
        !           237:     else {
        !           238:       // Being recording
        !           239:       Sound_BeginRecording(NULL,ConfigureParams.Sound.szYMCaptureFileName);
        !           240:     }
        !           241:   }
        !           242: */
        !           243: }
        !           244: 
        !           245: //-----------------------------------------------------------------------
        !           246: /*
        !           247:   Shortcut to toggle screen animation recording
        !           248: */
        !           249: void ShortCut_RecordAnimation(void)
        !           250: {
        !           251: /* FIXME */
        !           252: /*
        !           253:   // Are we in a Window?
        !           254:   if (!bInFullScreen) {
        !           255:     // Are we currently recording? If so stop
        !           256:     if (ScreenSnapShot_AreWeRecording()) {
        !           257:       // Stop
        !           258:       ScreenSnapShot_EndRecording(NULL);
        !           259:     }
        !           260:     else {
        !           261:       // Start animation
        !           262:       ScreenSnapShot_BeginRecording(NULL,ConfigureParams.Screen.bCaptureChange,ConfigureParams.Screen.nFramesPerSecond);
        !           263:     }
        !           264:   }
        !           265: */
        !           266: }
        !           267: 
        !           268: //-----------------------------------------------------------------------
        !           269: /*
        !           270:   Shortcut to toggle joystick cursor emulation
        !           271: */
        !           272: void ShortCut_JoystickCursorEmulation(void)
        !           273: {
        !           274:   // Toggle it on/off
        !           275:   Joy_ToggleCursorEmulation();
        !           276: }
        !           277: 
        !           278: //-----------------------------------------------------------------------
        !           279: /*
        !           280:   Shortcut to sound on/off
        !           281: */
        !           282: void ShortCut_SoundOnOff(void)
        !           283: {
        !           284: /* FIXME */
        !           285: /*
        !           286:   // Toggle sound on/off
        !           287:   ConfigureParams.Sound.bEnableSound ^= TRUE;
        !           288:   // And start/stop if need to
        !           289:   if (!ConfigureParams.Sound.bEnableSound) {
        !           290:     if (Sound_AreWeRecording())
        !           291:       Sound_EndRecording(NULL);
        !           292:     DAudio_StopBuffer();
        !           293:   }
        !           294:   else
        !           295:     DAudio_ResetBuffer();
        !           296: */
        !           297: }
        !           298: 
        !           299: //-----------------------------------------------------------------------
        !           300: /*
        !           301:   Shortcut to maximum speed
        !           302: */
        !           303: void ShortCut_MaximumSpeed(void)
        !           304: {
        !           305: /* FIXME */
        !           306: /*
        !           307:   // If already on max speed, restore
        !           308:   if (ConfigureParams.Configure.nMinMaxSpeed==MINMAXSPEED_MAX) {
        !           309:     // Restore
        !           310:     ConfigureParams.Configure.nMinMaxSpeed = ConfigureParams.Configure.nPrevMinMaxSpeed;
        !           311:   }
        !           312:   else {
        !           313:     // Set maximum speed
        !           314:     ConfigureParams.Configure.nPrevMinMaxSpeed = ConfigureParams.Configure.nMinMaxSpeed;
        !           315:     ConfigureParams.Configure.nMinMaxSpeed = MINMAXSPEED_MAX;
        !           316:   }
        !           317: 
        !           318:   // Set new timer thread
        !           319:   Main_SetSpeedThreadTimer(ConfigureParams.Configure.nMinMaxSpeed);
        !           320: */
        !           321: }
        !           322: 
        !           323: //-----------------------------------------------------------------------
        !           324: /*
        !           325:   Shortcut to 'Boss' key, ie minmize Window and switch to another application
        !           326: */
        !           327: void ShortCut_BossKey(void)
        !           328: {
        !           329: /* FIXME */
        !           330: /*
        !           331:   // If we are in full-screen, then return to a Window
        !           332:   Screen_ReturnFromFullScreen();
        !           333:   // Restore a few things
        !           334:   View_ToggleWindowsMouse(MOUSE_ST);      // Put mouse into ST mode
        !           335:   View_LimitCursorToScreen();        // Free mouse from Window constraints
        !           336:   // Minimize Window and give up processing to next one!
        !           337:   ShowWindow(hWnd,SW_MINIMIZE);
        !           338: */
        !           339: }
        !           340: 
        !           341: //-----------------------------------------------------------------------
        !           342: /*
        !           343:   Shortcut to 'Cold' reset
        !           344: */
        !           345: void ShortCut_ColdReset(void)
        !           346: {
        !           347:   Reset_Cold();                    // Reset emulator with 'cold'(clear all)
        !           348: }
        !           349: 
        !           350: //-----------------------------------------------------------------------
        !           351: /*
        !           352:   Shortcut to 'Warm' reset
        !           353: */
        !           354: void ShortCut_WarmReset(void)
        !           355: {
        !           356:   Reset_Warm();                    // Emulator 'warm' reset
        !           357: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.