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;
114 if(pspIrKeybReadinput(buffer, &length) >= 0) {
115 if((length %
sizeof(SIrKeybScanCodeData)) == 0){
116 count = length /
sizeof(SIrKeybScanCodeData);
117 for( i=0; i <
count; i++ ) {
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)
GLuint GLuint GLsizei count
#define SDL_CreateSemaphore
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
The SDL keysym structure, used in key events.
Sint32 SDL_Keycode
The SDL virtual key representation.
int SDL_SendKeyboardKey(Uint8 state, SDL_Scancode scancode)
void PSP_PumpEvents(_THIS)
#define SDL_GetScancodeFromKey
SDL_Thread * SDL_CreateThreadInternal(int(*fn)(void *), const char *name, const size_t stacksize, void *data)
#define SDL_TABLESIZE(table)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
#define SDL_DestroySemaphore
GLuint GLsizei GLsizei * length
void PSP_InitOSKeymap(_THIS)