どうすればいいですか?複数行を含めるかshift+up
選択するターミナルメニューが必要ですshift+down
。
ncurses
問題があるようです。
必ずしも高レベルの端末ライブラリが必要ではありません。私のIOが非常に単純でなければならないこと以外は、この問題に対処したいと思います。
どんな提案がありますか?
ベストアンサー1
質問の文脈で複数の項目を選択する方法を尋ねる質問なので、および(たとえば、代わりに)を参照しshift+up
てください。shift+down
shift-cursor-up
shift-cursor-down
shift-page-up
shift-page-down
ワイヤー。
これは実際には1つ以上の質問です。
- まず、ncursesを認識する方法
shift+up
など - ncursesメニューライブラリがこれを行うかどうか
- そうでない場合は、これを行うためのメニューをどのように取得しますか?
まず、ncursesは移植可能な(やや少ない)特別なキーセット用に事前定義された(X / Open Curses別)定義を提供します。引用する用語情報(5)、以下を確認できます。
key_sf kind kF scroll-forward key
key_sleft kLFT #4 shifted left-arrow
key
key_sr kri kR scroll-backward key
key_sright kRIT %i shifted right-arrow
key
しかし、「上矢印キー」と表示されているものはありません。遅れた判断だけがkind
調和kri
と調和をkLFT
結ぶことができますkRIT
。 1999年に修正された特殊キーのサポートがxtermに追加される前は、従来の技術はほとんどありませんでした。
パッチ #94 - 1999/3/27 - XFree86 3.9Pf
Shift、Control、またはAltが設定されているかどうかを示すパラメータをファンクションキーに追加します。これらのコードは、PCキーボード付きのDEC VT510のJeffrey Altmanの説明に基づいています。
後でアプリケーションの混乱を減らすためにスキームが修正されました。 xtermからこの機能をコピーした他の開発者は、自分のプログラムに従うように変更しませんでした。
パッチ #167 - 2002/8/24 - XFree86 4.2.0
modifyCursorKeys
Shiftと同様の修飾子を使用してカーソルエスケープシーケンスを生成する方法を制御するリソースを追加します。デフォルトでは、変更されたエスケープシーケンスは常にCSIで始まり、修飾子を2番目の引数として使用して、最初の引数を反復回数として解釈するアプリケーションの混乱を防ぎます。リソースを0に設定すると、元の動作が得られます(Stephen J Turnbull、Jeffrey Altmanとのニュースグループの議論)。
また、ncursesではこれを端末記述に組み込むことが役に立ちます(ncursesはtmuxで使用されるテーブルではなく端末データベースを使用するためです)。これは、次によって導入されたユーザー定義関数の機能に依存します。ncurses 5.0。ターミナルデータベースでは、この機能はxtermに記載されています。2004年:
# 2004-07-17
# * add xterm-pc-fkeys -TD
その中には(早ければ除く)2001年)は、xtermリソースのさまざまな組み合わせで使用できる修飾子エンコーディングのバリエーションと、xtermエンコーディングスキームとの程度が異なる同様のコンテンツを処理しようとします。
ユーザー定義関数の規則は、最初にxterm修飾子コードに対応する番号とkDN
リストkUP
(yourshift+down
と)に追加することです。ずっと後、それは同じ意味を持つことができることがshift+up
わかりました。しかし、結果として端末記述を見つけることができます(ncurses読み取りのみ可能 - 端末データベースを直接読み取る他のアプリケーションやライブラリは約16年間これを無視しました)。kind
kri
kDN
kUP
拡張機能は次のとおりです。端末データベース。
これで(パート2)、ncursesはメニューライブラリを提供します。これはSVr4メニューライブラリの再実装です(マルチバイト文字サポートなどのいくつかの拡張を含む)。マンページを参照してください。menu_driver(3x)
この目的のためにncurses - 例図書館を表示します。簡単に言えば、メニューライブラリはユーザーが要求する動作を事前定義しませんが、アプリケーションはライブラリを使用して要求されたアクションを実行できます。まず、この詳細を使用する方法を見てください。
REQ_TOGGLE_ITEM
項目を選択/選択解除します。
このアプリケーションでカスタム関数を使用すると、より大きな問題が発生します。フォームライブラリとメニューライブラリを使用するほとんどのアプリケーションは、Caseステートメントの特殊キーを使用して事前定義されたシンボルに依存します。なぜならshift+up
、あなたshift+down
はこれを持っていないでしょう(そしてそのkind
偶然がkri
発見され適用されない限り)。カスタム機能の場合、事前定義されたキーコード(例:KEY_DOWN
Medium)はありませんcurses.h
。代わりに、ランタイムによって決定される値があります。key_defined
機能。したがって、簡単なケースの説明の代わりに(以下があります。)はいKEY_SDOWN
)curses.h
、いくつかの間接参照が必要です。