2017-03-23 10 views
-1

Je songe à créer une disposition de clavier personnalisée. Les clés sont mappées en Unicode. Un type de raccourci que j'utilise souvent est le alt + <arrow> ou alt + <backspace>. Comment puis-je obtenir le même effet avec un Unicode?Quels sont les unicodes pour alt + <arrow-key>?

Répondre

2

Vous ne pouvez pas. Unicode est une norme qui décrit les caractères, pas les clés. Il n'y a même pas de point de code Unicode pour la touche F1, encore moins pour les combinaisons.

+0

Vous pouvez définir une flèche droite, le comportement associé est de se déplacer vers la droite. Pourquoi ne serait-il pas possible de déplacer un mot vers la droite? – asiegfried

+0

Vous pouvez définir une frappe de touche droite, mais pas un caractère unicode. Il y a une flèche droite unicode, → (U + 2191) mais c'est un caractère imprimé. – MSalters

1

Les clés sont mappées sur unicode.

Cette déclaration est fausse. Les touches sont mappées sur scancodes. Tout mappage à un jeu de caractères est effectué par le système d'exploitation et toutes les clés ou combinaisons de touches ne sont pas forcément mappées à un caractère. Un système d'exploitation peut en outre résumer les codes clés en codes de clé virtuelle afin de gérer la grande variété de dispositions de clavier et de touches spéciales. Scancodes sont des valeurs 8 bits avec touches étendues produisant une paire de codes - le premier étant zéro (NUL) indiquant qu'un second code suit, permettant ainsi 510 codes distincts.

Notez que le scancode s'applique généralement à la clé spécifique, pas au caractère généré. Pour les clés "character", shift, alt, ctrl etc. (qui ont leurs propres codes scancodes) ne modifient pas le code scancode, donc les touches "étendues" telles que les touches functon, peuvent agir comme des modificateurs.

Normalement, vous n'avez pas accès au clavier au niveau du scancode, mais utilisez plutôt les services du clavier du système d'exploitation pour déterminer les états clés ou le mappage des caractères. Par exemple, par scancode seul, vous ne pouvez pas distinguer entre N et n - l'état de clé gauche-shift, droite-shift, alt-gr et l'actuel-toggle-verrouiller-état doit être considéré. L'accès Scancode est principalement destiné aux pilotes de clavier.

L'accès au clavier de niveau supérieur est spécifique au système d'exploitation. Dans Windows par exemple, il y a un extensive API and framework pour l'accès au clavier. D'intérêt dans ce cas sont peut-être les fonctions toUnicode() et toUnicodeEx() qui mappent les codes de clé virtuelle à Unicode (où une telle traduction existe). Cependant, il n'y a pas de traduction pour Alt + AFAIK, Dans une boucle de message GUI, vous obtiendrez un message WM_SYSKEYDOWN avec un paramètre VK_UP, VK_DOWN, VK_LEFT ou VK_RIGHT. En fait, vous obtiendrez d'autres messages, mais WM_SYSKEYDOWN est spécifiquement émis pour les séquences Alt +. Vous n'avez donc pas besoin de traiter et de gérer séparément l'état de la touche Alt WM_KEYDOWN/WM_KEYUP.

+0

Merci pour cette réponse, elle m'a donné quelques idées. Je ne comprends toujours pas pourquoi il est possible d'avoir le comportement de se déplacer à droite avec une flèche mais il n'y a aucun moyen de le faire avancer d'un mot. – asiegfried

+0

@asiegfried: C'est une question très différente, non liée à l'encodage du clavier mais plutôt au comportement de l'application. La plupart des applications déplacent le curseur par mots entiers en utilisant ctrl + - c'est le comportement par défaut pour la plupart des widgets d'édition de texte standard sur la plupart des plates-formes AFAIK - donc vous n'avez probablement pas besoin de coder le support spécifiquement. Dans Windows, au moins les séquences ALT + sont fréquemment affectées à des "raccourcis clavier" et au comportement du système et devraient probablement être évitées. – Clifford