commit
00ecf2f1ce
|
@ -120,7 +120,7 @@ void input_sdl_init()
|
|||
|
||||
void input_sdl_handle(u32 port)
|
||||
{
|
||||
static int keys[13];
|
||||
#define SET_FLAG(field, mask, expr) field =((expr) ? (field & ~mask) : (field | mask))
|
||||
static int mouse_use = 0;
|
||||
SDL_Event event;
|
||||
int k, value;
|
||||
|
@ -131,30 +131,59 @@ void input_sdl_handle(u32 port)
|
|||
switch (event.type)
|
||||
{
|
||||
case SDL_QUIT:
|
||||
die("death by SDL request");
|
||||
dc_stop();
|
||||
break;
|
||||
case SDL_KEYDOWN:
|
||||
case SDL_KEYUP:
|
||||
k = event.key.keysym.sym;
|
||||
value = (event.type == SDL_KEYDOWN) ? 1 : 0;
|
||||
//printf("type %i key %i \n", event.type, k);
|
||||
printf("type %i key %i \n", event.type, k);
|
||||
switch (k) {
|
||||
//TODO: Better keymaps for non-pandora platforms
|
||||
case SDLK_SPACE: keys[0] = value; break;
|
||||
case SDLK_UP: keys[1] = value; break;
|
||||
case SDLK_DOWN: keys[2] = value; break;
|
||||
case SDLK_LEFT: keys[3] = value; break;
|
||||
case SDLK_RIGHT: keys[4] = value; break;
|
||||
case SDLK_PAGEUP: keys[5] = value; break;
|
||||
case SDLK_PAGEDOWN: keys[6] = value; break;
|
||||
case SDLK_END: keys[7] = value; break;
|
||||
case SDLK_HOME: keys[8] = value; break;
|
||||
case SDLK_SPACE:
|
||||
SET_FLAG(kcode[port], DC_BTN_C, value);
|
||||
break;
|
||||
case SDLK_UP:
|
||||
SET_FLAG(kcode[port], DC_DPAD_UP, value);
|
||||
break;
|
||||
case SDLK_DOWN:
|
||||
SET_FLAG(kcode[port], DC_DPAD_DOWN, value);
|
||||
break;
|
||||
case SDLK_LEFT:
|
||||
SET_FLAG(kcode[port], DC_DPAD_LEFT, value);
|
||||
break;
|
||||
case SDLK_RIGHT:
|
||||
SET_FLAG(kcode[port], DC_DPAD_RIGHT, value);
|
||||
break;
|
||||
case SDLK_PAGEUP:
|
||||
SET_FLAG(kcode[port], DC_BTN_Y, value);
|
||||
break;
|
||||
case SDLK_PAGEDOWN:
|
||||
SET_FLAG(kcode[port], DC_BTN_A, value);
|
||||
break;
|
||||
case SDLK_END:
|
||||
SET_FLAG(kcode[port], DC_BTN_B, value);
|
||||
break;
|
||||
case SDLK_HOME:
|
||||
SET_FLAG(kcode[port], DC_BTN_X, value);
|
||||
break;
|
||||
case SDLK_MENU:
|
||||
case SDLK_ESCAPE: keys[9] = value; break;
|
||||
case SDLK_RSHIFT: keys[11] = value; break;
|
||||
case SDLK_RCTRL: keys[10] = value; break;
|
||||
case SDLK_LALT: keys[12] = value; break;
|
||||
case SDLK_k: KillTex = true; break;
|
||||
case SDLK_ESCAPE:
|
||||
dc_stop();
|
||||
break;
|
||||
case SDLK_RSHIFT:
|
||||
lt[port] = (value ? 255 : 0);
|
||||
break;
|
||||
case SDLK_RCTRL:
|
||||
rt[port] = (value ? 255 : 0);;
|
||||
break;
|
||||
case SDLK_LALT:
|
||||
SET_FLAG(kcode[port], DC_BTN_START, value);
|
||||
break;
|
||||
case SDLK_k:
|
||||
SET_FLAG(kcode[port], DC_BTN_A, value);
|
||||
break;
|
||||
|
||||
#if defined(TARGET_PANDORA)
|
||||
case SDLK_n:
|
||||
if (value)
|
||||
|
@ -361,29 +390,6 @@ void input_sdl_handle(u32 port)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (keys[0]) { kcode[port] &= ~DC_BTN_C; }
|
||||
if (keys[6]) { kcode[port] &= ~DC_BTN_A; }
|
||||
if (keys[7]) { kcode[port] &= ~DC_BTN_B; }
|
||||
if (keys[5]) { kcode[port] &= ~DC_BTN_Y; }
|
||||
if (keys[8]) { kcode[port] &= ~DC_BTN_X; }
|
||||
if (keys[1]) { kcode[port] &= ~DC_DPAD_UP; }
|
||||
if (keys[2]) { kcode[port] &= ~DC_DPAD_DOWN; }
|
||||
if (keys[3]) { kcode[port] &= ~DC_DPAD_LEFT; }
|
||||
if (keys[4]) { kcode[port] &= ~DC_DPAD_RIGHT; }
|
||||
if (keys[12]){ kcode[port] &= ~DC_BTN_START; }
|
||||
if (keys[9])
|
||||
{
|
||||
dc_stop();
|
||||
}
|
||||
if (keys[10])
|
||||
{
|
||||
rt[port] = 255;
|
||||
}
|
||||
if (keys[11])
|
||||
{
|
||||
lt[port] = 255;
|
||||
}
|
||||
}
|
||||
|
||||
void sdl_window_set_text(const char* text)
|
||||
|
|
Loading…
Reference in New Issue