From 4218954fcca1237c29f0ba071a4e62d80542cd7e Mon Sep 17 00:00:00 2001 From: notaz Date: Mon, 6 Jun 2011 18:46:34 +0300 Subject: [PATCH] frontend: support some emu actions in x11 build --- frontend/plugin_lib.c | 5 +++-- frontend/xkb.c | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index c2fa1005..ee0e0868 100644 --- a/frontend/plugin_lib.c +++ b/frontend/plugin_lib.c @@ -171,8 +171,9 @@ static void update_input(void) in_keystate = actions[IN_BINDTYPE_PLAYER12]; #ifdef X11 - extern int x11_update_keys(void); - in_keystate |= x11_update_keys(); + extern int x11_update_keys(unsigned int *action); + in_keystate |= x11_update_keys(&emu_act); + emu_set_action(emu_act); #endif } diff --git a/frontend/xkb.c b/frontend/xkb.c index 7d007866..88dbc561 100644 --- a/frontend/xkb.c +++ b/frontend/xkb.c @@ -44,6 +44,11 @@ static const struct { { XK_t, DKEY_R2 }, { XK_c, DKEY_SELECT }, { XK_v, DKEY_START }, + + { XK_F6, 32 + SACTION_SAVE_STATE }, + { XK_F7, 32 + SACTION_PREV_SSLOT }, + { XK_F8, 32 + SACTION_NEXT_SSLOT }, + { XK_F9, 32 + SACTION_LOAD_STATE }, }; static Atom wmprotocols, wmdelwindow; @@ -68,7 +73,7 @@ static void DestroyKeyboard(void) { XkbSetDetectableAutoRepeat(disp, 0, NULL); } -int x11_update_keys(void) { +int x11_update_keys(unsigned int *action) { uint8_t i; XEvent evt; XClientMessageEvent *xce; @@ -100,14 +105,18 @@ int x11_update_keys(void) { } } - if (psxkey >= 0) { + if (0 <= psxkey && psxkey < 32) { if (evt.type == KeyPress) keystate_x11 |= 1 << psxkey; else keystate_x11 &= ~(1 << psxkey); } - if (evt.type == KeyPress && Key == XK_Escape) - leave = 1; + if (evt.type == KeyPress) { + if (psxkey > 32) + *action = psxkey - 32; + if (Key == XK_Escape) + leave = 1; + } break; case ClientMessage: -- 2.39.2