summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/sdl/key_to_touch-sdl.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-07-06 15:11:56 +0000
committerThomas Martitz <kugel@rockbox.org>2010-07-06 15:11:56 +0000
commit31b5c471aeec6040ca69e3bea59c0825e2a6fc9d (patch)
tree628d7638a50ab226d5164f495d14d56ed2b51a1f /firmware/target/hosted/sdl/key_to_touch-sdl.c
parent9da707955dcdefa1b7a55348937eb706a08039b5 (diff)
Rockbox as an application: Add an 320x240 SDL application target.
It still works mostly like the simulator. There's also some minor left overs from the sim, but it does not define SIMULATOR. It installs into the current (build) dir, and you need to run it with '--root .' (because it looks for ./.rockbox and not ./simdisk/rockbox) as options. That's one of the few kludges left that should be resolved soon'ish. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27310 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/hosted/sdl/key_to_touch-sdl.c')
-rw-r--r--firmware/target/hosted/sdl/key_to_touch-sdl.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/firmware/target/hosted/sdl/key_to_touch-sdl.c b/firmware/target/hosted/sdl/key_to_touch-sdl.c
new file mode 100644
index 0000000000..90518c7c7e
--- /dev/null
+++ b/firmware/target/hosted/sdl/key_to_touch-sdl.c
@@ -0,0 +1,96 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2008 Jonathan Gordon
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+
+#include <stdio.h>
+#include <SDL.h>
+#include "button.h"
+#include "buttonmap.h"
+#include "touchscreen.h"
+
+int key_to_touch(int keyboard_button, unsigned int mouse_coords)
+{
+ int new_btn = BUTTON_NONE;
+ switch (keyboard_button)
+ {
+ case BUTTON_TOUCHSCREEN:
+ switch (touchscreen_get_mode())
+ {
+ case TOUCHSCREEN_POINT:
+ new_btn = BUTTON_TOUCHSCREEN;
+ break;
+ case TOUCHSCREEN_BUTTON:
+ {
+ static const int touchscreen_buttons[3][3] = {
+ {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT},
+ {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT},
+ {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT},
+ };
+ int px_x = ((mouse_coords&0xffff0000)>>16);
+ int px_y = ((mouse_coords&0x0000ffff));
+ new_btn = touchscreen_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)];
+ break;
+ }
+ }
+ break;
+ case SDLK_KP7:
+ case SDLK_7:
+ new_btn = BUTTON_TOPLEFT;
+ break;
+ case SDLK_KP8:
+ case SDLK_8:
+ case SDLK_UP:
+ new_btn = BUTTON_TOPMIDDLE;
+ break;
+ case SDLK_KP9:
+ case SDLK_9:
+ new_btn = BUTTON_TOPRIGHT;
+ break;
+ case SDLK_KP4:
+ case SDLK_u:
+ case SDLK_LEFT:
+ new_btn = BUTTON_MIDLEFT;
+ break;
+ case SDLK_KP5:
+ case SDLK_i:
+ new_btn = BUTTON_CENTER;
+ break;
+ case SDLK_KP6:
+ case SDLK_o:
+ case SDLK_RIGHT:
+ new_btn = BUTTON_MIDRIGHT;
+ break;
+ case SDLK_KP1:
+ case SDLK_j:
+ new_btn = BUTTON_BOTTOMLEFT;
+ break;
+ case SDLK_KP2:
+ case SDLK_k:
+ case SDLK_DOWN:
+ new_btn = BUTTON_BOTTOMMIDDLE;
+ break;
+ case SDLK_KP3:
+ case SDLK_l:
+ new_btn = BUTTON_BOTTOMRIGHT;
+ break;
+ }
+ return new_btn;
+}