GTK: added GUI for --inputcfg; only works with gamepad 1 currently
This commit is contained in:
parent
160faa8837
commit
82c55b16e4
|
@ -10,6 +10,7 @@
|
||||||
#include "sdl.h"
|
#include "sdl.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "dface.h"
|
#include "dface.h"
|
||||||
|
#include "input.h"
|
||||||
|
|
||||||
#ifdef _S9XLUA_H
|
#ifdef _S9XLUA_H
|
||||||
#include "../../fceulua.h"
|
#include "../../fceulua.h"
|
||||||
|
@ -17,28 +18,62 @@
|
||||||
|
|
||||||
extern Config *g_config;
|
extern Config *g_config;
|
||||||
|
|
||||||
// test rendering
|
|
||||||
//SDL_Surface* screen = NULL;
|
|
||||||
//SDL_Surface* hello = NULL;
|
|
||||||
|
|
||||||
GtkWidget* MainWindow = NULL;
|
GtkWidget* MainWindow = NULL;
|
||||||
|
|
||||||
|
int configGamepadButton(GtkButton* button, gpointer p)
|
||||||
// we're not using this loop right now since integrated sdl is broken
|
|
||||||
gint mainLoop(gpointer data)
|
|
||||||
{
|
{
|
||||||
// test render
|
int x = GPOINTER_TO_INT(p);
|
||||||
/*
|
int padNo = 0;
|
||||||
SDL_UpdateRect(screen, 0, 0, xres, yres);
|
char buf[256];
|
||||||
|
std::string prefix;
|
||||||
|
|
||||||
|
ButtonConfigBegin();
|
||||||
|
|
||||||
|
snprintf(buf, 256, "SDL.Input.GamePad.%d", padNo);
|
||||||
|
prefix = buf;
|
||||||
|
ConfigButton("Press key twice to bind...", &GamePadConfig[padNo][x]);
|
||||||
|
|
||||||
|
g_config->setOption(prefix + GamePadNames[x], GamePadConfig[padNo][x].ButtonNum[0]);
|
||||||
|
|
||||||
|
if(GamePadConfig[padNo][x].ButtType[0] == BUTTC_KEYBOARD)
|
||||||
|
{
|
||||||
|
g_config->setOption(prefix + "DeviceType", "Keyboard");
|
||||||
|
} else if(GamePadConfig[padNo][x].ButtType[0] == BUTTC_JOYSTICK) {
|
||||||
|
g_config->setOption(prefix + "DeviceType", "Joystick");
|
||||||
|
} else {
|
||||||
|
g_config->setOption(prefix + "DeviceType", "Unknown");
|
||||||
|
}
|
||||||
|
g_config->setOption(prefix + "DeviceNum", GamePadConfig[padNo][0].DeviceNum[0]);
|
||||||
|
|
||||||
|
ButtonConfigEnd();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Implement something for gamepads 1 - 4
|
||||||
|
// shouldnt be hard but im lazy right now
|
||||||
|
void openGamepadConfig()
|
||||||
|
{
|
||||||
|
GtkWidget* win;
|
||||||
|
GtkWidget* vbox;
|
||||||
|
GtkWidget* buttons[10];
|
||||||
|
|
||||||
|
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_set_title(GTK_WINDOW(win), "Gamepad 1 Config");
|
||||||
|
gtk_widget_set_size_request(win, 250, 600);
|
||||||
|
vbox = gtk_vbox_new(TRUE, 2);
|
||||||
|
for(int i=0; i<10; i++)
|
||||||
|
{
|
||||||
|
buttons[i] = gtk_button_new_with_label(GamePadNames[i]);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), buttons[i], TRUE, TRUE, 5);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(buttons[i]), "clicked", G_CALLBACK(configGamepadButton), GINT_TO_POINTER(i));
|
||||||
|
}
|
||||||
|
|
||||||
SDL_BlitSurface (hello, NULL, screen, NULL);
|
gtk_container_add(GTK_CONTAINER(win), vbox);
|
||||||
|
|
||||||
SDL_Flip( screen );
|
gtk_widget_show_all(win);
|
||||||
*/
|
|
||||||
DoFun(0);
|
|
||||||
|
|
||||||
return TRUE;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void quit ()
|
void quit ()
|
||||||
|
@ -263,6 +298,7 @@ static GtkItemFactoryEntry menu_items[] = {
|
||||||
{ "/Emulator/_Pause", NULL, emuPause, 0, "<Item>"},
|
{ "/Emulator/_Pause", NULL, emuPause, 0, "<Item>"},
|
||||||
{ "/Emulator/R_esume", NULL, emuResume, 0, "<Item>"},
|
{ "/Emulator/R_esume", NULL, emuResume, 0, "<Item>"},
|
||||||
{ "/Options/_Preferences", "<CTRL>P" , openPrefs, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
|
{ "/Options/_Preferences", "<CTRL>P" , openPrefs, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
|
||||||
|
{ "/Options/_Gamepad Config", NULL , openGamepadConfig, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
|
||||||
{ "/Options/tear", NULL, NULL, 0, "<Tearoff>" },
|
{ "/Options/tear", NULL, NULL, 0, "<Tearoff>" },
|
||||||
{ "/Options/_Fullscreen", NULL, enableFullscreen, 0, "<Item>" },
|
{ "/Options/_Fullscreen", NULL, enableFullscreen, 0, "<Item>" },
|
||||||
// { "/Options/sep", NULL, NULL, 0, "<Separator>" },
|
// { "/Options/sep", NULL, NULL, 0, "<Separator>" },
|
||||||
|
@ -395,3 +431,4 @@ int InitGTKSubsystem(int argc, char** argv)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -745,7 +745,7 @@ static int bcpv,bcpj;
|
||||||
* subsystems into a well-known state. Button configuration really
|
* subsystems into a well-known state. Button configuration really
|
||||||
* needs to be cleaned up after the new config system is in place.
|
* needs to be cleaned up after the new config system is in place.
|
||||||
*/
|
*/
|
||||||
static int
|
int
|
||||||
ButtonConfigBegin()
|
ButtonConfigBegin()
|
||||||
{
|
{
|
||||||
SDL_Surface *screen;
|
SDL_Surface *screen;
|
||||||
|
@ -781,7 +781,7 @@ ButtonConfigBegin()
|
||||||
* subsystems to their previous state. Button configuration really
|
* subsystems to their previous state. Button configuration really
|
||||||
* needs to be cleaned up after the new config system is in place.
|
* needs to be cleaned up after the new config system is in place.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
ButtonConfigEnd()
|
ButtonConfigEnd()
|
||||||
{
|
{
|
||||||
extern FCEUGI *GameInfo;
|
extern FCEUGI *GameInfo;
|
||||||
|
@ -829,7 +829,7 @@ DTestButton(ButtConfig *bc)
|
||||||
#define MKZ() {{0},{0},{0},0}
|
#define MKZ() {{0},{0},{0},0}
|
||||||
#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ()}
|
#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ()}
|
||||||
|
|
||||||
static ButtConfig GamePadConfig[4][10]={
|
ButtConfig GamePadConfig[4][10]={
|
||||||
/* Gamepad 1 */
|
/* Gamepad 1 */
|
||||||
{ MK(KP3), MK(KP2), MK(TAB), MK(ENTER),
|
{ MK(KP3), MK(KP2), MK(TAB), MK(ENTER),
|
||||||
MK(W), MK(Z), MK(A), MK(S), MKZ(), MKZ() },
|
MK(W), MK(Z), MK(A), MK(S), MKZ(), MKZ() },
|
||||||
|
@ -1321,7 +1321,7 @@ DWaitButton(const uint8 *text,
|
||||||
* used as input for the specified button, thus allowing up to four
|
* used as input for the specified button, thus allowing up to four
|
||||||
* possible settings for each input button.
|
* possible settings for each input button.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
ConfigButton(char *text,
|
ConfigButton(char *text,
|
||||||
ButtConfig *bc)
|
ButtConfig *bc)
|
||||||
{
|
{
|
||||||
|
@ -1713,7 +1713,6 @@ UpdateInput(Config *config)
|
||||||
fkbmap[j].NumC = 1;
|
fkbmap[j].NumC = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Definitions from main.h:
|
// Definitions from main.h:
|
||||||
// GamePad defaults
|
// GamePad defaults
|
||||||
const char *GamePadNames[GAMEPAD_NUM_BUTTONS] =
|
const char *GamePadNames[GAMEPAD_NUM_BUTTONS] =
|
||||||
|
@ -1807,3 +1806,4 @@ const int DefaultFamilyKeyBoard[FAMILYKEYBOARD_NUM_BUTTONS] =
|
||||||
SDLK_n, SDLK_m, SDLK_COMMA, SDLK_PERIOD, SDLK_SLASH, SDLK_RALT,
|
SDLK_n, SDLK_m, SDLK_COMMA, SDLK_PERIOD, SDLK_SLASH, SDLK_RALT,
|
||||||
SDLK_RSHIFT, SDLK_LALT, SDLK_SPACE, SDLK_DELETE, SDLK_END, SDLK_PAGEDOWN,
|
SDLK_RSHIFT, SDLK_LALT, SDLK_SPACE, SDLK_DELETE, SDLK_END, SDLK_PAGEDOWN,
|
||||||
SDLK_UP, SDLK_LEFT, SDLK_RIGHT, SDLK_DOWN };
|
SDLK_UP, SDLK_LEFT, SDLK_RIGHT, SDLK_DOWN };
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@ extern CFGSTRUCT InputConfig[];
|
||||||
extern ARGPSTRUCT InputArgs[];
|
extern ARGPSTRUCT InputArgs[];
|
||||||
void ParseGIInput(FCEUGI *GI);
|
void ParseGIInput(FCEUGI *GI);
|
||||||
void setHotKeys();
|
void setHotKeys();
|
||||||
|
int ButtonConfigBegin();
|
||||||
|
void ButtonConfigEnd();
|
||||||
|
void ConfigButton(char *text, ButtConfig *bc);
|
||||||
|
|
||||||
#define BUTTC_KEYBOARD 0x00
|
#define BUTTC_KEYBOARD 0x00
|
||||||
#define BUTTC_JOYSTICK 0x01
|
#define BUTTC_JOYSTICK 0x01
|
||||||
|
@ -28,12 +31,10 @@ void setHotKeys();
|
||||||
|
|
||||||
void InitInputInterface(void);
|
void InitInputInterface(void);
|
||||||
void InputUserActiveFix(void);
|
void InputUserActiveFix(void);
|
||||||
#ifdef EXTGUI
|
|
||||||
extern ButtConfig GamePadConfig[4][10];
|
extern ButtConfig GamePadConfig[4][10];
|
||||||
extern ButtConfig powerpadsc[2][12];
|
//extern ButtConfig powerpadsc[2][12];
|
||||||
extern ButtConfig QuizKingButtons[6];
|
//extern ButtConfig QuizKingButtons[6];
|
||||||
extern ButtConfig FTrainerButtons[12];
|
//extern ButtConfig FTrainerButtons[12];
|
||||||
#endif
|
|
||||||
|
|
||||||
void IncreaseEmulationSpeed(void);
|
void IncreaseEmulationSpeed(void);
|
||||||
void DecreaseEmulationSpeed(void);
|
void DecreaseEmulationSpeed(void);
|
||||||
|
@ -45,4 +46,6 @@ void FCEUD_UpdateInput(void);
|
||||||
void UpdateInput(Config *config);
|
void UpdateInput(Config *config);
|
||||||
void InputCfg(const std::string &);
|
void InputCfg(const std::string &);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue