問題タブ [vt100]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - VT100/ANSI 端末の理解
私は、VT100/ANSI ターミナル インターフェイス (telnet またはモデム経由) を提供する C# の小さなサーバー アプリケーションに取り組んでいます。
私は VT100/ANSI についていくつかの調査を行っていますが、読めば読むほど混乱します。ansiエスケープ/制御シーケンスを処理するための単純なパーサーを実装したいのですが、仕様には可能なコマンドがたくさん含まれています。基本的に、私の質問はこれに要約されます:
1) telnet ベースのクライアント (putty など) または単純なダイヤルアップ プログラム (minicom やハイパーターミナルなど) を扱う場合、どのコマンドを実装する必要がありますか。これらのアプリでは、多くのエスケープ シーケンスが単に使用されていないか無視されていると確信しています。
2) ESC 文字がプレフィックスとして付いている場合、C0 制御文字のみを処理する必要がありますか? または、通常のテキストシーケンスでそれらに遭遇したときも? この重要な情報をドキュメントから引き出すことはできません。
3) プライベート コントロール シーケンスを気にする必要がありますか?
前もって感謝します、
ジェローン。
linux - xterm / vt102シーケンスを実行してターミナルウィンドウを埋め、キーを押して終了し、画面に表示されていたものをすべてクリアしますか?
VT102シーケンスと、ncursesなどのライブラリがどのように機能するかについて頭を悩ませようとしています。
例を挙げると、Emacsを開くと、ターミナルウィンドウがいっぱいになります。をC-x C-c押すと、プログラムが終了し、ターミナルウィンドウはemacsを起動する前とまったく同じように見えます(つまり、カーソルの上の行は、emacs
emacsがレンダリングしたものではなく、zsh履歴のコマンドを示しています)。
一種の「HelloWorld」として、開いてから、ターミナルにある行と同じ数の行(空白行、背景色)を/dev/tty
書き込む小さなルビースクリプトを作成しました。\x1B[48;597m\n
その後、プログラムは5秒間スリープし、明るいオレンジ色の画面を一瞬見つめています。次に、それが終了し、zshプロンプトが表示されたままになり、その上に53行の明るいオレンジが表示されます。
2つの質問:
- ターミナルウィンドウを色で塗りつぶす正しい方法は、背景色で空白行を書くことですか?
- VT102シーケンスを/dev/ ttyに送信して、画面を完全にクリアするにはどうすればよいですか?
送信することはできます\x1B[2J
が、これはコマンドを実行したときと同じことをclear
行い、実際には、カーソルを空白のウィンドウの一番上に置くまで、カーソルをどこにでも置いたままにするのではなく、すべてのコンテンツをターミナルウィンドウの上方に移動します。当然のことながら、私のプログラムが画面に大量の空白行を書き込まなかった場合です。
PS:誰もが実際にサブスクライブする可能性が高い、ここで使用するタグがわかりません。
java - Javaターミナルエミュレータ
vt100ターミナルをエミュレートするライブラリまたはクラスを知っている人はいますか(グラフィカルかどうかは関係ありません)。基本的に必要なのは、vt100端末のロジックを実装するクラスです(「削除」コードを受信すると削除関数が呼び出される場合や、GUIベースの場合は1文字が削除されます)。
assembly - 8051で送信済みのシリアルデータを新しいデータに置き換える
シリアル データ (3 桁) をハイパー ターミナルに送信する数カウント プログラムがあります。そのプログラムは 1 秒ごとにカウント (増加/減少) します。カウントするたびにシリアルアウトに送ります。
ただし、ハイパーターミナルにさらに 3 桁追加しているだけです。最初に以前のデータを消去したい。
実行する方法?バックスペース(08h)aldyを試してみました。それは奇妙です、ランダムに削除します。
ありがとう。
terminal - vt100 ターミナル エミュレータのキーボード送信モード
vt100 ターミナル エミュレーターを JavaScript で実装しています。vt100 仕様 (man terminfo
およびからinfocmp
)smkx=\E[?1h\E=
は、キーボード送信モードに入るコードでrmkx=\E[?1l\E>
あり、「キーボード送信」モードを終了するコードであることを示しています。キーボード送信モードとは何か、よくわかりませんでした。
http://vt100.net/dec/ek-vt220-tm-001.pdfから、
7.4.4.1 キーボード送信モード-- キーボード コードとその他のいくつかの特殊コードは、8051 のポートのシリアル ライン出力を介して送信されます。送信された信号は、8051 からキーボード ケーブル、モニター、およびビデオ ケーブルを介してドライバーに送られます。 CPUに。8051 内の UART が送信を制御します」
に入るときと出るvim
ときに、それぞれこれらのコードを取得しています。これらのコードを安全に無視できますか、それとも処理する必要がありますか? 後者の場合、どうすればいいですか?
vt100 - VT100の左上隅は0,0または1,1ですか?
ucon(http://www.umonfw.com/ucon)というターミナルエミュレーターを作成/保守しました。これを実際の端末エミュレーターと呼ぶのは悲しいことだと思います。なぜなら、それは多くの優れた機能を果たしますが、VT100エスケープシーケンスの処理はあまり得意ではないからです。とにかく、私が解決したことのない問題の1つは、左上隅(TLC)の実際の座標位置です。かなり長い間、私は1,1がTLCであると想定していました(これはVIが使用しているようです)。ただし、0,0がTLCであるように見える場合がいくつかあります。さらに、プログラムが実際にエスケープシーケンス "<1b> [0; 0f"を使用して、カーソルを0,0の位置に強制するのを時々目にします。したがって、カーソルが意図的に画面の外に置かれていないと仮定すると、0,0がTLCであると仮定する必要があります。
VT100の第一人者はいますか?
linux - GNU screen を使用して、リモート アプリケーションからの一連の入力に応答してプロセスを実行するにはどうすればよいですか?
GNU screen を使用して VT100 ターミナル サーバー (DOSEMU で実行されている DOS) に接続しています。サブプロセスを実行してサブプロセスを終了するようにエスケープ シーケンスを構成したいと考えています。これは printcmd と似ていますが、プロセスの STDOUT をリモート サーバーの STDIN に返す点が異なります。GNU screen マニュアルを読み、exec の基本を理解しましたが、リモート エスケープ シーケンスで exec を実行する方法がわかりません。
c++ - Linux システムでの \r の意味
次のようなものを出力しているLinux固有のコードを見ています:
stdio へ。
現在の行から画面の内容を削除することを表していることは理解して<ESC>[J
いますが、ここで \r は何をしますか?
次のことも見ています。
user_input は、ユーザーが入力したテキストです。しかし、ここで \r の目的は何ですか?
putty - PuTTyはANSI/VT100エスケープシーケンスで正しく機能しますか?
FreescaleMC9S12C32プロセッサ用のHC12Assemblyのクラスのプログラムを作成しています。シリアル(-over-USB)を介してデバイスに接続されている端末としてPuTTyを使用しています。この割り当てでは、VT100 / ANSIエスケープシーケンスを使用してカーソルを任意の場所に移動し、現在の時刻を書き込んでからそれを返すことを想定しています。これにより、ユーザーは入力して入力をエコーバックできます。
以下のシーケンスを使用して、カーソルを保存し、移動して、戻します。しかし、何らかの理由で、PuTTyはカーソルを左上に置くだけで、カーソルを返すことができません。
エスケープシーケンスを間違ってコーディングしていますか、それともPuTTyは期待どおりにエスケープシーケンスを処理しませんか?
c# - c# で GUI を作成して、既存の仮想エミュレーターのユーザー インターフェイスを置き換えることは可能ですか?
デバイスとの telnet セッションを確立する Linux サーバーがあります。デバイスは vt100 ターミナル エミュレータを使用してサーバーと通信しています。
ターミナル エミュレータを使用する代わりに、サーバーとの telnet セッションを確立する ac# プログラムを使用したいと考えています。サーバー上のコードを変更せずに、端末エミュレーターが使用していたのと同じ telnet セッションを使用して、デバイス上でより優れたグラフィカル ユーザー インターフェイスを表示したいと考えています。
これは、サーバーが telnet セッションを介して送信しているものの例です。意味のあるデータを抽出して、c# ラベル/ボタン/などを使用して表示することは可能ですか?
[1;1H[7mRF ID - V2.03D[608][2;1H[mxlqqqqqqqqqqqqqk[2;19Hx[3;1Hxxキー]