I. Introduction :

Dans cet exemple, nous allons voir comment utiliser le clavier du mode debug : debugkb pour "debug keyboard". Il s'agit d'un clavier on-screen (OSK) différent de celui que l'on trouve sur la PSP en mode graphique.

 

II. Les explications :

Pour commencer, il faut inclure les bons headers. Etant donné que l'on va afficher le debugkb après avoir effectué une combinaison de touches, il nous faut aussi ajouter le header du controlleur de la psp.

1
2
3
#include <pspdebug.h>
#include <pspdebugkb.h>
#include <pspctrl.h>

 

Ensuite, il nous faut déclarer une chaine de caractères qui contiendra le mot ou la phrase (courte) que l'on va saisir avec le debugkb. Et avant de s'en servir, on la remplit d'octets 0 ce qui évite les problèmes. On rapellera que lorsqu'on déclare un tableau de caractères (ou autre), les cases sont allouées et contiennent un peu n'importe quoi, il est donc bon de "mettre à zéro" la mémoire pour s'éviter quelques soucis.

1
2
char str[40];
bzero(str, 40);

Dans cet exemple, nous avons remplacé PSP_DEBUG_KB_MAXLEN par sa valeur 40 pour une meilleure compréhension du code. Il s'agit d'une de la longueur maximale supportée par le debugkb. Il est donc conseillé de se servir de la valeur PSP_DEBUG_KB_MAXLEN plutôt que d'une autre valeur.

 

Avant de faire afficher notre debugkb, il nous faut récupérer la combinaison de touches LTRIGGER et RTRIGGER. Contrairement à l'exemple controller-basic, nous allons utiliser un if pour la récupérationde cette combinaison.

1
2
3
4
5
6
7
8
9
10
11
//On déclare la variable pour récupérer les touches
SceCtrlData input;
 
while(1)
{
  //On lit le buffer du controlleur
  sceCtrlReadBufferPositive(&input, 1);
 
  //On teste la combinaison
  if (input.Buttons & PSP_CTRL_LTRIGGER && input.Buttons & PSP_CTRL_RTRIGGER) 
}

 

C'est le moment d'afficher notre debugkb. Il suffit de faire appel à pspDebugKbInit et de lui passer en paramètre la chaine de caractères str que l'on a déclaré avant. Cette ligne se place à l'intérieur du if qui teste la combinaison de touches.

123
pspDebugKbInit(str);

 

Maintenant, il ne reste plus quà faire afficher un texte pour dire quel est le mot qui a été saisi et quelle est sa longueur. Dans l'exemple original, des alias ont été déclarés afin de raccourcir le nom complet des fonctions. Les lignes suivantes utilisent les noms originaux des fonctions: pspDebugScreenSetTextColor, pspDebugScreenSetBackColor, pspDebugScreenSetXY et pspDebugScreenPrintf.

1
2
3
4
5
6
pspDebugScreenSetTextColor(0xffffffff);
pspDebugScreenSetBackColor(0x00000000);
pspDebugScreenSetXY(0, 3);
pspDebugScreenPrintf("str = \"%s\"", str);
pspDebugScreenSetXY(0, 4);
pspDebugScreenPrintf("str is %d characters long", strlen(str));

Ces lignes sont à placer dans le if après pspDebugKbInit.

 

Si vous ne voulez pas vous embêtter avec les noms "trop" longs des fonctions, vous pouvez toujours déclarer des alias tout comme dans l'exemple original.

1
2
3
4
#define printf pspDebugScreenPrintf
#define setXY pspDebugScreenSetXY
#define setTextColor pspDebugScreenSetTextColor
#define setBackColor pspDebugScreenSetBackColor

 

III. Capture d'écran :

Les captures d'écrans ci-dessous représentent les différentes étapes d'éxcution de l'exemple étudié.

Screenshot - Sample SDK debug debugkb

Screenshot - Sample SDK debug debugkb

Screenshot - Sample SDK debug debugkb

Screenshot - Sample SDK debug debugkb

 

IV. Conclusion :

Maintenant, vous pouvez utiliser le debugkb dans vos applications pour demander des valeurs ou des mots à saisir à l'utilisateur.