Conflit NumPad/DPad - Java Mobile
Le petit exemple ci-joint simule un menu de jeu basique type console. On peut déplacer le curseur d'une entrèe à l'autre à l'aide des flèches up/down/left/right ET des touches 2/8/4/6. Le déplacement du curseur se fait simplement en ajoutant/soustrayant 1 à une Global Value appellée "index".
MyMenu.mfa
Le problème est que le curseur se déplace de deux positions en utilisant les touches du pavé numérique. Pas de problème en utilisant les flèches. Si on désactive le code relatif aux flèches (appuyer sur "0") le déplacement du curseur devient normal avec les touches du pavé numérique 2/8/4/6.
J'ai l'impression qu'il s'agit d'une sorte de conflit entre les touches, qui se produit uniquement lorsque "beaucoup de touches sont actives". Je précise que le problème se produit uniquement sur mon téléphone (LGKF510) pas dans MMF ni sur mon émulateur Java.
Si quelqu'un pouvait essayer sur son téléphone j'apprécierai. D'avance merci. [img]<<GRAEMLIN_URL>>/smile.gif[/img]
Re: Conflit NumPad/DPad - Java Mobile
Pour faire rapidement le test:
1. Faites un build (ou téléchargez le jar/jad), transférez sur votre téléphone puis lancez l'application
2. Déplacez le curseur avec les flèches, le curseur se déplace d'une position à chaque pression d'une touche
3. Déplacez le curseur avec les touches 2/8/4/6, le curseur se déplace de deux positions à chaque pression d'une touche (ce qui est incorrect)
4. Appuyez sur "0" pour désactiver le code relatif aux flèches (désormais le curseur ne se déplace plus en utilisant les flèches).
5. Pour finir déplacez le curseur avec les touches 2/8/4/6, le curseur se déplace mlaintenant d'une position à chaque pression d'une touche (ce qui est correct)
Conclusion: Ce n'est que lorsque le code relatif aux flèches est inactif (groupe de code désactivé) que le code relatif aux touches 2/8/4/6 fonctionne correctement.
Re: Conflit NumPad/DPad - Java Mobile
Ne pourrais tu pas tout simplement rajouter une sécurité dans ton code relatif aux touches 2846 genre flèches n'est pas appuyé ??
Re: Conflit NumPad/DPad - Java Mobile
J'ai essayé mais ça ne marche pas. Le seul moyen que j'ai trouvé, c'est d'utiliser un flag pour empêcher la double action. Ce workaround est finalement assez simple.
D'après François c'est le comportement normal de Java. Utiliser cette astuce est donc nécessaire.
Re: Conflit NumPad/DPad - Java Mobile
J'ai simulé un écran où l'utilisateur peut entrer son nom. Le fonctionnement est similaire à la composition d'un SMS, on utilise les touches du pavé numérique pour taper des lettres (ex 2 = abc, 8 = tuv etc..). J'utilise également la touche 'Flèche Gauche' pour effacer et la touche 'Entrée' pour valider.
Comme Java Mobile mappe les contrôles de jeu haut/bas/gauche/droite/entrée respectivement sur les touches du pavé numérique 2/8/4/6/5; Je ne peux pas utiliser les touches "4 = ghi" et "5 = jkl" car elles correspondent également à mes fonctions "Effacer" et "Valider".
Donc il faudrait vraiment trouver un moyen de dissocier les touches de contrôles de jeu et les touches du pavé numérique pour que l'on puisse tester ces différentes touches indépendamment.
Sans cela on ne pourra pas réaliser un écran de saisie ala SMS.
Re: Conflit NumPad/DPad - Java Mobile
Pouvoir dissocier les touches de contrôles de jeu et les touches du pavé numérique est-il envisageable?
Re: Conflit NumPad/DPad - Java Mobile
Non. Bette association n'est pas de mon fait, c'est le telephone qui la fait.
Dans l'API du telephone, tu as des fonctions pour recevoir les touche de jeu, et des fonctions pour les touche normales. C'est le telephone qui envoie les touches de jeu, et le mappage des touches de jeu sur le clavier est choisi par le constructeur.
Re: Conflit NumPad/DPad - Java Mobile
Donc en clair François, cela voudrait dire qu'il faudrait faire une extension par modèle de téléphone ou en tout cas en fonction de chaque type de mappage ?
Re: Conflit NumPad/DPad - Java Mobile
Je vois le problème. Il ne reste plus qu'à coder un écran de saisie de nom/initiales ala arcade. Un tel système ne nécessite que 3 touches: 2 flèches pour faire défiler les caractères + RUB + END et 1 touche pour valider.