[psp]teclado de sony

Hola a todos!
Me gustaria saber como se puede hacer aparecer el teclado "virutal de sony" para que yo dentro de mi hombrew, pueda escribir algo.
Muchas gracias a todos
Para el OSK oficial de sony, echale un ojo al ultimo comentario de este post:

http://forums.ps2dev.org/viewtopic.php?t=7419&highlight=osk

Solo te va a funcionar en modo 3.XX, si lo usas en modo 1.50 sobre un custom firmware nuevo, no funcionara bien.


También puedes usar el danzeff OSK que funciona sobre SDL.

http://pspupdates.qj.net/Danzeff-OSK-Source-Released/pg/49/aid/23876
muchas grqaciass turuloxx.
He puesto el primer link de momento y cuando compil me da este error:

psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I/usr/local/pspdev/psp/include/SDL -G0 -O2 -DPSP -D_PSP_FW_VERSION=371 -c -o main.o main.c
In file included from main.c:83:
colocabarcos.h: En la función ‘teclas’:
colocabarcos.h:608: error: ‘SceUtilityOskParams’ has no member named ‘size’
colocabarcos.h:609: error: ‘SceUtilityOskParams’ has no member named ‘language’
colocabarcos.h:610: error: ‘SceUtilityOskParams’ has no member named ‘buttonswap’
colocabarcos.h:611: error: ‘SceUtilityOskParams’ has no member named ‘unk_12’
colocabarcos.h:612: error: ‘SceUtilityOskParams’ has no member named ‘unk_16’
colocabarcos.h:613: error: ‘SceUtilityOskParams’ has no member named ‘unk_20’
colocabarcos.h:614: error: ‘SceUtilityOskParams’ has no member named ‘unk_24’
make: *** [main.o] Error 1


Y es que mira, a ver si me explico bien.
Si me conecto a esta pagina:
http://www.geardome.com/pspsdk-doc/struct__SceUtilityOskParams.html
la estructura de SceUtilityOskParams es esta:
unsigned int size
int language
int buttonswap
int unk_12
int unk_16
int unk_20
int unk_24
int rc
int unk_32
int unk_36
int unk_40
int unk_44
int unk_48
SceUtilityOskData * data
int unk_56
int unk_60


sin embargo si me conecto a esta otra pagina:
http://psp.jim.sh/pspsdk-doc/structSceUtilityOskParams.html
la estructura de SceUtilityOskParams es esta:
Data Fields
pspUtilityDialogCommon base
int unk_48
SceUtilityOskData * data
int unk_56
int unk_60
------------------------------------------------------------------------------

Si compilo con la segunda estrcutura me compila bien pero no me activa el teclado.

Lo mismo tengo alguna libreria que no es la buena.
No sé, por favor una ayudaaa.
Muchas gracias de antemano por todo.


Nota.- yo compilo para 3.71.
muchas gracias.
Mi makefile:
TARGET = xxxxx
PSPSDK = $(shell psp-config --pspsdk-path)
PSPBIN = $(shell psp-config --psp-prefix)/bin
SDL_CONFIG = $(PSPBIN)/sdl-config
OBJS = main.o

BUILD_PRX = 1
PSP_FW_VERSION = 371

SDL_INSTALL_PATH=/usr/local/pspdev/psp

#DEFAULT_CFLAGS = $(shell $(SDL_CONFIG) --cflags)

DEFAULT_CFLAGS = -I$(SDL_INSTALL_PATH)/include/SDL

MORE_CFLAGS = -G0 -O2 -DPSP

CFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS)
CXXFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS) -fno-exceptions -fno-rtti

#LIBS = -lSDL_gfx -lSDL_image -lSDL_mixer -lSDL_ttf -lvorbisidec -lfreetype -lpng -ljpeg -lz -lm $(shell $(SDL_CONFIG) --libs)

LIBS = -lSDL_image -lSDL_mixer -lSDL_ttf -lvorbisidec -lfreetype -lpng -ljpeg -lz -lm -L$(SDL_INSTALL_PATH)/lib -lSDL -lm -lGL -lpspvfpu -L$(SDL_INSTALL_PATH)/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpspaudio -lc -lpspuser -lpsputility -lpspkernel -lpspnet_inet -lpspirkeyb -lpsppower -lpsprtc -lpspwlan -lpspnet -lpspnet_adhoc

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = xxxxx
PSP_EBOOT_ICON = ./imagenes/iconoinicio371.png
PSP_EBOOT_PIC1 = ./imagenes/background.png

include $(PSPSDK)/lib/build.mak
Es que lo que tienes que mirar es el header que tienes tu instalado, ya que lo han cambiado entre versiones, ya te dije que entre 1.50 y 3.XX no era lo mismo.

Por ejemplo si miro mi psputility_osk.h, que esta en /usr/local/pspdev/psp/sdk/include
typedef struct _SceUtilityOskData
{
    int unk_00;
    int unk_04;
    int language;
    int unk_12;
    int unk_16;
    int lines;
    int unk_24;
    unsigned short* desc;
    unsigned short* intext;
    int outtextlength;
    unsigned short* outtext;
    int rc;
    int outtextlimit;
} SceUtilityOskData;

typedef struct _SceUtilityOskParams
{
        pspUtilityDialogCommon base;
        int unk_48; // set 1, if 0 nothing happens, if 2 crash ...
        SceUtilityOskData* data;
        int unk_56;
        int unk_60;
} SceUtilityOskParams;


Ahi veras que language ya no viene en SceUtilityOskParams, si no en SceUtilityOskData, que se incluye dentro de SceUtilityOskParams.

Y como te había avisado, deberías estar utilizando el código del ultimo reply que sale en el primer link que te pase.

SceUtilityOskData data;
   memset(&data, 0, sizeof(data));
   data.language = 2;         // key glyphs: 0-1=hiragana, 2+=western
   data.lines = 1;            // just one line
   data.unk_24 = 1;         // set to 1
   data.desc = desc;
   data.intext = intext;
   data.outtextlength = 128;   // sizeof(outtext) / sizeof(unsigned short)
   data.outtextlimit = 50;      // just allow 50 chars
   data.outtext = (unsigned short*)outtext;

   SceUtilityOskParams osk;
   memset(&osk, 0, sizeof(osk));
   osk.base.size = sizeof(osk);
   // dialog language: 0=Japanese, 1=English, 2=French, 3=Spanish, 4=German,
   // 5=Italian, 6=Dutch, 7=Portuguese, 8=Russian, 9=Korean, 10-11=Chinese, 12+=default
   osk.base.language = 1;
   osk.base.buttonSwap = 1;      // X button: 1
   osk.base.graphicsThread = 17;   // gfx thread pri
   osk.base.unknown = 19;         // unknown thread pri (?)
   osk.base.fontThread = 18;
   osk.base.soundThread = 16;
   osk.unk_48 = 1;
   osk.data = &data;



Aparte la estructura SceUtilityOskParams también incluye a su vez la estructura pspUtilityDialogCommon referenciada como base, que es la que lleva size, y vuelve a definir language.

pspUtilityDialogCommon de /usr/local/pspdev/psp/sdk/include/psputility.h
typedef struct
{
        unsigned int size;      /** Size of the structure */
        int language;           /** Language */
        int buttonSwap;         /** Set to 1 for X/O button swap */
        int graphicsThread;     /** Graphics thread priority */
        int unknown;            /** Some other thread priority? */
        int fontThread;         /** Font (?) thread priority (ScePafThread) */
        int soundThread;        /** Sound thread priority */
        int result;             /** Result */
        int unknown2[4];

} pspUtilityDialogCommon;


En resumen:
1.- Utiliza el codigo del ultimo reply en este link: http://forums.ps2dev.org/viewtopic.php?t=7419&highlight=osk
2.- Para comprobar esos errores, mira tus includes/headers, para ver como se definen esas estructuras.
muchas graciasss.!!!

Ya estoy casiii..
mira mi utlima compilacion, ayuda por favorr.

psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -I/usr/local/pspdev/psp/include/SDL -G0 -O2 -DPSP -D_PSP_FW_VERSION=371 -L. -L/usr/local/pspdev/psp/sdk/lib -specs=/usr/local/pspdev/psp/sdk/lib/prxspecs -Wl,-q,-T/usr/local/pspdev/psp/sdk/lib/linkfile.prx main.o /usr/local/pspdev/psp/sdk/lib/prxexports.o -lSDL_image -lSDL_mixer -lSDL_ttf -lvorbisidec -lfreetype -lpng -ljpeg -lz -lm -L/usr/local/pspdev/psp/lib -lSDL -lm -lGL -lpspvfpu -L/usr/local/pspdev/psp/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpspaudio -lc -lpspuser -lpsputility -lpspkernel -lpspnet_inet -lpspirkeyb -lpsppower -lpsprtc -lpspwlan -lpspnet -lpspnet_adhoc -lpspgum -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o xxxxx.elf
/usr/local/pspdev/psp/sdk/lib/libpspgum.a(sceGumPerspective.o): En la funci�n `sceGumPerspective':
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:463: referencia a `cosf' sin definir
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:463: referencia a `sinf' sin definir
/usr/local/pspdev/psp/sdk/lib/libpspgum.a(sceGumUpdateMatrix.o): En la funci�n `sceGumUpdateMatrix':
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:572: referencia a `sceGuSetMatrix' sin definir
/usr/local/pspdev/psp/sdk/lib/libpspgum.a(gumRotateX.o): En la funci�n `gumRotateX':
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:251: referencia a `cosf' sin definir
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:252: referencia a `sinf' sin definir
/usr/local/pspdev/psp/sdk/lib/libpspgum.a(gumRotateY.o): En la funci�n `gumRotateY':
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:270: referencia a `cosf' sin definir
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:271: referencia a `sinf' sin definir
/usr/local/pspdev/psp/sdk/lib/libpspgum.a(gumRotateZ.o): En la funci�n `gumRotateZ':
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:289: referencia a `cosf' sin definir
/home/psp/download/psptoolchain/build/pspsdk/src/gum/pspgum.c:290: referencia a `sinf' sin definir
collect2: ld devolvió el estado de salida 1
make: *** [xxxxx.elf] Error 1
Prueba a poner -lpspgum -lpspgu -lm seguidos y en ese orden al final de LIBS, en vez de mezclados entre medias como están.

A veces el pspdsk es un poco puñetero con el orden de las flags de linkado, pero si no es eso, no se me ocurre ahora mismo que puede ser.

EDIT: También puedes probar poniendo -lm lo ultimo.


P.D.: Por cierto, que estas desarrollando algo para la CIA, que tapas el nombre del programa, jaja
Turuloxxx, joder!! que maquina!!!
puse -lm lo ultimo y me funcionó a la primera!!

Sabes...lo que estoy desarrollando es el juego de los barquitos.
Fases del desarrollo:
1ª fase conexion ad-hoc para conectar las 2 psp. (fase no realizada) El anfitrion crea la partida y el invitado se conecta, Para esta fase me hacia falta el teclado "virtual" (teclado virutla conseguido). una vez unidos, el anfitrion acepta y comienzan cada uno a colocar los barcos.
2ª Colocar los barcos (fase ya realizada).
3ª Fase disparos (fase en desarrollo).

Bueno esta es la "cosilla" que estoy haciendo para la cia. Para mi es lo primero, y bueno, poco a poco, a mi me mola.

-Mi siguiente proyecto es realizar una pequeña aventura grafica en primera persona. Ya tgengo la idea (jajaj que poco)


Te agrazeco un monton tu ayuda!!

Hablando de todo un poco, estoy como loco buscando infotmacion para la conexion ad-hoc, pero no encuentro nada claro.
POr favor si me puedes ayudar, te lo agradeco amigoo.

De nuevo mil graciasss turulox.
edelpuerto escribió:Turuloxxx, joder!! que maquina!!!
puse -lm lo ultimo y me funcionó a la primera!!

Sabes...lo que estoy desarrollando es el juego de los barquitos.
Fases del desarrollo:
1ª fase conexion ad-hoc para conectar las 2 psp. (fase no realizada) El anfitrion crea la partida y el invitado se conecta, Para esta fase me hacia falta el teclado "virtual" (teclado virutla conseguido). una vez unidos, el anfitrion acepta y comienzan cada uno a colocar los barcos.
2ª Colocar los barcos (fase ya realizada).
3ª Fase disparos (fase en desarrollo).

Bueno esta es la "cosilla" que estoy haciendo para la cia. Para mi es lo primero, y bueno, poco a poco, a mi me mola.

-Mi siguiente proyecto es realizar una pequeña aventura grafica en primera persona. Ya tgengo la idea (jajaj que poco)


Te agrazeco un monton tu ayuda!!

Hablando de todo un poco, estoy como loco buscando infotmacion para la conexion ad-hoc, pero no encuentro nada claro.
POr favor si me puedes ayudar, te lo agradeco amigoo.

De nuevo mil graciasss turulox.


Hola, estoy intentando yo también lo del tecado pero no lo he conseguido. Te importaría pasarme el ejemplo que tengas para que vea como lo has conseguido?.
De todas formas gracias.
sersanm2 escribió:
Hola, estoy intentando yo también lo del tecado pero no lo he conseguido. Te importaría pasarme el ejemplo que tengas para que vea como lo has conseguido?.
De todas formas gracias.


Si miras el post veras que el ejemplo que funciona esta en el ultimo comentario de este hilo:

http://forums.ps2dev.org/viewtopic.php?t=7419&highlight=osk

Eso si, solo funciona compilando para 3.XX

eldelpuerto escribió:Hablando de todo un poco, estoy como loco buscando infotmacion para la conexion ad-hoc, pero no encuentro nada claro.
POr favor si me puedes ayudar, te lo agradeco amigoo.


Pues la verdad es que no recuerdo haber visto ningún ejemplo de ad-hoc.. de hecho la PSP no configura TCP/IP cuando se usa ad-hoc, así que te tocaría tirar de ethernet a lo bruto, pero la verdad es que no se ni como mandar los paquetes en ad-hoc desde la psp...

Si es infraestructura, pues lo normal, con tcp/ip, haces bind, connect, y write/read, pero en ad-hoc, ni bind ni connect, seria mandar al aire, y las psps que vean los paquetes los procesen... pero ya te digo que ahí no se ni como se haría el send, ya que no hay un descriptor (fd) al que mandar los datos...


Respecto al inicio de la red, si que seria como el del modo infraestructura pero cargando el modulo de ad-hoc.

sceUtilityLoadNetModule(PSP_NET_MODULE_COMMON);
y
sceUtilityLoadNetModule(PSP_NET_MODULE_ADHOC);
en vez de
sceUtilityLoadNetModule(PSP_NET_MODULE_INET)


La idea de usar ad-hoc esta muy bien para ahorrarte que una psp haga de servidor y otra de cliente, si no que sea algo mas bien P2P, pero ya te digo que no lo he probado, seria cuestión de mirar el código de programas como el smsplus, snestyl y algún otro hombrew mas que use ad-hoc.

O quizás se pueda usar tcp/ip sobre ad-hoc, pero ya te digo que ni idea, ya nos contaras que encuentras.
ante todo muchisimas gracias por tus superayudas.

Como te dije en el post anterior mio, mi intencion seria que una psp se cree la partida y la otra se una a la partida.

Lo mismo estoy equivocado, te explico:
-Yo entiendo que mediante adhoc es la comunicacion de las 2 psp sin pasar por un router.
-Yo entiendo que mediante infraestructura la comunicacion entre las 2 psp es mediante un punto(router).
No sé, ¿estoy en lo cierto.?

Pero si hay otra forma de comunicar las dos psp pero que puedan jugar una contra otra si necesidad de otro dispositvo(router), pues también valdría.

Muchas graciass de nuevoo.
9 respuestas