私はUnixプラットフォーム用のコンソールアプリケーションを作っています。私はcurses(またはncurses)ライブラリを使ってキーボードとマウスの入力を処理しています。問題は非常に詳細な例を持たないthis pageとthis oneのappartから、それをどのように正確に使用するのかについてのほとんどのドキュメントが見つかりませんでした。 左クリックをキャプチャできましたが、ターミナルエミュレータのオプションメニューがカーソル位置に表示されますが、イベントはアプリケーションによって処理されないため、右クリックでは機能しません。これを避けて、イベントをアプリケーションに取り込ませるにはどうしたらいいですか?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
句にはまだイベントが表示されないため、イベントが発生していないことがわかります。 これに関するお手伝いをさせていただきます。
端末エミュレータが右クリックイベントを端末ウィンドウに一切渡していないように見えます。ほとんどのエミュレータには、入力デバイスの特別な処理を無効にするオプションがあり、イベントをターミナルに直接渡すことができます。 –
さて、私は複数の端末で実行しようとしました.Ubuntu 11.10のデフォルト端末、Guake、NetBeans IDEの内部端末であり、どれも動作しません。イベントをアプリに渡すためにどのように設定することができたか知っていますか? –
http://askubuntu.com/questions/21330/how-to-disable-right-click-menu-in-minminal同様の質問のために、部分的な答え、すなわちxtermを使います。 –