projects
/
laserbrain_demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
adding exhibit data, starting with descriptions
[laserbrain_demo]
/
src
/
main.cc
diff --git
a/src/main.cc
b/src/main.cc
index
d24428c
..
c497dc1
100644
(file)
--- a/
src/main.cc
+++ b/
src/main.cc
@@
-8,6
+8,7
@@
static bool init(int argc, char **argv);
static void process_event(SDL_Event *ev);
static void proc_modkeys();
static bool init(int argc, char **argv);
static void process_event(SDL_Event *ev);
static void proc_modkeys();
+static int translate_keysym(SDL_Keycode sym);
static SDL_Window *win;
static SDL_GLContext ctx;
static SDL_Window *win;
static SDL_GLContext ctx;
@@
-165,6
+166,8
@@
static bool init(int argc, char **argv)
static void process_event(SDL_Event *ev)
{
static void process_event(SDL_Event *ev)
{
+ int key;
+
switch(ev->type) {
case SDL_QUIT:
quit = true;
switch(ev->type) {
case SDL_QUIT:
quit = true;
@@
-173,7
+176,9
@@
static void process_event(SDL_Event *ev)
case SDL_KEYDOWN:
case SDL_KEYUP:
proc_modkeys();
case SDL_KEYDOWN:
case SDL_KEYUP:
proc_modkeys();
- app_keyboard(ev->key.keysym.sym, ev->key.state == SDL_PRESSED);
+ if((key = translate_keysym(ev->key.keysym.sym)) != -1) {
+ app_keyboard(key, ev->key.state == SDL_PRESSED);
+ }
break;
case SDL_MOUSEBUTTONDOWN:
break;
case SDL_MOUSEBUTTONDOWN:
@@
-191,6
+196,10
@@
static void process_event(SDL_Event *ev)
}
break;
}
break;
+ case SDL_MOUSEWHEEL:
+ app_mouse_wheel(ev->wheel.y);
+ break;
+
case SDL_WINDOWEVENT:
if(ev->window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
SDL_GL_GetDrawableSize(win, &win_width, &win_height);
case SDL_WINDOWEVENT:
if(ev->window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
SDL_GL_GetDrawableSize(win, &win_width, &win_height);
@@
-225,3
+234,39
@@
static void proc_modkeys()
modkeys |= MOD_CTRL;
}
}
modkeys |= MOD_CTRL;
}
}
+
+static int translate_keysym(SDL_Keycode sym)
+{
+ switch(sym) {
+ case SDLK_RETURN:
+ return '\n';
+ case SDLK_DELETE:
+ return KEY_DEL;
+ case SDLK_LEFT:
+ return KEY_LEFT;
+ case SDLK_RIGHT:
+ return KEY_RIGHT;
+ case SDLK_UP:
+ return KEY_UP;
+ case SDLK_DOWN:
+ return KEY_DOWN;
+ case SDLK_PAGEUP:
+ return KEY_PGUP;
+ case SDLK_PAGEDOWN:
+ return KEY_PGDOWN;
+ case SDLK_HOME:
+ return KEY_HOME;
+ case SDLK_END:
+ return KEY_END;
+ default:
+ break;
+ }
+
+ if(sym < 127) {
+ return sym;
+ }
+ if(sym >= SDLK_F1 && sym <= SDLK_F12) {
+ return KEY_F1 + sym - SDLK_F1;
+ }
+ return -1;
+}