mirror of
https://github.com/TASEmulators/desmume
synced 2025-10-05 16:22:49 +02:00
Port commit 58bbe69
to GTK3 frontend
This commit is contained in:
@@ -53,6 +53,7 @@
|
||||
#include "movie.h"
|
||||
#include "dTool.h"
|
||||
#include "../shared/desmume_config.h"
|
||||
#include "../shared/gdksdl.cpp"
|
||||
#include "cheatsGTK.h"
|
||||
#include "frontend/modules/osd/agg/agg_osd.h"
|
||||
|
||||
@@ -2046,7 +2047,11 @@ static void Edit_Controls(GSimpleAction *action, GVariant *parameter, gpointer u
|
||||
GtkWidget *ecDialog;
|
||||
GtkWidget *ecKey;
|
||||
gchar *Key_Label;
|
||||
u32 keyboard_cfg_sdl[NB_KEYS];
|
||||
int i;
|
||||
|
||||
g_assert(sizeof(Keypad_Temp) == sizeof(keyboard_cfg) &&
|
||||
sizeof(keyboard_cfg) == sizeof(keyboard_cfg_sdl));
|
||||
|
||||
memcpy(&Keypad_Temp, &keyboard_cfg, sizeof(keyboard_cfg));
|
||||
|
||||
@@ -2069,8 +2074,17 @@ static void Edit_Controls(GSimpleAction *action, GVariant *parameter, gpointer u
|
||||
|
||||
switch (gtk_dialog_run(GTK_DIALOG(ecDialog))) {
|
||||
case GTK_RESPONSE_OK:
|
||||
memcpy(&keyboard_cfg, &Keypad_Temp, sizeof(keyboard_cfg));
|
||||
desmume_config_update_keys(keyfile);
|
||||
/* convert keycodes to SDL for the cli frontend, since it has no config menu */
|
||||
for (i = 0; i < NB_KEYS; ++i) {
|
||||
int sk = gdk_to_sdl_keycode(Keypad_Temp[i]);
|
||||
/* if we don't know the keycode, chances are that SDL knows it anyways */
|
||||
if (sk == -1) sk = (u32) Keypad_Temp[i];
|
||||
keyboard_cfg_sdl[i] = sk;
|
||||
}
|
||||
memcpy(keyboard_cfg, keyboard_cfg_sdl, sizeof(keyboard_cfg));
|
||||
desmume_config_update_keys(keyfile, "SDLKEYS");
|
||||
memcpy(keyboard_cfg, Keypad_Temp, sizeof(keyboard_cfg));
|
||||
desmume_config_update_keys(keyfile, "KEYS");
|
||||
break;
|
||||
case GTK_RESPONSE_CANCEL:
|
||||
case GTK_RESPONSE_NONE:
|
||||
|
@@ -1,6 +1,286 @@
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <SDL.h>
|
||||
|
||||
#if GTK_CHECK_VERSION(3, 0, 0)
|
||||
|
||||
int gdk_to_sdl_keycode(int gdk_key)
|
||||
{
|
||||
switch (gdk_key)
|
||||
{
|
||||
case GDK_KEY_BackSpace:
|
||||
return SDLK_BACKSPACE;
|
||||
case GDK_KEY_Tab:
|
||||
return SDLK_TAB;
|
||||
case GDK_KEY_Clear:
|
||||
return SDLK_CLEAR;
|
||||
case GDK_KEY_Return:
|
||||
return SDLK_RETURN;
|
||||
case GDK_KEY_Pause:
|
||||
return SDLK_PAUSE;
|
||||
case GDK_KEY_Escape:
|
||||
return SDLK_ESCAPE;
|
||||
case GDK_KEY_KP_Space:
|
||||
return SDLK_SPACE;
|
||||
case GDK_KEY_exclamdown:
|
||||
return SDLK_EXCLAIM;
|
||||
case GDK_KEY_quotedbl:
|
||||
return SDLK_QUOTEDBL;
|
||||
case GDK_KEY_numbersign:
|
||||
return SDLK_HASH;
|
||||
case GDK_KEY_dollar:
|
||||
return SDLK_DOLLAR;
|
||||
case GDK_KEY_ampersand:
|
||||
return SDLK_AMPERSAND;
|
||||
case GDK_KEY_quoteright:
|
||||
return SDLK_QUOTE;
|
||||
case GDK_KEY_parenleft:
|
||||
return SDLK_LEFTPAREN;
|
||||
case GDK_KEY_parenright:
|
||||
return SDLK_RIGHTPAREN;
|
||||
case GDK_KEY_asterisk:
|
||||
return SDLK_ASTERISK;
|
||||
case GDK_KEY_plus:
|
||||
return SDLK_PLUS;
|
||||
case GDK_KEY_comma:
|
||||
return SDLK_COMMA;
|
||||
case GDK_KEY_minus:
|
||||
return SDLK_MINUS;
|
||||
case GDK_KEY_period:
|
||||
return SDLK_PERIOD;
|
||||
case GDK_KEY_slash:
|
||||
return SDLK_SLASH;
|
||||
case GDK_KEY_0:
|
||||
return SDLK_0;
|
||||
case GDK_KEY_1:
|
||||
return SDLK_1;
|
||||
case GDK_KEY_2:
|
||||
return SDLK_2;
|
||||
case GDK_KEY_3:
|
||||
return SDLK_3;
|
||||
case GDK_KEY_4:
|
||||
return SDLK_4;
|
||||
case GDK_KEY_5:
|
||||
return SDLK_5;
|
||||
case GDK_KEY_6:
|
||||
return SDLK_6;
|
||||
case GDK_KEY_7:
|
||||
return SDLK_7;
|
||||
case GDK_KEY_8:
|
||||
return SDLK_8;
|
||||
case GDK_KEY_9:
|
||||
return SDLK_9;
|
||||
case GDK_KEY_colon:
|
||||
return SDLK_COLON;
|
||||
case GDK_KEY_semicolon:
|
||||
return SDLK_SEMICOLON;
|
||||
case GDK_KEY_less:
|
||||
return SDLK_LESS;
|
||||
case GDK_KEY_equal:
|
||||
return SDLK_EQUALS;
|
||||
case GDK_KEY_greater:
|
||||
return SDLK_GREATER;
|
||||
case GDK_KEY_question:
|
||||
return SDLK_QUESTION;
|
||||
case GDK_KEY_at:
|
||||
return SDLK_AT;
|
||||
case GDK_KEY_bracketleft:
|
||||
return SDLK_LEFTBRACKET;
|
||||
case GDK_KEY_backslash:
|
||||
return SDLK_BACKSLASH;
|
||||
case GDK_KEY_bracketright:
|
||||
return SDLK_RIGHTBRACKET;
|
||||
case GDK_KEY_asciicircum:
|
||||
return SDLK_CARET;
|
||||
case GDK_KEY_underscore:
|
||||
return SDLK_UNDERSCORE;
|
||||
case GDK_KEY_quoteleft:
|
||||
return SDLK_BACKQUOTE;
|
||||
case GDK_KEY_a:
|
||||
return SDLK_a;
|
||||
case GDK_KEY_b:
|
||||
return SDLK_b;
|
||||
case GDK_KEY_c:
|
||||
return SDLK_c;
|
||||
case GDK_KEY_d:
|
||||
return SDLK_d;
|
||||
case GDK_KEY_e:
|
||||
return SDLK_e;
|
||||
case GDK_KEY_f:
|
||||
return SDLK_f;
|
||||
case GDK_KEY_g:
|
||||
return SDLK_g;
|
||||
case GDK_KEY_h:
|
||||
return SDLK_h;
|
||||
case GDK_KEY_i:
|
||||
return SDLK_i;
|
||||
case GDK_KEY_j:
|
||||
return SDLK_j;
|
||||
case GDK_KEY_k:
|
||||
return SDLK_k;
|
||||
case GDK_KEY_l:
|
||||
return SDLK_l;
|
||||
case GDK_KEY_m:
|
||||
return SDLK_m;
|
||||
case GDK_KEY_n:
|
||||
return SDLK_n;
|
||||
case GDK_KEY_o:
|
||||
return SDLK_o;
|
||||
case GDK_KEY_p:
|
||||
return SDLK_p;
|
||||
case GDK_KEY_q:
|
||||
return SDLK_q;
|
||||
case GDK_KEY_r:
|
||||
return SDLK_r;
|
||||
case GDK_KEY_s:
|
||||
return SDLK_s;
|
||||
case GDK_KEY_t:
|
||||
return SDLK_t;
|
||||
case GDK_KEY_u:
|
||||
return SDLK_u;
|
||||
case GDK_KEY_v:
|
||||
return SDLK_v;
|
||||
case GDK_KEY_w:
|
||||
return SDLK_w;
|
||||
case GDK_KEY_x:
|
||||
return SDLK_x;
|
||||
case GDK_KEY_y:
|
||||
return SDLK_y;
|
||||
case GDK_KEY_z:
|
||||
return SDLK_z;
|
||||
case GDK_KEY_Delete:
|
||||
return SDLK_DELETE;
|
||||
case GDK_KEY_KP_0:
|
||||
return SDLK_KP_0;
|
||||
case GDK_KEY_KP_1:
|
||||
return SDLK_KP_1;
|
||||
case GDK_KEY_KP_2:
|
||||
return SDLK_KP_2;
|
||||
case GDK_KEY_KP_3:
|
||||
return SDLK_KP_3;
|
||||
case GDK_KEY_KP_4:
|
||||
return SDLK_KP_4;
|
||||
case GDK_KEY_KP_5:
|
||||
return SDLK_KP_5;
|
||||
case GDK_KEY_KP_6:
|
||||
return SDLK_KP_6;
|
||||
case GDK_KEY_KP_7:
|
||||
return SDLK_KP_7;
|
||||
case GDK_KEY_KP_8:
|
||||
return SDLK_KP_8;
|
||||
case GDK_KEY_KP_9:
|
||||
return SDLK_KP_9;
|
||||
case GDK_KEY_KP_Decimal:
|
||||
return SDLK_KP_PERIOD;
|
||||
case GDK_KEY_KP_Divide:
|
||||
return SDLK_KP_DIVIDE;
|
||||
case GDK_KEY_KP_Multiply:
|
||||
return SDLK_KP_MULTIPLY;
|
||||
case GDK_KEY_KP_Subtract:
|
||||
return SDLK_KP_MINUS;
|
||||
case GDK_KEY_KP_Add:
|
||||
return SDLK_KP_PLUS;
|
||||
case GDK_KEY_KP_Enter:
|
||||
return SDLK_KP_ENTER;
|
||||
case GDK_KEY_KP_Equal:
|
||||
return SDLK_KP_EQUALS;
|
||||
case GDK_KEY_Up:
|
||||
return SDLK_UP;
|
||||
case GDK_KEY_Down:
|
||||
return SDLK_DOWN;
|
||||
case GDK_KEY_Right:
|
||||
return SDLK_RIGHT;
|
||||
case GDK_KEY_Left:
|
||||
return SDLK_LEFT;
|
||||
case GDK_KEY_Insert:
|
||||
return SDLK_INSERT;
|
||||
case GDK_KEY_Home:
|
||||
return SDLK_HOME;
|
||||
case GDK_KEY_End:
|
||||
return SDLK_END;
|
||||
case GDK_KEY_Page_Up:
|
||||
return SDLK_PAGEUP;
|
||||
case GDK_KEY_Page_Down:
|
||||
return SDLK_PAGEDOWN;
|
||||
case GDK_KEY_F1:
|
||||
return SDLK_F1;
|
||||
case GDK_KEY_F2:
|
||||
return SDLK_F2;
|
||||
case GDK_KEY_F3:
|
||||
return SDLK_F3;
|
||||
case GDK_KEY_F4:
|
||||
return SDLK_F4;
|
||||
case GDK_KEY_F5:
|
||||
return SDLK_F5;
|
||||
case GDK_KEY_F6:
|
||||
return SDLK_F6;
|
||||
case GDK_KEY_F7:
|
||||
return SDLK_F7;
|
||||
case GDK_KEY_F8:
|
||||
return SDLK_F8;
|
||||
case GDK_KEY_F9:
|
||||
return SDLK_F9;
|
||||
case GDK_KEY_F10:
|
||||
return SDLK_F10;
|
||||
case GDK_KEY_F11:
|
||||
return SDLK_F11;
|
||||
case GDK_KEY_F12:
|
||||
return SDLK_F12;
|
||||
case GDK_KEY_F13:
|
||||
return SDLK_F13;
|
||||
case GDK_KEY_F14:
|
||||
return SDLK_F14;
|
||||
case GDK_KEY_F15:
|
||||
return SDLK_F15;
|
||||
case GDK_KEY_Num_Lock:
|
||||
return SDLK_NUMLOCKCLEAR;
|
||||
case GDK_KEY_Caps_Lock:
|
||||
return SDLK_CAPSLOCK;
|
||||
case GDK_KEY_Scroll_Lock:
|
||||
return SDLK_SCROLLLOCK;
|
||||
case GDK_KEY_Shift_R:
|
||||
return SDLK_RSHIFT;
|
||||
case GDK_KEY_Shift_L:
|
||||
return SDLK_LSHIFT;
|
||||
case GDK_KEY_Control_R:
|
||||
return SDLK_RCTRL;
|
||||
case GDK_KEY_Control_L:
|
||||
return SDLK_LCTRL;
|
||||
case GDK_KEY_Alt_R:
|
||||
return SDLK_RALT;
|
||||
case GDK_KEY_Alt_L:
|
||||
return SDLK_LALT;
|
||||
case GDK_KEY_Meta_R:
|
||||
return SDLK_RGUI;
|
||||
case GDK_KEY_Meta_L:
|
||||
return SDLK_LGUI;
|
||||
case GDK_KEY_Super_L:
|
||||
return SDLK_LGUI;
|
||||
case GDK_KEY_Super_R:
|
||||
return SDLK_RGUI;
|
||||
case GDK_KEY_Mode_switch:
|
||||
return SDLK_MODE;
|
||||
|
||||
|
||||
case GDK_KEY_Help:
|
||||
return SDLK_HELP;
|
||||
case GDK_KEY_Print:
|
||||
return SDLK_PRINTSCREEN;
|
||||
case GDK_KEY_Sys_Req:
|
||||
return SDLK_SYSREQ;
|
||||
case GDK_KEY_Break:
|
||||
return SDLK_PAUSE;
|
||||
case GDK_KEY_Menu:
|
||||
return SDLK_MENU;
|
||||
|
||||
default:
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int gdk_to_sdl_keycode(int gdk_key)
|
||||
{
|
||||
switch (gdk_key)
|
||||
@@ -276,3 +556,4 @@ int gdk_to_sdl_keycode(int gdk_key)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user