Anuncios Google

OSLib - Teclado OSK

Tutoriales Avanzados Homebrewes

Ahora, que ya hemos avanzado en materia, que ya sabemos como manejar archivos y que ya sabemos como exprimir la PSP, es hora de usar todas las herramientas que tiene el sistema PSP para exprimir aún más las oportunidades que nos ofrece este lenguaje.

Autor: Dioni0396.

Para usar el teclado, también necesitamos las OSLib Mod , aquí tenéis un enlace para bajar estas librerías. Seguramente os preguntareis, ¿Como se si las tengo o no? Pues bien, coged este código y compilarlo, si da éxito es que las tenéis.

Bien, empecemos:

//Necesitaremos una variable para empezar. 
u8 Teclado = 0;
//Ahora partimos de que ya estamos en el while y en una sentencia queremos escribir algo:
if(osl_keys->pressed.cross){
	if (Teclado == 0){
		oslInitOsk("Introduce tu nombre", "", 20, 1, 3); /*Explicación:
                Esta función sirve para iniciar el OSK y al mismo tiempo insertar los datos que queremos, esto no hace visible el OSK (Mas adelante lo haremos visible).
                El primer argumento nos pone un texto en la parte derecha e inferior de la pantalla el char que queramos.
                El segundo es para tener un texto introducido previamente.
                El tercero limita el numero de caracteres y el cuarto el numero de lineas.
                El quinto dictamina el idioma, aquí tenéis una lista:
                ENGLISH 1 FRENCH 2 SPANISH 3 GERMAN 4 ITALIAN 5 */
		Teclado = 1; //Me salto a otra sentencia ya que sino estaríamos siempre aquí.
	}
	if (Teclado == 1){
		oslDrawOsk(); //Dibujamos el teclado.
	if (oslGetOskStatus() == PSP_UTILITY_DIALOG_NONE){ //Esto quiere decir: Si el estado del teclado == Ninguna acción realizada entonces...
	if (oslOskGetResult() == OSL_OSK_CANCEL){ //Si cancela...
		Teclado = -1; //Nos vamos
	}
	else{ /*Sino...*/ char Datos[20] = "";
		oslOskGetText(Datos); //Introducimos los datos en un char. No se permite otro puntero
		Teclado = 2; //Nos salimos
	}
		oslEndOsk(); //Cerramos el teclado.
	}
}
Teclado = 0; //Lo volvemos a poner en la misma variable para reusarlo
}

Sencillo, no? Esta muestra la podemos adaptar a una función fácilmente, e incluso podemos usarlo para guardar datos.

Os dejo también el makefile que uso para cargar el teclado:

TARGET = OSK
OBJS = main.o
 
CFLAGS = -O2 -g -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
 
MYLIBS=
STDLIBS= -losl -lpng -lz \
         -lpsphprm -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspgum  -lpspaudiolib -lpspaudio -lpsphttp -lpspssl -lpspwlan \
         -lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl -lm -ljpeg -lpspaudiocodec
LIBS=$(STDLIBS) $(MYLIBS)
 
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = OSK
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

Así nos quedaría nuestro teclado una vez compilado y ejecutado:


*Teclado usado en mi programa para guardar datos en un txt.

Si tienen dudas, pregúntenlas.

4.204545
Tu voto: Ninguno Votos totales: 4.2 (44 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Duda sobre funcionamiento

Hola.

Pues ya probé el código pero no logré hacerlo funcionar en su totalidad. Y también, ¿cómo quedaría el código para manejarlo como una función fuera del "main"? Digamos por ejemplo, que cuando presiono la cruz (X) aparezca el teclado y lea una cadena (en una función externa al "main"), pero al terminar de la lectura del OSK regrese al "main" e imprima esa cadena.

Lo que quiero es tener la función almacenada en un archivo *.h para reutilizarla con varios programas. Solamente necesito esto, que sea capaz de leer una cadena y regresarla a la función principal, para así por ejemplo hacer que lea números, cadenas, flotantes, etc. y poder hacer operaciones con ello.

Gracias de antemano y ojalá me pudieras resolver la duda.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.