--- previous/src/gui-sdl/dlgKeyboard.c 2018/04/24 19:25:10 1.1 +++ previous/src/gui-sdl/dlgKeyboard.c 2018/04/24 19:30:45 1.1.1.2 @@ -1,10 +1,10 @@ /* - Hatari - dlgKeyboard.c + Previous - dlgKeyboard.c This file is distributed under the GNU Public License, version 2 or at your option any later version. Read the file gpl.txt for details. */ -const char DlgKeyboard_fileid[] = "Hatari dlgKeyboard.c : " __DATE__ " " __TIME__; +const char DlgKeyboard_fileid[] = "Previous dlgKeyboard.c : " __DATE__ " " __TIME__; #include @@ -14,31 +14,67 @@ const char DlgKeyboard_fileid[] = "Hatar #include "sdlgui.h" #include "file.h" #include "screen.h" +#include "dimension.h" -#define DLGKEY_SYMBOLIC 3 +#define ENABLE_LOADED_OPTION 0 + #define DLGKEY_SCANCODE 4 +#define DLGKEY_SYMBOLIC 5 #define DLGKEY_FROMFILE 5 #define DLGKEY_MAPNAME 7 #define DLGKEY_MAPBROWSE 8 -#define DLGKEY_DISREPEAT 9 -#define DLGKEY_EXIT 10 +#define DLGKEY_DISREPEAT 8 +#define DLGKEY_SWAP 9 +#define DLGKEY_EXIT 21 /* The keyboard dialog: */ static SGOBJ keyboarddlg[] = { - { SGBOX, 0, 0, 0,0, 46,14, NULL }, - { SGTEXT, 0, 0, 16,1, 14,1, "Keyboard setup" }, - { SGTEXT, 0, 0, 2,3, 17,1, "Keyboard mapping:" }, - { SGRADIOBUT, 0, 0, 4,5, 10,1, "Symbolic" }, - { SGRADIOBUT, 0, 0, 17,5, 10,1, "Scancode" }, - { SGRADIOBUT, 0, 0, 30,5, 11,1, "From file" }, - { SGTEXT, 0, 0, 2,7, 13,1, "Mapping file:" }, - { SGTEXT, 0, 0, 2,8, 42,1, NULL }, - { SGBUTTON, 0, 0, 36,7, 8,1, "Browse" }, - { SGCHECKBOX, 0, 0, 2,10, 41,1, "Disable key repeat in fast forward mode" }, - { SGBUTTON, SG_DEFAULT, 0, 13,12, 20,1, "Back to main menu" }, +#if ENABLE_DIMENSION + { SGBOX, 0, 0, 0,0, 47,28, NULL }, +#else + { SGBOX, 0, 0, 0,0, 47,27, NULL }, +#endif + { SGTEXT, 0, 0, 15,1, 16,1, "Keyboard options" }, + + { SGBOX, 0, 0, 2,3, 21,7, NULL }, + { SGTEXT, 0, 0, 4,4, 17,1, "Keyboard mapping:" }, + { SGRADIOBUT, 0, 0, 6,6, 10,1, "Scancode" }, + { SGRADIOBUT, 0, 0, 6,8, 10,1, "Symbolic" }, + + { SGBOX, 0, 0, 24,3, 21,7, NULL }, + { SGTEXT, 0, 0, 26,4, 12,1, "Key options:" }, + { SGCHECKBOX, 0, 0, 26,6, 16,1, "Disable repeat" }, + { SGCHECKBOX, 0, 0, 26,8, 18,1, "Swap cmd and alt" }, + +#if ENABLE_DIMENSION + { SGBOX, 0, 0, 2,11, 43,12, NULL }, +#else + { SGBOX, 0, 0, 2,11, 43,11, NULL }, +#endif + { SGTEXT, 0, 0, 4,12, 10,1, "Shortcuts:" }, + { SGTEXT, 0, 0, 17,12, 10,1, "ctrl-alt-X (Fn)" }, + { SGTEXT, 0, 0, 6,14, 17,1, "Show main menu -O (F12)" }, + { SGTEXT, 0, 0, 6,15, 17,1, "Pause -P" }, + { SGTEXT, 0, 0, 6,16, 17,1, "Cold reset -C" }, + { SGTEXT, 0, 0, 6,17, 17,1, "Lock/unlock mouse -M" }, +#if ENABLE_DIMENSION + { SGTEXT, 0, 0, 6,18, 17,1, "Screen toggle -N" }, + { SGTEXT, 0, 0, 6,19, 17,1, "Fullscreen on/off -F" }, + { SGTEXT, 0, 0, 6,20, 17,1, "Sound on/off -S" }, + { SGTEXT, 0, 0, 6,21, 17,1, "Quit -Q" }, + + { SGBUTTON, SG_DEFAULT, 0, 13,25, 21,1, "Back to main menu" }, +#else + { SGTEXT, 0, 0, 6,1, 17,1, "" }, + { SGTEXT, 0, 0, 6,18, 17,1, "Fullscreen on/off -F" }, + { SGTEXT, 0, 0, 6,19, 17,1, "Sound on/off -S" }, + { SGTEXT, 0, 0, 6,20, 17,1, "Quit -Q" }, + + { SGBUTTON, SG_DEFAULT, 0, 13,24, 21,1, "Back to main menu" }, +#endif { -1, 0, 0, 0,0, 0,0, NULL } }; @@ -49,49 +85,66 @@ static SGOBJ keyboarddlg[] = */ void Dialog_KeyboardDlg(void) { - int i, but; + int but; +#if ENABLE_LOADED_OPTION char dlgmapfile[44]; - +#endif SDLGui_CenterDlg(keyboarddlg); /* Set up dialog from actual values: */ - for (i = DLGKEY_SYMBOLIC; i <= DLGKEY_FROMFILE; i++) - { - keyboarddlg[i].state &= ~SG_SELECTED; - } - keyboarddlg[DLGKEY_SYMBOLIC+ConfigureParams.Keyboard.nKeymapType].state |= SG_SELECTED; - - File_ShrinkName(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, - keyboarddlg[DLGKEY_MAPNAME].w); + keyboarddlg[DLGKEY_SCANCODE].state &= ~SG_SELECTED; + keyboarddlg[DLGKEY_SYMBOLIC].state &= ~SG_SELECTED; + + switch (ConfigureParams.Keyboard.nKeymapType) { + case KEYMAP_SCANCODE: + keyboarddlg[DLGKEY_SCANCODE].state |= SG_SELECTED; + break; + case KEYMAP_SYMBOLIC: + keyboarddlg[DLGKEY_SYMBOLIC].state |= SG_SELECTED; + break; + + default: + break; + } +#if ENABLE_LOADED_OPTION + File_ShrinkName(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w); keyboarddlg[DLGKEY_MAPNAME].txt = dlgmapfile; - +#endif if (ConfigureParams.Keyboard.bDisableKeyRepeat) keyboarddlg[DLGKEY_DISREPEAT].state |= SG_SELECTED; else keyboarddlg[DLGKEY_DISREPEAT].state &= ~SG_SELECTED; + + if (ConfigureParams.Keyboard.bSwapCmdAlt) + keyboarddlg[DLGKEY_SWAP].state |= SG_SELECTED; + else + keyboarddlg[DLGKEY_SWAP].state &= ~SG_SELECTED; /* Show the dialog: */ do { but = SDLGui_DoDialog(keyboarddlg, NULL); - +#if ENABLE_LOADED_OPTION if (but == DLGKEY_MAPBROWSE) { SDLGui_FileConfSelect(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w, false); } +#endif } while (but != DLGKEY_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ - if (keyboarddlg[DLGKEY_SYMBOLIC].state & SG_SELECTED) - ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC; - else if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED) + if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED) ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE; else + ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC; +#if ENABLE_LOADED_OPTION + else ConfigureParams.Keyboard.nKeymapType = KEYMAP_LOADED; - +#endif ConfigureParams.Keyboard.bDisableKeyRepeat = (keyboarddlg[DLGKEY_DISREPEAT].state & SG_SELECTED); + ConfigureParams.Keyboard.bSwapCmdAlt = (keyboarddlg[DLGKEY_SWAP].state & SG_SELECTED); }