From 607f8e1d1cb814b2b36c0ce05d9a2980fee0487b Mon Sep 17 00:00:00 2001 From: helixhorned Date: Sun, 9 Aug 2015 09:58:45 +0000 Subject: [PATCH] SDL2 layer: handle all Ctrl+[A-Z] keys passed to OSD_HandleChar(). See that function for a list of what these do in the OSD. git-svn-id: https://svn.eduke32.com/eduke32@5324 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/build/src/sdlayer.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/polymer/eduke32/build/src/sdlayer.c b/polymer/eduke32/build/src/sdlayer.c index f14a4b01a..df939d8f5 100644 --- a/polymer/eduke32/build/src/sdlayer.c +++ b/polymer/eduke32/build/src/sdlayer.c @@ -2029,33 +2029,27 @@ int32_t handleevents_pollsdl(void) case SDL_KEYDOWN: case SDL_KEYUP: - code = keytranslation[ev.key.keysym.scancode]; + { + const SDL_Scancode sc = ev.key.keysym.scancode; + code = keytranslation[sc]; // XXX: see osd.c, OSD_HandleChar(), there are more... if (ev.key.type == SDL_KEYDOWN && !keyascfifo_isfull() && - (ev.key.keysym.scancode == SDL_SCANCODE_RETURN || - ev.key.keysym.scancode == SDL_SCANCODE_KP_ENTER || - ev.key.keysym.scancode == SDL_SCANCODE_ESCAPE || - ev.key.keysym.scancode == SDL_SCANCODE_BACKSPACE || - ev.key.keysym.scancode == SDL_SCANCODE_TAB || - (ev.key.keysym.mod==KMOD_LCTRL && - (ev.key.keysym.scancode == SDL_SCANCODE_F || - ev.key.keysym.scancode == SDL_SCANCODE_G || - ev.key.keysym.scancode == SDL_SCANCODE_K || - ev.key.keysym.scancode == SDL_SCANCODE_U)))) + (sc == SDL_SCANCODE_RETURN || sc == SDL_SCANCODE_KP_ENTER || + sc == SDL_SCANCODE_ESCAPE || + sc == SDL_SCANCODE_BACKSPACE || + sc == SDL_SCANCODE_TAB || + (ev.key.keysym.mod==KMOD_LCTRL && + (sc >= SDL_SCANCODE_A && sc <= SDL_SCANCODE_Z)))) { char keyvalue; - switch (ev.key.keysym.scancode) + switch (sc) { case SDL_SCANCODE_RETURN: case SDL_SCANCODE_KP_ENTER: keyvalue = '\r'; break; case SDL_SCANCODE_ESCAPE: keyvalue = 27; break; case SDL_SCANCODE_BACKSPACE: keyvalue = '\b'; break; case SDL_SCANCODE_TAB: keyvalue = '\t'; break; - case SDL_SCANCODE_F: keyvalue = 6; break; - case SDL_SCANCODE_G: keyvalue = 7; break; - case SDL_SCANCODE_K: keyvalue = 11; break; - case SDL_SCANCODE_U: keyvalue = 21; break; - default: keyvalue = 0; break; + default: keyvalue = sc - SDL_SCANCODE_A + 1; break; // Ctrl+A --> 1, etc. } if (OSD_HandleChar(keyvalue)) keyascfifo_insert(keyvalue); @@ -2100,6 +2094,7 @@ int32_t handleevents_pollsdl(void) keypresscallback(code, 0); } break; + } case SDL_MOUSEWHEEL: // initprintf("wheel y %d\n",ev.wheel.y);