|
|
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.