UNIXプラットフォーム用のコンソールアプリケーションを作成しており、curses(またはncurses)ライブラリを使用してキーボードとマウスの入力を処理しています。問題は、そのためにそれをどのように正確に使用するかについてのドキュメントがほとんど見つからないことです。このページとこのページのアパートには、非常に詳細な例がありません。左クリックをキャプチャできましたが、ターミナルエミュレータのオプションメニューがカーソル位置に表示されるため、右クリックで機能させることができませんが、イベントはアプリケーションによって処理されません。これを回避して、アプリケーションでイベントをキャプチャするにはどうすればよいですか?
マウスイベントの構成については、次の行があります。
// Set up mouse event throwing
mousemask(BUTTON1_PRESSED | BUTTON2_PRESSED, NULL);
そして、入力を処理するメソッドには、次のものがあります。
int c = getch();
MEVENT event;
switch(c)
{
case KEY_UP:
... do stuff
break;
case KEY_DOWN:
... do stuff
break;
case KEY_MOUSE:
if(getmouse(&event) == OK)
{
if(event.bstate & BUTTON1_PRESSED) // This works for left-click
{
... do stuff
}
else if(event.bstate & BUTTON2_PRESSED) // This doesn't capture right-click
{
... do other stuff
}
else
fprintf(stderr, "Event: %i", event.bstate); // Doesn't print anything on right-click
}
break;
default:
return;
}
mousemask()
マスクを使用して構成も試みましALL_MOUSE_EVENTS
たが、それでも最後のelse
句にイベントが出力されないため、イベントがトリガーされていないだけだと思います。これに関する助けをいただければ幸いです。