X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvideo%2Fomapdss%2Fosdl_input.c;h=94994d1f89ced1eb40962e20ab160bbcabaf9092;hb=b260fb56d8eb049e5dce95a92b5c1189ea29f8b4;hp=b020875dd374c7ac1e6ccf027df4fb264d4c4a23;hpb=e1837b2c78d48d2811ff77e8702810b7620dd4f8;p=sdl_omap.git diff --git a/src/video/omapdss/osdl_input.c b/src/video/omapdss/osdl_input.c index b020875..94994d1 100644 --- a/src/video/omapdss/osdl_input.c +++ b/src/video/omapdss/osdl_input.c @@ -1,5 +1,5 @@ /* - * (C) Gražvydas "notaz" Ignotas, 2010 + * (C) Gražvydas "notaz" Ignotas, 2010-2012 * * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. * See the COPYING file in the top-level directory. @@ -559,7 +559,7 @@ void omapsdl_input_finish(void) } int omapsdl_input_get_events(int timeout_ms, - int (*key_cb)(void *cb_arg, int sdl_kc, int is_pressed), + int (*key_cb)(void *cb_arg, int sdl_kc, int sdl_sc, int is_pressed), int (*ts_cb)(void *cb_arg, int x, int y, unsigned int pressure), void *cb_arg) { @@ -634,7 +634,8 @@ int omapsdl_input_get_events(int timeout_ms, sdl_kc = osdl_evdev_map[ev.code]; if (sdl_kc == 0) continue; /* not mapped */ - ret = key_cb(cb_arg, sdl_kc, ev.value); + /* scancode note: stock SDL doesn't do +8 in fbcon driver */ + ret = key_cb(cb_arg, sdl_kc, ev.code + 8, ev.value); if (ret != 0) return ret; } @@ -649,13 +650,15 @@ static unsigned char g_keystate[SDLK_LAST]; struct key_event { int sdl_kc; + int sdl_sc; int is_pressed; }; -static int do_key_cb(void *cb_arg, int sdl_kc, int is_pressed) +static int do_key_cb(void *cb_arg, int sdl_kc, int sdl_sc, int is_pressed) { struct key_event *ev = cb_arg; ev->sdl_kc = sdl_kc; + ev->sdl_sc = sdl_sc; ev->is_pressed = is_pressed; return 1; /* done */ @@ -680,6 +683,7 @@ static int do_event(SDL_Event *event, int timeout) // event->key.which = event->key.state = ev.is_pressed ? SDL_PRESSED : SDL_RELEASED; event->key.keysym.sym = ev.sdl_kc; + event->key.keysym.scancode = ev.sdl_sc; // event->key.keysym.mod return 1;