mirror of
https://github.com/Wiimpathy/HatariWii.git
synced 2024-06-03 00:58:44 +02:00
115 lines
3.4 KiB
C
115 lines
3.4 KiB
C
/*
|
|
Hatari - dlgKeyboard.c
|
|
|
|
This file is distributed under the GNU General 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__;
|
|
|
|
#include <unistd.h>
|
|
|
|
#include "main.h"
|
|
#include "configuration.h"
|
|
#include "dialog.h"
|
|
#include "sdlgui.h"
|
|
#include "file.h"
|
|
#include "screen.h"
|
|
|
|
|
|
#define DLGKEY_SYMBOLIC 3
|
|
#define DLGKEY_SCANCODE 4
|
|
#define DLGKEY_FROMFILE 5
|
|
#define DLGKEY_MAPNAME 7
|
|
#define DLGKEY_MAPBROWSE 8
|
|
#define DLGKEY_DISREPEAT 9
|
|
#define DLGKEY_EXIT 10
|
|
#ifdef GEKKO
|
|
#define DLGKEY_BACK 11
|
|
#endif
|
|
|
|
/* 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, "S_cancode" },
|
|
{ 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" },
|
|
#ifdef GEKKO
|
|
{ SGBUTTON, SG_DEFAULT, 0, 13,12, 20,1, "Back to settings" },
|
|
{ SGTEXT, SG_CANCEL, 0, 800,23, 2,1, "B" }, // hidden, back with B button
|
|
#else
|
|
{ SGBUTTON, SG_DEFAULT, 0, 13,12, 20,1, "Back to main menu" },
|
|
#endif
|
|
{ -1, 0, 0, 0,0, 0,0, NULL }
|
|
};
|
|
|
|
|
|
/*-----------------------------------------------------------------------*/
|
|
/**
|
|
* Show and process the "Keyboard" dialog.
|
|
*/
|
|
void Dialog_KeyboardDlg(void)
|
|
{
|
|
int i, but;
|
|
char dlgmapfile[44];
|
|
|
|
SDLGui_CenterDlg(keyboarddlg);
|
|
#ifdef GEKKO
|
|
/* Clear the screen */
|
|
SDL_FillRect(sdlscrn, NULL, SDL_MapRGB(sdlscrn->format, 0, 0, 0));
|
|
#endif
|
|
/* 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_MAPNAME].txt = dlgmapfile;
|
|
|
|
if (ConfigureParams.Keyboard.bDisableKeyRepeat)
|
|
keyboarddlg[DLGKEY_DISREPEAT].state |= SG_SELECTED;
|
|
else
|
|
keyboarddlg[DLGKEY_DISREPEAT].state &= ~SG_SELECTED;
|
|
|
|
/* Show the dialog: */
|
|
do
|
|
{
|
|
but = SDLGui_DoDialog(keyboarddlg, NULL, false);
|
|
|
|
if (but == DLGKEY_MAPBROWSE)
|
|
{
|
|
SDLGui_FileConfSelect("Keyboard mapping file:", dlgmapfile,
|
|
ConfigureParams.Keyboard.szMappingFileName,
|
|
keyboarddlg[DLGKEY_MAPNAME].w, false);
|
|
}
|
|
}
|
|
#ifdef GEKKO
|
|
while (but != DLGKEY_EXIT && but != DLGKEY_BACK && but != SDLGUI_QUIT
|
|
&& but != SDLGUI_ERROR && !bQuitProgram);
|
|
|
|
/* Clear the screen */
|
|
SDL_FillRect(sdlscrn, NULL, SDL_MapRGB(sdlscrn->format, 0, 0, 0));
|
|
#else
|
|
while (but != DLGKEY_EXIT && but != SDLGUI_QUIT
|
|
&& but != SDLGUI_ERROR && !bQuitProgram);
|
|
#endif
|
|
/* Read values from dialog: */
|
|
if (keyboarddlg[DLGKEY_SYMBOLIC].state & SG_SELECTED)
|
|
ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC;
|
|
else if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED)
|
|
ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE;
|
|
else
|
|
ConfigureParams.Keyboard.nKeymapType = KEYMAP_LOADED;
|
|
|
|
ConfigureParams.Keyboard.bDisableKeyRepeat = (keyboarddlg[DLGKEY_DISREPEAT].state & SG_SELECTED);
|
|
}
|