2010-12-02 6 views
0

J'ai écrit une application Android qui est principalement pilotée par une entrée clavier matérielle. Je suis en train d'ajouter un support clavier souple, mais je ne suis pas encore là. Mais je digresse ...Gestion KeyEvent Android - KeyCode ou GetUnicodeChar?

À l'origine, je vérifiais la valeur entière de keyCode transmise à ma fonction OnKey par rapport aux énumérations de la classe KeyEvent. Assez simple ...

Mais j'ai besoin de savoir si l'utilisateur a appuyé sur la combinaison de touches qui générerait le symbole>. J'ai donc vérifié si les deux ALT étaient pressés et que le X keyCode était passé ... mais il s'avère que différentes touches sur différents téléphones génèrent le symbole>.

Maintenant, à la place, je vérifie la valeur de la méthode getUnicodeChar de KeyEvent par rapport aux valeurs connues pour les caractères Unicode.

Mon problème est résolu - mais existe-t-il une méthode acceptée pour effectuer la vérification de caractères? La plupart des gens n'ont-ils tout simplement pas besoin des symboles ALT ou la plupart des gens utilisent-ils des claviers logiciels standard sur tous les appareils? Il n'y a pas de table intégrée d'enums de caractères Unicode (que je connais, de toute façon), ce qui rend le code un peu plus laid aussi. Juste curieux!

Répondre

0

Je crois que vous avez raison de dire que la seule façon de détecter quelle touche de symbole/alternative a été pressée est de regarder le caractère unicode.

Souvent, les personnes ne s'intéressent qu'aux clés primaires, donc le KeyCode est suffisant.

Vous ne pouvez pas dépendre d'un IME (clavier logiciel) particulier utilisé. Notez également que le texte entré via un IME est accessible par les widgets de texte via le InputConnection, donc il n'utilise souvent pas KeyEvents comme le font les claviers matériels.