turbo-editors/turbo-gopublic Fork 0
v1.0.2
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-go.git
git clone ssh://git@rickub.com/turbo-editors/turbo-go.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

terminal.md · 228 lines · 9.3 KBmarkdown Blame HistoryRaw
📦 Turbo Go 3d7798b k33g 13h ago1# Référence : fenêtres terminal
2
3> Description neutre des fenêtres terminal ouvertes par Turbo Go, des touches auxquelles elles répondent et des séquences d'échappement que l'émulateur implémente.
4
5## Ouverture
6
7| Chemin | Condition |
8| --- | --- |
9| `F8` | Toujours |
10| **Window ▸ New terminal** | Toujours |
11
12Aucun des deux n'exige qu'un fichier soit ouvert.
13
14## Le shell
15
16| Propriété | Valeur |
17| --- | --- |
18| Programme | `$SHELL`, ou `/bin/sh` si la variable est absente ou vide ; sous Windows `%COMSPEC%`, ou `cmd.exe` |
19| Répertoire de travail | Le dossier du fichier de la fenêtre au premier plan ; le répertoire de travail de l'éditeur si aucun fichier n'est ouvert |
20| `TERM` | `xterm-256color`, toujours — remplaçant toute valeur héritée |
21| Environnement | Celui de l'éditeur, avec `TERM` remplacé |
22| Terminal de contrôle | Oui : sous Linux et macOS le shell tourne dans sa propre session avec le pseudo-terminal comme terminal de contrôle ; sous Windows il est attaché à une pseudo-console. Dans les deux cas le contrôle de tâches et `Ctrl-C` fonctionnent |
23| Taille initiale | Celle de la fenêtre, mise à jour à chaque redimensionnement |
24
25## Plateformes supportées
26
27| Plateforme | Comportement |
28| --- | --- |
29| Linux | Supportée (`/dev/ptmx`) |
30| macOS | Supportée (`/dev/ptmx`) |
31| Windows | Supportée (pseudo-console, ConPTY) : Windows 10 version 1809 ou plus récent. Compilé et vérifié ; **pas encore exécuté par les auteurs** sur une machine Windows |
32| Autres | `F8` ouvre un message indiquant que les fenêtres terminal ne sont pas encore supportées ; rien d'autre ne change |
33
34## Touches
35
36### Après la fin du programme
37
38Une fenêtre dont la commande est terminée garde sa sortie mais cesse de se comporter comme un terminal : seules `Maj-Page↑` et `Maj-Page↓` sont encore prises, et toute autre touche atteint l'éditeur — c'est ce qui permet à `Ctrl-W` de la fermer.
39
40### Envoyées au shell
41
42Toute touche non listée ci-dessous sous « conservées par l'éditeur », encodée comme un terminal l'attend.
43
44| Touche | Octets envoyés |
45| --- | --- |
46| caractère imprimable | son encodage UTF-8 |
47| `Alt-<touche>` | `ESC` suivi des octets de cette touche |
48| `Ctrl-A``Ctrl-Z` | `0x01``0x1a` |
49| `Enter` | `\r` |
50| `Tab` | `\t` |
51| `Shift-Tab` | `ESC [ Z` |
52| `Backspace` | `0x7f` |
53| `Escape` | `0x1b` |
54| `↑` `↓` `→` `←` | `ESC [ A B C D`, ou `ESC O A B C D` en mode curseur application |
55| `Home` `End` | `ESC [ H`, `ESC [ F`, ou les formes `ESC O` en mode curseur application |
56| `Insert` `Delete` | `ESC [ 2~`, `ESC [ 3~` |
57| `PgUp` `PgDn` | `ESC [ 5~`, `ESC [ 6~` |
58| `F1``F4` | `ESC O P Q R S` |
59| `F5``F12` | `ESC [ 15~ 17~ 18~ 19~ 20~ 21~ 23~ 24~` |
60
61Une touche sans signification pour un terminal n'envoie rien.
62
63### Conservées par l'éditeur
64
65| Touche | Action |
66| --- | --- |
67| `F1``F12` | Leur action habituelle dans l'éditeur |
68| `Alt-X` | Quitter |
69| `Alt-0``Alt-9` | Lister les fenêtres / passer la fenêtre 1…9 au premier plan |
70
71Les touches de fonction n'atteignent donc jamais un programme lancé dans une fenêtre terminal.
72
73### Traitées par la fenêtre terminal elle-même
74
75| Touche | Action |
76| --- | --- |
77| `Shift-PgUp` | Reculer d'un écran dans l'historique |
78| `Shift-PgDn` | Avancer d'un écran |
79
80Toute touche envoyée au shell ramène également la vue à l'écran vivant.
81
82## Souris
83
84| Action | Effet |
85| --- | --- |
86| Molette haut / bas | Défiler de trois lignes dans l'historique |
87| Clic | Passe la fenêtre au premier plan ; n'est pas transmis au programme |
88
89Le rapport souris n'est pas implémenté : un programme n'est jamais informé des clics.
90
91## Historique
92
93| Propriété | Valeur |
94| --- | --- |
95| Lignes conservées | 2000 |
96| Ce qui est conservé | Uniquement les lignes sorties par le haut de l'écran principal |
97| Écran alternatif | Non conservé — un programme plein écran ne laisse aucun historique |
98
99## Émulation
100
101`TERM` vaut `xterm-256color`. Voici ce qui en est implémenté.
102
103### Caractères de contrôle
104
105| Octet | Effet |
106| --- | --- |
107| `0x07` BEL | Noté ; l'éditeur ne l'émet pas |
108| `0x08` BS | Curseur d'une colonne à gauche |
109| `0x09` HT | Jusqu'à la tabulation suivante, toutes les 8 colonnes |
110| `0x0a` `0x0b` `0x0c` | Saut de ligne |
111| `0x0d` CR | Colonne 1 |
112
113### Séquences d'échappement
114
115| Séquence | Nom | Effet |
116| --- | --- | --- |
117| `ESC D` | IND | Saut de ligne |
118| `ESC E` | NEL | Retour chariot et saut de ligne |
119| `ESC M` | RI | Saut de ligne inverse, en conservant la colonne |
120| `ESC 7` | DECSC | Sauvegarder le curseur et le style |
121| `ESC 8` | DECRC | Les restaurer |
122| `ESC c` | RIS | Réinitialisation complète |
123
124### Séquences CSI
125
126| Séquence | Nom | Effet |
127| --- | --- | --- |
128| `CSI n A B C D` | CUU CUD CUF CUB | Déplacer de n cellules haut, bas, droite, gauche |
129| `CSI n E F` | CNL CPL | n lignes plus bas / plus haut, colonne 1 |
130| `CSI n G` | CHA | Aller à la colonne n |
131| `CSI l ; c H`, `CSI l ; c f` | CUP HVP | Aller à la ligne l, colonne c |
132| `CSI n d` | VPA | Aller à la ligne n |
133| `CSI n J` | ED | Effacer l'écran : 0 jusqu'à la fin, 1 jusqu'au début, 2 ou 3 tout |
134| `CSI n K` | EL | Effacer la ligne : 0 jusqu'à la fin, 1 jusqu'au début, 2 tout |
135| `CSI n L` | IL | Insérer n lignes vides au curseur |
136| `CSI n M` | DL | Supprimer n lignes au curseur |
137| `CSI n @` | ICH | Insérer n cellules vides |
138| `CSI n P` | DCH | Supprimer n cellules |
139| `CSI n X` | ECH | Effacer n cellules sur place |
140| `CSI n S` | SU | Faire défiler la région de n lignes vers le haut |
141| `CSI n T` | SD | Faire défiler la région de n lignes vers le bas |
142| `CSI h ; b r` | DECSTBM | Définir la région de défilement aux lignes h…b |
143| `CSI s`, `CSI u` | SCP RCP | Sauvegarder / restaurer le curseur |
144| `CSI … m` | SGR | Couleurs et attributs, ci-dessous |
145
146`IL` et `DL` ne font rien lorsque le curseur est hors de la région de défilement.
147
148### Modes privés
149
150Activés par `CSI ? n h`, désactivés par `CSI ? n l`.
151
152| n | Nom | Effet |
153| --- | --- | --- |
154| 1 | DECCKM | Touches curseur application : les flèches envoient `ESC O x` |
155| 7 | DECAWM | Retour à la ligne automatique à la marge droite |
156| 25 | DECTCEM | Afficher le curseur |
157| 47, 1047 | | Écran alternatif |
158| 1048 | | Sauvegarder / restaurer le curseur |
159| 1049 | | Sauvegarder le curseur, puis l'écran alternatif |
160
161Tout autre mode est analysé et ignoré.
162
163### SGR
164
165| Code | Effet |
166| --- | --- |
167| 0 | Réinitialisation |
168| 1, 22 | Gras activé / désactivé |
169| 2, 22 | Atténué activé / désactivé |
170| 3, 23 | Italique activé / désactivé |
171| 4, 24 | Souligné activé / désactivé |
172| 5, 6, 25 | Clignotement activé / désactivé |
173| 7, 27 | Vidéo inverse activée / désactivée |
174| 9, 29 | Barré activé / désactivé |
175| 30–37, 40–47 | Les huit couleurs normales, premier plan / fond |
176| 90–97, 100–107 | Les huit couleurs vives, premier plan / fond |
177| 38;5;n, 48;5;n | Couleur n de la palette de 256 |
178| 38;2;r;g;b, 48;2;r;g;b | Couleur 24 bits |
179| 39, 49 | Retour à la couleur du thème |
180
181Les seize couleurs nommées sont celles de tcell, c'est-à-dire la palette configurée dans le terminal de l'utilisateur, et non des valeurs hexadécimales figées. Une couleur étendue à court de paramètres laisse le style inchangé. Tout autre code est ignoré.
182
183### OSC
184
185| Séquence | Effet |
186| --- | --- |
187| `OSC 0 ; texte BEL`, `OSC 2 ; texte BEL` | Définir le titre de la fenêtre |
188| `OSC … ST` | Le terminateur `ESC \` est accepté à la place de BEL |
189
190Le titre est plafonné à 4096 octets. Les autres commandes OSC sont analysées et ignorées.
191
192### Consommées et ignorées
193
194Analysées correctement, donc jamais affichées comme des caractères parasites, mais sans effet :
195
196| Séquence | Nom |
197| --- | --- |
198| `ESC P …`, `ESC X …`, `ESC ^ …`, `ESC _ …` | DCS, SOS, PM, APC — lues jusqu'à leur terminateur de chaîne |
199| `ESC (`, `ESC )`, `ESC *`, `ESC +`, `ESC %`, `ESC #`, `ESC <espace>` | Sélecteurs de jeu de caractères et de taille de ligne — l'émulateur travaille en UTF-8 de toute façon |
200| `CSI ? n h`, `CSI ? n l` pour tout autre n | Modes privés non listés ci-dessus |
201| Tout autre octet final CSI, code SGR ou commande OSC | |
202
203### Non implémenté
204
205Le rapport souris, le collage entre crochets, les bascules shift-in / shift-out, les lignes double largeur, sixel et les autres protocoles graphiques, ainsi que les rapports d'état et d'attributs DEC. Un programme qui en demande un n'obtient aucune réponse : celui qui en attend une attendra indéfiniment.
206
207## Couleurs
208
209| Clé de thème | Ce qu'elle colore |
210| --- | --- |
211| `terminal.text` | Toute cellule dont le programme n'a pas choisi la couleur |
212| `terminal.cursor` | La cellule sous le curseur, quand la fenêtre a le focus |
213
214Voir [Format des fichiers de thème](themes.md).
215
216## Erreurs
217
218| Message | Cause |
219| --- | --- |
220| Terminal windows are not supported on this platform yet | La compilation n'a pas de support des pseudo-terminaux : toute plateforme autre que Linux, macOS et Windows |
221| `openpt: …`, `grantpt: …`, `ptsname: …` | Le système d'exploitation a refusé d'ouvrir un pseudo-terminal |
222| `fork/exec …: no such file or directory` | `$SHELL` désigne un programme inexistant |
223
224## Voir aussi
225
226- [Lancer des commandes shell sans quitter l'éditeur](../how-to/use-a-terminal.md)
227- [Fenêtres terminal](../explanation/terminal-windows.md)
228- [Clavier](keyboard.md)