Bonjour,
Je programme en C un logiciel qui fonctionnera sous Linux, et n’utilisera pas de bibliothèque "xCurses". J’utilise XTerm comme terminal parce qu’il me semble être le plus "_avancé_" et présent ou disponible sur beaucoup de distributions – sinon toutes –, et simulant une VTxxx (defaut : VT220_?).
Je voudrais reconnaître les séquences de code des touches spéciales, par exemple "\x1b[Z" reçu quand l’utilisateur presse Ctrl+TAB (Open SUSE 13.2 + KDE3 + Konsole). J’ai tout d’abord penser à collecter ces séquences et j’ai donc écrit un code pour ça (je sais qu’il existe un utilitaire Linux dont j’ai avalé le nom), mais cela reste approximatif, lié au contexte X et au "_windows manager_" (par exemple, que se passe-t-il quand je presse Ctrl+Alt+Backspace, ou Alt+F4_? :-).
L’objectif final est de convertir les combinaisons de touches spéciales en des codes internes (au logiciel en développement). Retrouver la séquence dans une liste est trivial, à condition d’avoir cette liste_! Mais il est peut-être possible de faire plus simple et plus général en "_étudiant_" les fichiers de configuration de X_? J’ai (aussi) regardé du coté de termcap / terminfo, mais je n’y trouve pas mon compte. Je crois avoir vu que xCurses savait faire (on peut récupérer les "_modificateurs_"), mais je n’ai vraiment pas besoin de cette librairie (en dehors de l’éventuelle construction d’un tel tableau, au premier lancement du logiciel en développement, et si cela peut se faire sans l’intervention de l’utilisateur).
En conclusion, je voulais disposer dans un premier temps des séquences retournées à la pression des touches ci-dessous, avec 0 (zero) ou une des combinaisons des modificateurs "Shift" | "Control" | ["Alt" ^ "Alt Gr"].
Les touches qui m’intéressent sont (⎕ veut dire "_pavé numérique_"):
" ↹ ","Esc","F1 ","F2 ","F3 ","F4 ","F5 ","F6 ","F7 ","F8 ",
"F9 ","F10","F11","F12",
" ↚ "(delete)," ↵ "(return)," ↣ "(insert)," ⇤ "(home),
" ⇧ "(page up)," ↛ "(suppr)," ⇥ "(end)," ⇩ "(page down),
" ↑ "," ← "," ↓ "," → ","⎕/ ","⎕* ","⎕- ","⎕7 ","⎕8 ","⎕9 ","⎕+ "
,"⎕4 ","⎕5 ","⎕6 ","⎕1 ","⎕2 ","⎕3 ","⎕↲ "(Enter),"⎕0 ", "⎕. "
Quelqu’un peut-il m'aider / me guider dans la recherche d'une solution_?
Merci pour l’attention que vous aurez portée à ce post, et pour vos remarques et réponses.
Partager