J'essaie de comprendre comment les obus déplacent le curseur à l'écran (se déplacer, saisir les touches fléchées, etc.).
J'ai fait beaucoup de tests et je n'ai trouvé aucun appel système permettant le déplacement du curseur à l'écran dans un terminal. Est-ce fait à l'aide d'extensions de terminal spécifiques ? Si oui, existe-t-il une documentation expliquant comment cela est réalisé pour, disons, xterm ?
Cela me rend fou, toute lumière que vous pouvez apporter à ce sujet est appréciée.
Réponse acceptée :
Il n'y a pas un tel appel système, ou ensemble d'appels système. Tout se fait par convention.
À l'époque, lorsqu'un « terminal » était un gros équipement encombrant relié à un ordinateur via un câble, les « terminaux intelligents » faisaient des choses comme déplacer le curseur, tracer une ligne ou remplir un polygone avec des couleurs. . Le terminal intelligent le faisait généralement via des "séquences d'échappement". Un programme émettait une séquence spéciale de valeurs d'octets, commençant généralement par ASCII 0x1b, "ESC", pour déplacer un curseur, ou colorer un mot, ou quelque chose de spécial autre que l'imitation d'un téléimprimeur.
C'est la "convention". De nos jours, un "terminal" n'est presque toujours qu'une fenêtre parmi tant d'autres sur un écran bitmap, xterm, rxvt, etc etc. C'est à xterm (ou rxvt ou autre) de lire les octets provenant du "programme" qui y tourne, et interpréter ces octets selon une convention donnée. Je viens de taper ceci dans l'une de mes fenêtres xterm :
6 % echo $TERM
xterm
Mais je sais que les vieux, vieux xterms disaient "vt100" dans ce cas. Tout programme qui "déplace le curseur" doit produire des séquences d'échappement pour la convention "xterm" pour déplacer le curseur dans une instance xterm.
Vous pourriez faire des man curses
et man terminfo
pour plus d'informations.
PS
Les gens ont fait des systèmes de fenêtrage entiers avec des séquences d'échappement. Voir MGR comme exemple.