From 9682c8870b8ff5e4ac2e4c70b759f791c6f38c1f Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Mon, 9 Jul 2012 11:27:07 -0700 Subject: Import SDL release-1.2.15 Change-Id: I505c4aea24325cad475f217db5589814b4c75dbf --- distrib/sdl-1.2.15/src/video/svga/SDL_svgaevents.c | 412 +++++++++++++++++++++ 1 file changed, 412 insertions(+) create mode 100644 distrib/sdl-1.2.15/src/video/svga/SDL_svgaevents.c (limited to 'distrib/sdl-1.2.15/src/video/svga/SDL_svgaevents.c') diff --git a/distrib/sdl-1.2.15/src/video/svga/SDL_svgaevents.c b/distrib/sdl-1.2.15/src/video/svga/SDL_svgaevents.c new file mode 100644 index 0000000..107a702 --- /dev/null +++ b/distrib/sdl-1.2.15/src/video/svga/SDL_svgaevents.c @@ -0,0 +1,412 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +/* Handle the event stream, converting X11 events into SDL events */ + +#include +#include +#include +#if defined(__LINUX__) +#include +#include +#elif defined(__FREEBSD__) +#include +#else +#error You must choose your operating system here +#endif + +#include "../../events/SDL_sysevents.h" +#include "../../events/SDL_events_c.h" +#include "SDL_svgavideo.h" +#include "SDL_svgaevents_c.h" + +/* The translation tables from a console scancode to a SDL keysym */ +#if defined(linux) +#define NUM_VGAKEYMAPS (1<scancode = scancode; + keysym->sym = keymap[scancode]; + keysym->mod = KMOD_NONE; + + /* If UNICODE is on, get the UNICODE value for the key */ + keysym->unicode = 0; + if ( SDL_TranslateUNICODE ) { + int map; + SDLMod modstate; + + modstate = SDL_GetModState(); + map = 0; + if ( modstate & KMOD_SHIFT ) { + map |= (1<unicode=KVAL(vga_keymap[map][scancode]); + } + } else { + keysym->unicode = KVAL(vga_keymap[map][scancode]); + } + } + return(keysym); +} +#elif defined(__FREEBSD__) +static SDL_keysym *TranslateKey(int scancode, SDL_keysym *keysym) +{ + /* Set the keysym information */ + keysym->scancode = scancode; + keysym->sym = keymap[scancode]; + keysym->mod = KMOD_NONE; + + /* If UNICODE is on, get the UNICODE value for the key */ + keysym->unicode = 0; + if ( SDL_TranslateUNICODE && vga_keymap ) { + int map; + SDLMod modstate; + + modstate = SDL_GetModState(); + map = 0; + if ( modstate & KMOD_SHIFT ) { + map += 1; + } + if ( modstate & KMOD_CTRL ) { + map += 2; + } + if ( modstate & KMOD_ALT ) { + map += 4; + } + if ( !(vga_keymap->key[scancode].spcl & (0x80 >> map)) ) { + keysym->unicode = vga_keymap->key[scancode].map[map]; + } + + } + return(keysym); +} +#else +#error You must choose your operating system here +#endif -- cgit v1.1