cSDL/src/video/prizm/SDL_prizmevents.c

247 lines
8.6 KiB
C

/*
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"
#include "SDL.h"
#include "../../events/SDL_sysevents.h"
#include "../../events/SDL_events_c.h"
#include "../SDL_cursor_c.h"
#include <gint/keyboard.h>
#include "SDL_prizmvideo.h"
#include "SDL_prizmevents_c.h"
static int przk_keymap[PRZ_NUMKEYS];
static SDLKey sdlk_keymap[PRZ_NUMKEYS];
static Uint8 key_state[PRZ_NUMKEYS];
static SDLKey sdlak_keymap[4] = {SDLK_UP, SDLK_RIGHT, SDLK_DOWN, SDLK_LEFT};
static Uint8 arrow_key_state[4];
bool keystatus( int keycode )
{
if (keydown( keycode) !=0 ) return true;
else return false;
}
static void PRZ_update_keyboard(void)
{
clearevents();
bool key_pressed[PRZ_NUMKEYS];
for ( int i = 0; i < PRZ_NUMKEYS; ++i )
{
key_pressed[i] = keystatus( przk_keymap[i] );
if ( sdlk_keymap[i] != SDLK_UNKNOWN )
PRZ_UPDATE_KEY_EVENT(sdlk_keymap[i], i, key_state[i], key_pressed[i]);
}
}
static void PRZ_update_arrow_keys(void)
{
clearevents();
bool arrow_key_pressed[4] = { keystatus(KEY_UP), keystatus(KEY_RIGHT), keystatus(KEY_DOWN), keystatus(KEY_LEFT) };
for ( int i = 0; i < 4; ++i )
PRZ_UPDATE_KEY_EVENT(sdlak_keymap[i], i, arrow_key_state[i], arrow_key_pressed[i]);
}
void PRZ_PumpEvents(_THIS)
{
PRZ_update_keyboard();
//PRZ_update_arrow_keys();
}
void PRZ_InitOSKeymap(_THIS)
{
/* Enum value -> KEY_NSPIRE_* */
przk_keymap[ PRZ_KEY_F1 ]= KEY_F1 ;
przk_keymap[ PRZ_KEY_F2 ]= KEY_F2 ;
przk_keymap[ PRZ_KEY_F3 ]= KEY_F3 ;
przk_keymap[ PRZ_KEY_F4 ]= KEY_F4 ;
przk_keymap[ PRZ_KEY_F5 ]= KEY_F5 ;
przk_keymap[ PRZ_KEY_F6 ]= KEY_F6 ;
przk_keymap[ PRZ_KEY_SHIFT ]= KEY_SHIFT ;
przk_keymap[ PRZ_KEY_OPTN ]= KEY_OPTN ;
przk_keymap[ PRZ_KEY_VARS ]= KEY_VARS ;
przk_keymap[ PRZ_KEY_MENU ]= KEY_MENU ;
przk_keymap[ PRZ_KEY_LEFT ]= KEY_LEFT ;
przk_keymap[ PRZ_KEY_UP ]= KEY_UP ;
przk_keymap[ PRZ_KEY_ALPHA ]= KEY_ALPHA ;
przk_keymap[ PRZ_KEY_SQUARE ]= KEY_SQUARE ;
przk_keymap[ PRZ_KEY_POWER ]= KEY_POWER ;
przk_keymap[ PRZ_KEY_EXIT ]= KEY_EXIT ;
przk_keymap[ PRZ_KEY_DOWN ]= KEY_DOWN ;
przk_keymap[ PRZ_KEY_RIGHT ]= KEY_RIGHT ;
przk_keymap[ PRZ_KEY_XOT ]= KEY_XOT ;
przk_keymap[ PRZ_KEY_LOG ]= KEY_LOG ;
przk_keymap[ PRZ_KEY_LN ]= KEY_LN ;
przk_keymap[ PRZ_KEY_SIN ]= KEY_SIN ;
przk_keymap[ PRZ_KEY_COS ]= KEY_COS ;
przk_keymap[ PRZ_KEY_TAN ]= KEY_TAN ;
przk_keymap[ PRZ_KEY_FRAC ]= KEY_FRAC ;
przk_keymap[ PRZ_KEY_FD ]= KEY_FD ;
przk_keymap[ PRZ_KEY_LEFTP ]= KEY_LEFTP ;
przk_keymap[ PRZ_KEY_RIGHTP ]= KEY_RIGHTP ;
przk_keymap[ PRZ_KEY_COMMA ]= KEY_COMMA ;
przk_keymap[ PRZ_KEY_ARROW ]= KEY_ARROW ;
przk_keymap[ PRZ_KEY_7 ]= KEY_7 ;
przk_keymap[ PRZ_KEY_8 ]= KEY_8 ;
przk_keymap[ PRZ_KEY_9 ]= KEY_9 ;
przk_keymap[ PRZ_KEY_DEL ]= KEY_DEL ;
przk_keymap[ PRZ_KEY_4 ]= KEY_4 ;
przk_keymap[ PRZ_KEY_5 ]= KEY_5 ;
przk_keymap[ PRZ_KEY_6 ]= KEY_6 ;
przk_keymap[ PRZ_KEY_MUL ]= KEY_MUL ;
przk_keymap[ PRZ_KEY_DIV ]= KEY_DIV ;
przk_keymap[ PRZ_KEY_1 ]= KEY_1 ;
przk_keymap[ PRZ_KEY_2 ]= KEY_2 ;
przk_keymap[ PRZ_KEY_3 ]= KEY_3 ;
przk_keymap[ PRZ_KEY_ADD ]= KEY_ADD ;
przk_keymap[ PRZ_KEY_SUB ]= KEY_SUB ;
przk_keymap[ PRZ_KEY_0 ]= KEY_0 ;
przk_keymap[ PRZ_KEY_DOT ]= KEY_DOT ;
przk_keymap[ PRZ_KEY_EXP ]= KEY_EXP ;
przk_keymap[ PRZ_KEY_NEG ]= KEY_NEG ;
przk_keymap[ PRZ_KEY_EXE ]= KEY_EXE ;
przk_keymap[ PRZ_KEY_ACON ]= KEY_ACON ;
/* Enum value -> SDLK_*
This is the actual key mapping part. */
/*sdlk_keymap[ PRZ_KEY_F1 ]= SDLK_F1 ;
sdlk_keymap[ PRZ_KEY_F2 ]= SDLK_F2 ;
sdlk_keymap[ PRZ_KEY_F3 ]= SDLK_F3 ;
sdlk_keymap[ PRZ_KEY_F4 ]= SDLK_F4 ;
sdlk_keymap[ PRZ_KEY_F5 ]= SDLK_F5 ;
sdlk_keymap[ PRZ_KEY_F6 ]= SDLK_F6 ;
sdlk_keymap[ PRZ_KEY_SHIFT ]= SDLK_LSHIFT ;
sdlk_keymap[ PRZ_KEY_OPTN ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_VARS ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_MENU ]= SDLK_MENU ;
sdlk_keymap[ PRZ_KEY_LEFT ]= SDLK_LEFT ;
sdlk_keymap[ PRZ_KEY_UP ]= SDLK_UP ;
sdlk_keymap[ PRZ_KEY_ALPHA ]= SDLK_CAPSLOCK ;
sdlk_keymap[ PRZ_KEY_SQUARE ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_POWER ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_EXIT ]= SDLK_ESCAPE ;
sdlk_keymap[ PRZ_KEY_DOWN ]= SDLK_DOWN ;
sdlk_keymap[ PRZ_KEY_RIGHT ]= SDLK_RIGHT ;
sdlk_keymap[ PRZ_KEY_XOT ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_LOG ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_LN ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_SIN ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_COS ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_TAN ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_FRAC ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_FD ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_LEFTP ]= SDLK_LEFTPAREN ;
sdlk_keymap[ PRZ_KEY_RIGHTP ]= SDLK_RIGHTPAREN ;
sdlk_keymap[ PRZ_KEY_COMMA ]= SDLK_COMMA ;
sdlk_keymap[ PRZ_KEY_ARROW ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_7 ]= SDLK_KP7 ;
sdlk_keymap[ PRZ_KEY_8 ]= SDLK_KP8 ;
sdlk_keymap[ PRZ_KEY_9 ]= SDLK_KP9 ;
sdlk_keymap[ PRZ_KEY_DEL ]= SDLK_DELETE ;
sdlk_keymap[ PRZ_KEY_4 ]= SDLK_KP4 ;
sdlk_keymap[ PRZ_KEY_5 ]= SDLK_KP5 ;
sdlk_keymap[ PRZ_KEY_6 ]= SDLK_KP6 ;
sdlk_keymap[ PRZ_KEY_MUL ]= SDLK_KP_MULTIPLY ;
sdlk_keymap[ PRZ_KEY_DIV ]= SDLK_KP_DIVIDE ;
sdlk_keymap[ PRZ_KEY_1 ]= SDLK_KP1 ;
sdlk_keymap[ PRZ_KEY_2 ]= SDLK_KP2 ;
sdlk_keymap[ PRZ_KEY_3 ]= SDLK_KP3 ;
sdlk_keymap[ PRZ_KEY_ADD ]= SDLK_KP_PLUS ;
sdlk_keymap[ PRZ_KEY_SUB ]= SDLK_KP_MINUS ;
sdlk_keymap[ PRZ_KEY_0 ]= SDLK_KP0 ;
sdlk_keymap[ PRZ_KEY_DOT ]= SDLK_KP_PERIOD ;
sdlk_keymap[ PRZ_KEY_EXP ]= SDLK_UNKNOWN ;
sdlk_keymap[ PRZ_KEY_NEG ]= SDLK_MINUS ;
sdlk_keymap[ PRZ_KEY_EXE ]= SDLK_RETURN ;
sdlk_keymap[ PRZ_KEY_ACON ]= SDLK_POWER ;
*/
sdlk_keymap[ PRZ_KEY_F1 ]=SDLK_PRZ_KEY_F1 ;
sdlk_keymap[ PRZ_KEY_F2 ]=SDLK_PRZ_KEY_F2 ;
sdlk_keymap[ PRZ_KEY_F3 ]=SDLK_PRZ_KEY_F3 ;
sdlk_keymap[ PRZ_KEY_F4 ]=SDLK_PRZ_KEY_F4 ;
sdlk_keymap[ PRZ_KEY_F5 ]=SDLK_PRZ_KEY_F5 ;
sdlk_keymap[ PRZ_KEY_F6 ]=SDLK_PRZ_KEY_F6 ;
sdlk_keymap[ PRZ_KEY_SHIFT ]=SDLK_PRZ_KEY_SHIFT ;
sdlk_keymap[ PRZ_KEY_OPTN ]=SDLK_PRZ_KEY_OPTN ;
sdlk_keymap[ PRZ_KEY_VARS ]=SDLK_PRZ_KEY_VARS ;
sdlk_keymap[ PRZ_KEY_MENU ]=SDLK_PRZ_KEY_MENU ;
sdlk_keymap[ PRZ_KEY_LEFT ]=SDLK_PRZ_KEY_LEFT ;
sdlk_keymap[ PRZ_KEY_UP ]=SDLK_PRZ_KEY_UP ;
sdlk_keymap[ PRZ_KEY_ALPHA ]=SDLK_PRZ_KEY_ALPHA ;
sdlk_keymap[ PRZ_KEY_SQUARE ]=SDLK_PRZ_KEY_SQUARE ;
sdlk_keymap[ PRZ_KEY_POWER ]=SDLK_PRZ_KEY_POWER ;
sdlk_keymap[ PRZ_KEY_EXIT ]=SDLK_PRZ_KEY_EXIT ;
sdlk_keymap[ PRZ_KEY_DOWN ]=SDLK_PRZ_KEY_DOWN ;
sdlk_keymap[ PRZ_KEY_RIGHT ]=SDLK_PRZ_KEY_RIGHT ;
sdlk_keymap[ PRZ_KEY_XOT ]=SDLK_PRZ_KEY_XOT ;
sdlk_keymap[ PRZ_KEY_LOG ]=SDLK_PRZ_KEY_LOG ;
sdlk_keymap[ PRZ_KEY_LN ]=SDLK_PRZ_KEY_LN ;
sdlk_keymap[ PRZ_KEY_SIN ]=SDLK_PRZ_KEY_SIN ;
sdlk_keymap[ PRZ_KEY_COS ]=SDLK_PRZ_KEY_COS ;
sdlk_keymap[ PRZ_KEY_TAN ]=SDLK_PRZ_KEY_TAN ;
sdlk_keymap[ PRZ_KEY_FRAC ]=SDLK_PRZ_KEY_FRAC ;
sdlk_keymap[ PRZ_KEY_FD ]=SDLK_PRZ_KEY_FD ;
sdlk_keymap[ PRZ_KEY_LEFTP ]=SDLK_PRZ_KEY_LEFTP ;
sdlk_keymap[ PRZ_KEY_RIGHTP ]=SDLK_PRZ_KEY_RIGHTP ;
sdlk_keymap[ PRZ_KEY_COMMA ]=SDLK_PRZ_KEY_COMMA ;
sdlk_keymap[ PRZ_KEY_ARROW ]=SDLK_PRZ_KEY_ARROW ;
sdlk_keymap[ PRZ_KEY_7 ]=SDLK_PRZ_KEY_7 ;
sdlk_keymap[ PRZ_KEY_8 ]=SDLK_PRZ_KEY_8 ;
sdlk_keymap[ PRZ_KEY_9 ]=SDLK_PRZ_KEY_9 ;
sdlk_keymap[ PRZ_KEY_DEL ]=SDLK_PRZ_KEY_DEL ;
sdlk_keymap[ PRZ_KEY_4 ]=SDLK_PRZ_KEY_4 ;
sdlk_keymap[ PRZ_KEY_5 ]=SDLK_PRZ_KEY_5 ;
sdlk_keymap[ PRZ_KEY_6 ]=SDLK_PRZ_KEY_6 ;
sdlk_keymap[ PRZ_KEY_MUL ]=SDLK_PRZ_KEY_MUL ;
sdlk_keymap[ PRZ_KEY_DIV ]=SDLK_PRZ_KEY_DIV ;
sdlk_keymap[ PRZ_KEY_1 ]=SDLK_PRZ_KEY_1 ;
sdlk_keymap[ PRZ_KEY_2 ]=SDLK_PRZ_KEY_2 ;
sdlk_keymap[ PRZ_KEY_3 ]=SDLK_PRZ_KEY_3 ;
sdlk_keymap[ PRZ_KEY_ADD ]=SDLK_PRZ_KEY_ADD ;
sdlk_keymap[ PRZ_KEY_SUB ]=SDLK_PRZ_KEY_SUB ;
sdlk_keymap[ PRZ_KEY_0 ]=SDLK_PRZ_KEY_0 ;
sdlk_keymap[ PRZ_KEY_DOT ]=SDLK_PRZ_KEY_DOT ;
sdlk_keymap[ PRZ_KEY_EXP ]=SDLK_PRZ_KEY_EXP ;
sdlk_keymap[ PRZ_KEY_NEG ]=SDLK_PRZ_KEY_NEG ;
sdlk_keymap[ PRZ_KEY_EXE ]=SDLK_PRZ_KEY_EXE ;
sdlk_keymap[ PRZ_KEY_ACON ]=SDLK_PRZ_KEY_ACON ;
}
/* end of SDL_tinspireevents.c ... */