見ている用語情報そしてパラメータ化された文字列。
いくつかの例は次のとおりですinfocmp -1 xterm
。
cud=\E[%p1%dB
、与えられたパラメータ13
:\E
=><ESC>
[
=>[
%p1
プッシュパラメータ1(13)スタックに%d
POPとスタックで符号付き10進数で印刷=>13
- 結果:
<ESC>[13B
- 結果:
csr=\E[%i%p1%d;%p2%dr
、与えられたパラメータ13, 16
:\E
=><ESC>
[
=>[
%i
増分パラメーター1と2:++ 13、++ 16は14、17を提供します。%p1
プッシュパラメータ1(14)スタックに。%d
スタックからPOPし、符号付き10進形式で印刷します。 =>14
;
=>;
%p2
プッシュパラメータ2(17)スタックに。%d
スタックからPOPし、符号付き10進形式で印刷します。 =>17
r
=>r
- 結果:
<ESC>14;17r
- 結果:
ところで…これをどのように読みますか?
u6=\E[%i%d;%dR
処理後にパラメータ1と2(存在する場合)を追加します\E[%i
。<ESC>[
しかし、スタックは空です。これらの2つを%d
スタックから取り出して両方の数字を印刷しないでください。
ベストアンサー1
一つはない%p
表示はncursesの珍しい点です:terminfoコンパイラ(チック)すべての用語情報を識別するために(使用%p1
到着表示パラメータ)またはtermcap(によって異なります)習慣パラメータとして)。これは合法でしょう。用語キャップ表現する。 ~からチックtermcap 式の処理方法がわかると、表示された文字列は、追加の翻訳なしで「十分に近い」。
次のコマンドを使用して、ncurses が実行する操作を確認できます。tput
、例えば、
tput u6 40 50
与えられる(引数の反転に注意)
^[[51;41R
式が次のように与えられた場合
u6=\E[%i%p2%d;%p1%dR
同じ結果が生成されます。
u6-u9 機能は初期段階です。拡大するncursesに記録端末データベース:
# INTERPRETATION OF USER CAPABILITIES
#
# The System V Release 4 and XPG4 terminfo format defines ten string
# capabilities for use by applications, <u0>...<u9>. In this file, we use
# certain of these capabilities to describe functions which are not covered
# by terminfo. The mapping is as follows:
#
# u9 terminal enquire string (equiv. to ANSI/ECMA-48 DA)
# u8 terminal answerback description
# u7 cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6)
# u6 cursor position report (equiv. to ANSI/ECMA-48 CPR)
#
# The terminal enquire string <u9> should elicit an answerback response
# from the terminal. Common values for <u9> will be ^E (on older ASCII
# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals).
#
# The cursor position request (<u7>) string should elicit a cursor position
# report. A typical value (for VT100 terminals) is \E[6n.
#
# The terminal answerback description (u8) must consist of an expected
# answerback string. The string may contain the following scanf(3)-like
# escapes:
#
# %c Accept any character
# %[...] Accept any number of characters in the given set
#
# The cursor position report (<u6>) string must contain two scanf(3)-style
# %d format elements. The first of these must correspond to the Y coordinate
# and the second to the %d. If the string contains the sequence %i, it is
# taken as an instruction to decrement each value after reading it (this is
# the inverse sense from the cup string). The typical CPR value is
# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals).
#
# These capabilities are used by tack(1m), the terminfo action checker
# (distributed with ncurses 5.0).
最後のコメントを確認してください釘練習u8
や、u9
しかしu6
、では何もしませんu7
。
拡張機能が追加されました1995年初め:
# 9.3.4 (Wed Feb 22 19:27:34 EST 1995):
# * Added correct acsc/smacs/rmacs strings for vt100 and xterm.
# * Added u6/u7/u8/u9 capabilities.
# * Added PCVT entry.
複数のアイテムに含まれていますが、真実性(多くはありません:18,699行に16回発生しましたterminfo.src
)この機能を使用している既知のユーザーはいません。実際、ncursesには次のことができる場所があります。できるこれを使用してifdef'dデバッグコードを作成しました(tty_update.c
ファイル)ですが、ハードコーディングされたエスケープシーケンス(「ANSI互換」と表示されます)を使用します。
ユーザー不在の理由は次のとおりです。
- 任意のterminfo式を反転するのは、ビューよりも困難です。
- xterm と同様の端末は、これらのエスケープシーケンスを解釈します。
存在するECMA-48、これらは(u7)デジタルSR(デバイスステータスレポート)および(u6)心肺蘇生術(活動位置報告)。