問題タブ [terminfo]
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.
vim - ハイライト属性が端末で表示可能かどうかを確認するには?
プラグインを作成していて、ハイライト属性 (太字、斜体、下線など) が実際に端末で表示可能かどうかを確認する必要があります。termcapで確認してみました。下線の例として、
xterm で TRUE になり、表示可能になります。
ただし、
win32 では TRUE になりますが、表示できません。
nvim では FALSE になりますが、表示可能です。
誰かがそれを正しくチェックする良い考えを持っていますか?
c - 画面を引き継がずに特殊キーを認識する
curses
またはncurses
ライブラリを使用するプログラムでは、getch()
関数は通常の文字 ( など'x'
) または矢印キーとファンクション キーによって送信されるエスケープ シーケンスのいずれかを認識できます。たとえば、上矢印キーを入力すると、シーケンス (Escape、'['、'A') が送信される場合がありますが、値getch()
が返されます。さらに、タイミング情報を使用して、それ自体が送信したエスケープ文字と、シーケンスの一部であるエスケープ文字を区別します。int
KEY_UP
getch()
正常に使用するには、最初に を呼び出す必要initscr()
があります。これにより、curses が表示内容を制御できるように画面がクリアされます。
画面を引き継がずに特殊キーを認識する便利な方法はありますか? 理想的には、getch()
最初に を呼び出さずに を呼び出しinitscr()
、 を呼び出した場合に返される値と同じ値を返すようにしたいのですinitscr()
が、実験ではそれが機能しないことが示されています。
これは、私がやろうとしていることのうまくいかない例です。プログラムはユーザーに Up、Down、Escape、Left、Right を入力するように促し、正しいキーが入力されたことを確認します。
-c
呼び出しを使用してプログラムを実行するinitscr()
と、正しく動作するようになります。最初に呼び出すことなく、-c
呼び出しなしで実行します。入力を待たずにすべての呼び出しが失敗し、 ( ) が返されます。getch()
initscr()
getch()
ERR
-1
-c
オプションなしの出力(Ubuntu 17.04 x86_64) は次のとおりです。
更新: curses 以外のものを使用したソリューションで問題ありません。検索する入力シーケンスを知るには、直接または間接的に terminfo を使用する必要があります。(特別なキー入力を認識することは簡単で、画面全体を引き継ぐことと密接に結びついているべきではないように私には思えます。)
unix - terminfo(5) の cursor_up (cuu1) と key_up (kcuu1) の違いは何ですか?
terminfo(5) では:
tput で試してみましたが、同じ出力が生成されます。
linux - 端末の内容を取得する
Linux 端末のテキスト コンテンツのスナップショットを取得することはできますか?
と はどちらも「カップ」モードtput
をサポートします (たとえば、代替バッファー モードを開始するため)。これは、画面の状態をどこかに保存する必要があることを意味します。これらのコンテンツを取得することは可能ですか?terminfo
tput smcup