J'ai cherché autour et je n'arrive pas à trouver un moyen de représenter les touches fléchées ou la clé d'échappement en tant que caractère unique en C++. Est-ce seulement possible? Je m'attendrais à ce qu'il soit similaire à \ t ou \ n pour tabulation et nouvelle ligne respectivement. Chaque fois que je recherche des caractères échappés, il n'y a jamais qu'une liste de cinq ou six personnages bien connus.Est-ce que toutes les clés peuvent être représentées comme un seul caractère en C++?
Répondre
La réponse courte est non. La réponse longue est qu'il existe un certain nombre de caractères de contrôle dans le jeu de caractères ANSI standard (de la virgule 1 à la virgule 31, inclusivement), parmi lesquels figurent les codes de contrôle de saut de ligne, de retour chariot et de fin de fichier , etc. Quelques-uns sont généralement interprétés comme des flèches et la clé d'échappement, mais seulement pour la compatibilité avec les terminaux.
Les claviers PC standard envoient un code de contrôle de 2 ou 3 octets qui représente la touche qui a été enfoncée, l'état dans lequel elle se trouve, la touche control/alt/shift enfoncée et quelques autres éléments. Vous aurez envie de rechercher des "codes clés" pour voir comment les gérer. Les gérer diffère entre les systèmes d'exploitation et les bibliothèques de base que vous utilisez, et leur signification diffère en fonction de la configuration du clavier du système d'exploitation (qui peut inclure des caractères introuvables dans le jeu de caractères ANSI).
Bonne réponse. +1 – batbrat
Les variables char représentent généralement des éléments de la table ASCII.
http://www.asciitable.com/
il y a aussi man ascii sur unix. Si vous voulez des touches fléchées, vous aurez besoin d'un moyen plus direct d'accéder à la saisie au clavier. les touches fléchées sont traduites en séquences de caractères avant de frapper stdio. Si oyu veut un accès direct au clavier, considérez une bibliothèque GUI, sdl, une entrée directe pour n'en nommer que quelques-uns.
Pas possible; les claviers construits pour certaines langues ont des caractères qui ne peuvent pas être représentés dans un char, et de toute façon, comment représentez-vous control-option-command-shift-F11 dans un char?
Les claviers envoient des codes d'espacement, qui sont soit une sorte d'événement dans un système GUI, soit une courte chaîne d'octets représentant la clé. Quels codes dépendent de votre système, mais sur la plupart des systèmes de type terminal, ncurses sait comment les gérer.
Il n'y a aucun caractère d'échappement pour les touches fléchées. Ils sont représentés comme Keycodes, afaik. Je suggère d'utiliser une bibliothèque d'entrée de niveau supérieur pour détecter les pressions sur les touches. Si vous voulez le faire à partir de zéro, l'approche adoptée peut varier en fonction de la plate-forme spécifique pour laquelle vous programmez.
Dans tous les cas, à l'époque de TURBO C, j'ai utilisé -
//Wait for keypress
//store input in ch
//see if the ASCII code matches the code for one of the arrow keys
- 1. Traiter un caractère Unicode plus diacritique comme un seul caractère?
- 2. Est-ce que les lignes directives du préprocesseur peuvent être utilisées en C# comme en C?
- 3. Est-ce que toutes les expressions RPN peuvent être représentées de sorte que tous les opérateurs apparaissent sur la gauche et tous les opérandes apparaissent sur la droite?
- 4. est-ce que les widgets peuvent être mis en cache?
- 5. Des tables séparées pour un seul champ peuvent être logiques?
- 6. est-ce que les pointeurs d'objectif-c peuvent être réutilisés?
- 7. Convertir un seul caractère en chaîne?
- 8. Menu acceptant un seul caractère en langage C
- 9. remplacer toutes les clés dans hashmap en commençant par un caractère
- 10. Quelles propriétés du son peuvent être représentées/calculées dans le code?
- 11. Est-ce que plusieurs documents base64 peuvent être stockés dans un seul fichier?
- 12. Poignée toutes les clés de registre sans redémarrer en C#
- 13. Comment des événements comme CancelEventArgs peuvent-ils être utilisés?
- 14. Si vous êtes obligé de simplifier les mots clés en boucle C#, choisissez-en un seul.
- 15. Si vous recherchez une structure de données qui est une carte, mais dans laquelle les clés peuvent être des valeurs, les valeurs peuvent être des clés
- 16. Est-ce que toutes les classes de mon application .NET peuvent être internes?
- 17. Les opérateurs peuvent-ils être utilisés en tant que fonctions? (C++)
- 18. Tous les caractères de l'application C# affichés en tant que caractères carrés dans un seul ordinateur
- 19. SQL? "Montrez-moi toutes les activités qui peuvent être effectuées par l'utilisateur X."
- 20. Liste en C# - passer plusieurs entrées comme un seul objet
- 21. C Programmation: EOF comme caractère
- 22. Comment entrer un caractère spécial en tant que caractère de mot de passe en C#
- 23. Convertir un seul caractère dans Chaîne en minuscule
- 24. PHP: Faire en sorte que le routeur CakePHP transmette toutes les requêtes à un seul contrôleur
- 25. En SQL, comment puis-je avoir deux champs qui ne peuvent pas être identiques, un seul est une clé primaire
- 26. Combien de temps d'exécution (CLR) peuvent être chargés en un seul processus?
- 27. Est-ce que les commandes ajax d'asp.net peuvent être utilisées comme contrôles côté client pur?
- 28. Les processeurs XSLT peuvent-ils être multithread?
- 29. trouver toutes les occurrences de 'peut être interprété comme temps'
- 30. Est-ce que les vidéos peuvent être jouées sans contrôles?
Cherchez-vous un moyen de simuler l'utilisateur en appuyant sur l'une des touches fléchées? –
En bref, non. Les touches fléchées ne sont pas des caractères et ne correspondent pas aux caractères. Vous devez les traiter soit au niveau des codes clés, soit au niveau des séquences d'échappement terminales. – hobbs