もう一度呪いで足を濡らすために、シンプルなコンソールアプリに取り組んでいます。アプリをxpからAIXに移植する際に少し問題があります。これがコードのサンプルチャンクです。
int main(void)
{
WINDOW *_window = initscr();
int _rows;
int _cols;
cbreak();
/* Accept all keys */
keypad(_window, true);
/* Don't echo things that are typed */
noecho();
/* Get the screen dimensions */
getmaxyx(_window, _rows, _cols);
/* Don't display cursor */
curs_set(0);
for (;;)
{
printw("Press a Key ");
refresh();
int key = wgetch(_window);
printw("%d \n", key);
}
endwin();
return 0;
}
XPでこれを実行すると、DOWNARROWの後にCTRL-DOWNARROWが続く次の出力が得られます。
Press a Key 258
Press a Key 481
Press a Key
258は下矢印のコードであり、481はctrl-下矢印のコードです。
AIXでこれと同じテストを実行します。
Press a Key 1858
Press a Key 27
Press a Key 79
Press a Key 66
Press a Key
1858は下向き矢印で、27/29/66は下向き矢印の応答です。27/29/66はおそらく標準のエスケープシーケンスの1つであることを認識しています。私は呪いがそれを単一の値にマッピングすることを望んでいました。XP側には、curses.hファイルで定義されたCTL_DOWNがあります。AIX側はそうではありません。
だからここでの私の質問は
それらは私がここで見逃したいくつかの呪文ですか、それはそれらの3つの文字を素敵なユニークな整数に魔法のようにマッピングしますか?または、プラットフォーム固有のキーストロークを実際のアプリで使用できるものに隠すために、ある種のクラスを作成する必要がありますか?
私の目は、AIXオンラインのものを検索することからの血のショットです。私を正しい方向に向けるための助けをいただければ幸いです。
その他のランダムな情報
最新のサービスパックmsvc6、サービスパック6でxpproを実行しています。cursesライブラリはpdcursesです。
他のコンパイラーはIBMXLC / C ++ ENTERPRISEEDITIONV8.0です。
xlc ++ -g app.cpp -lcurses
PCではpdcurses33を使用し、AIXではネイティブのcursesを使用しています。