21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_PSP
29 #include "../../events/SDL_sysevents.h"
30 #include "../../events/SDL_events_c.h"
31 #include "../../events/SDL_keyboard_c.h"
35 #include "../../thread/SDL_systhread.h"
39 #include <pspirkeyb.h>
40 #include <pspirkeyb_rawkeys.h>
42 #define IRKBD_CONFIG_FILE NULL
44 static int irkbd_ready = 0;
48 static enum PspHprmKeys hprm = 0;
49 static SDL_sem *event_sem =
NULL;
51 static int running = 0;
64 int EventUpdate(
void *
data)
68 sceHprmPeekCurrentKey(&hprm);
71 sceKernelDelayThread(1000000 / 60);
79 enum PspHprmKeys keys;
80 enum PspHprmKeys changed;
81 static enum PspHprmKeys old_keys = 0;
89 changed = old_keys ^ keys;
92 for(
i=0;
i<
sizeof(keymap_psp)/
sizeof(keymap_psp[0]);
i++) {
93 if(changed & keymap_psp[
i].
id) {
95 sym.
sym = keymap_psp[
i].sym;
110 unsigned char buffer[255];
112 SIrKeybScanCodeData *scanData;
115 if((
length %
sizeof(SIrKeybScanCodeData)) == 0){
118 unsigned char raw, pressed;
119 scanData=(SIrKeybScanCodeData*)
buffer+
i;
121 pressed = scanData->pressed;
123 sym.
sym = keymap[raw];
134 sceKernelDelayThread(0);
160 keymap[KEY_F13] = SDLK_PRINT;
230 keymap[KEY_NUMLOCK] = SDLK_NUMLOCK;
231 keymap[KEY_LEFTMETA] = SDLK_LSUPER;
249 void PSP_EventInit(
_THIS)
252 int outputmode = PSP_IRKBD_OUTPUT_MODE_SCANCODE;
253 int ret = pspIrKeybInit(IRKBD_CONFIG_FILE, 0);
254 if (ret == PSP_IRKBD_RESULT_OK) {
255 pspIrKeybOutputMode(outputmode);
273 void PSP_EventQuit(
_THIS)