8. Encoding of Terminal Modes (端末モードの符号化)
8. Encoding of Terminal Modes (端末モードの符号化)
すべての encoded terminal modes (pty 要求で渡される) はバイトストリームに符号化される. 符号化は異なる環境間で移植可能であることを意図している. ストリームは操作コードと引数の対からなり, 操作コードはバイト値である. 操作コード 1〜159 はそれぞれ単一の uint32 引数を持つ. 操作コード 160〜255 は未定義であり, 解析を停止させる (他のデータの後にのみ用いるべき). ストリームは操作コード TTY_OP_END (0x00) で終端する.
クライアントは知っているモードをすべてストリームに入れるべきであり, サーバは知らないモードを無視してよい. これにより少なくとも POSIX 風 tty インタフェースを使うシステム間である程度機械非依存性が得られる. 他のシステムもサポートできるが, クライアントはサーバ pty を妥当なモードにするために複数パラメータに妥当な値を入れる必要がある場合がある (サーバは未指定のモードビットを既定値のままにし, 意味のある組み合わせは一部に限られる).
操作コード値の命名は主に POSIX 端末モードフラグに従う. 以下の操作コード値が定義されている. 読みやすさのため十進で示すが, 実際はバイト値である.
| opcode | mnemonic | description (説明) |
|---|---|---|
| 0 | TTY_OP_END | オプションの終端を示す. |
| 1 | VINTR | 割り込み文字. なければ 255. 他の文字も同様. すべてのシステムでこれらがサポートされるわけではない. |
| 2 | VQUIT | 終了文字 (POSIX では SIGQUIT). |
| 3 | VERASE | カーソル左の文字を消す. |
| 4 | VKILL | 現在の入力行を打ち切る. |
| 5 | VEOF | EOF 文字 (端末から EOF を送る). |
| 6 | VEOL | CR や LF に加えての行末文字. |
| 7 | VEOL2 | 追加の行末文字. |
| 8 | VSTART | 停止した出力を再開 (通常 control-Q). |
| 9 | VSTOP | 出力を一時停止 (通常 control-S). |
| 10 | VSUSP | 現在のプログラムを一時停止. |
| 11 | VDSUSP | 別の一時停止文字. |
| 12 | VREPRINT | 現在の入力行を再表示. |
| 13 | VWERASE | カーソル左の語を消す. |
| 14 | VLNEXT | 次に打った文字を特殊文字でも文字通り入力 |
| 15 | VFLUSH | 出力をフラッシュする文字. |
| 16 | VSWTCH | 別のシェル層に切り替え. |
| 17 | VSTATUS | システム状態行 (負荷, コマンド, pid 等) を表示. |
| 18 | VDISCARD | 端末出力のフラッシュのオンオフ. |
| 30 | IGNPAR | パリティ無視フラグ. FALSE ならパラメータは 0, TRUE なら 1 とすべきである. |
| 31 | PARMRK | パリティとフレーミングエラーをマーク. |
| 32 | INPCK | パリティエラー検査を有効化. |
| 33 | ISTRIP | 文字から第 8 ビットを取り除く. |
| 34 | INLCR | 入力で NL を CR にマップ. |
| 35 | IGNCR | 入力で CR を無視. |
| 36 | ICRNL | 入力で CR を NL にマップ. |
| 37 | IUCLC | 大文字を小文字に変換. |
| 38 | IXON | 出力フロー制御を有効化. |
| 39 | IXANY | stop 後は任意の文字で再開. |
| 40 | IXOFF | 入力フロー制御を有効化. |
| 41 | IMAXBEL | 入力キューが満杯でベルを鳴らす. |
| 50 | ISIG | INTR, QUIT, [D]SUSP シグナルを有効化. |
| 51 | ICANON | 入力行を正規化. |
| 52 | XCASE | 小文字の前に "\" を付けて大文字の入出力を可能にする. |
| 53 | ECHO | エコーを有効化. |
| 54 | ECHOE | 文字を視覚的に消す. |
| 55 | ECHOK | kill 文字で現在行を捨てる. |
| 56 | ECHONL | ECHO がオフでも NL をエコー. |
| 57 | NOFLSH | 割り込み後にフラッシュしない. |
| 58 | TOSTOP | バックグラウンドジョブの出力を止める. |
| 59 | IEXTEN | 拡張を有効化. |
| 60 | ECHOCTL | 制御文字を ^(Char) としてエコー. |
| 61 | ECHOKE | 行 kill の視覚的消去. |
| 62 | PENDIN | 保留中の入力を再入力. |
| 70 | OPOST | 出力処理を有効化. |
| 71 | OLCUC | 小文字を大文字に変換. |
| 72 | ONLCR | NL を CR-NL にマップ. |
| 73 | OCRNL | (出力) CR を改行に変換. |
| 74 | ONOCR | (出力) 改行を CR-改行に変換. |
| 75 | ONLRET | (出力) 改行で CR を実行. |
| 90 | CS7 | 7 ビットモード. |
| 91 | CS8 | 8 ビットモード. |
| 92 | PARENB | パリティ有効. |
| 93 | PARODD | 奇パリティ, そうでなければ偶. |
| 128 | TTY_OP_ISPEED | 入力ボーレート (ビット毎秒). |
| 129 | TTY_OP_OSPEED | 出力ボーレート (ビット毎秒). |