8. Encoding of Terminal Modes (Codifica delle modalità del terminale)
8. Encoding of Terminal Modes (Codifica delle modalità del terminale)
Tutte le encoded terminal modes (così come passate in una richiesta pty) sono codificate in un flusso di byte. Si intende che la codifica sia portabile tra ambienti diversi. Il flusso è costituito da coppie opcode-argomento in cui l'opcode è un valore di un byte. Gli opcode da 1 a 159 hanno un singolo argomento uint32. Gli opcode da 160 a 255 non sono ancora definiti e causano l'interruzione dell'analisi (devono essere usati solo dopo eventuali altri dati). Il flusso è terminato dall'opcode TTY_OP_END (0x00).
Il client DOVREBBE inserire nel flusso tutte le modalità che conosce, e il server PUÒ ignorare le modalità che non conosce. Questo consente un certo grado di indipendenza dalla macchina, almeno tra i sistemi che utilizzano un'interfaccia tty di tipo POSIX. Il protocollo può supportare anche altri sistemi, ma il client potrebbe dover inserire valori ragionevoli per una serie di parametri affinché il pty del server venga impostato su una modalità ragionevole (il server lascia tutti i bit di modalità non specificati ai loro valori predefiniti e solo alcune combinazioni hanno senso).
La denominazione dei valori opcode segue per lo più i flag di modalità del terminale POSIX. Sono stati definiti i seguenti valori opcode. Si noti che i valori riportati di seguito sono in formato decimale per leggibilità, ma sono in realtà valori di un byte.
| opcode | mnemonic | description |
|---|---|---|
| 0 | TTY_OP_END | Indica la fine delle opzioni. |
| 1 | VINTR | Carattere di interruzione; 255 se assente. Analogamente per gli altri caratteri. Non tutti questi caratteri sono supportati su tutti i sistemi. |
| 2 | VQUIT | Il carattere di uscita (invia il segnale SIGQUIT sui sistemi POSIX). |
| 3 | VERASE | Cancella il carattere a sinistra del cursore. |
| 4 | VKILL | Elimina la riga di input corrente. |
| 5 | VEOF | Carattere di fine file (invia EOF dal terminale). |
| 6 | VEOL | Carattere di fine riga in aggiunta al ritorno a capo e/o all'avanamento di riga. |
| 7 | VEOL2 | Carattere di fine riga aggiuntivo. |
| 8 | VSTART | Continua l'output in pausa (normalmente control-Q). |
| 9 | VSTOP | Sospende l'output (normalmente control-S). |
| 10 | VSUSP | Sospende il programma corrente. |
| 11 | VDSUSP | Un altro carattere di sospensione. |
| 12 | VREPRINT | Ristampa la riga di input corrente. |
| 13 | VWERASE | Cancella una parola a sinistra del cursore. |
| 14 | VLNEXT | Inserisce il carattere successivo digitato letteralmente, anche se si tratta di un carattere speciale. |
| 15 | VFLUSH | Carattere per svuotare l'output. |
| 16 | VSWTCH | Passa a un diverso livello di shell. |
| 17 | VSTATUS | Stampa la riga di stato di sistema (carico, comando, pid, ecc.). |
| 18 | VDISCARD | Attiva/disattiva lo svuotamento dell'output del terminale. |
| 30 | IGNPAR | Il flag ignora parità. Il parametro DOVREBBE essere 0 se questo flag è FALSE e 1 se è TRUE. |
| 31 | PARMRK | Contrassegna errori di parità e di framing. |
| 32 | INPCK | Abilita il controllo degli errori di parità. |
| 33 | ISTRIP | Rimuove l'ottavo bit dai caratteri. |
| 34 | INLCR | Mappa NL in CR in input. |
| 35 | IGNCR | Ignora CR in input. |
| 36 | ICRNL | Mappa CR in NL in input. |
| 37 | IUCLC | Converte i caratteri maiuscoli in minuscoli. |
| 38 | IXON | Abilita il controllo di flusso in output. |
| 39 | IXANY | Qualsiasi carattere riavvia dopo lo stop. |
| 40 | IXOFF | Abilita il controllo di flusso in input. |
| 41 | IMAXBEL | Suona il campanello alla coda di input piena. |
| 50 | ISIG | Abilita i segnali INTR, QUIT, [D]SUSP. |
| 51 | ICANON | Canonizza le righe di input. |
| 52 | XCASE | Abilita l'input e l'output di caratteri maiuscoli facendo precedere le loro controparti minuscole da "\". |
| 53 | ECHO | Abilita l'eco. |
| 54 | ECHOE | Cancella i caratteri visivamente. |
| 55 | ECHOK | Il carattere kill scarta la riga corrente. |
| 56 | ECHONL | Emette echo di NL anche se ECHO è disattivato. |
| 57 | NOFLSH | Non svuotare dopo l'interruzione. |
| 58 | TOSTOP | Impedisce ai job in background di emettere output. |
| 59 | IEXTEN | Abilita le estensioni. |
| 60 | ECHOCTL | Emette echo dei caratteri di controllo come ^(Char). |
| 61 | ECHOKE | Cancellazione visiva per il kill di riga. |
| 62 | PENDIN | Digitare nuovamente l'input in sospeso. |
| 70 | OPOST | Abilita l'elaborazione in output. |
| 71 | OLCUC | Converte minuscole in maiuscole. |
| 72 | ONLCR | Mappa NL in CR-NL. |
| 73 | OCRNL | Traduce il ritorno a capo in nuova riga (output). |
| 74 | ONOCR | Traduce nuova riga in ritorno a capo-nuova riga (output). |
| 75 | ONLRET | La nuova riga esegue un ritorno a capo (output). |
| 90 | CS7 | Modalità a 7 bit. |
| 91 | CS8 | Modalità a 8 bit. |
| 92 | PARENB | Abilitazione parità. |
| 93 | PARODD | Parità dispari, altrimenti pari. |
| 128 | TTY_OP_ISPEED | Specifica la velocità in baud in input in bit al secondo. |
| 129 | TTY_OP_OSPEED | Specifica la velocità in baud in output in bit al secondo. |