通常、ホイールマウスのイベントは、ボタン4と5として表示されます。「すべてイベント」フラグには、それが含まれます。代わりに興味のあるボタンのフラグの組み合わせを使用すると、必要な結果が得られます。
manual pageには利用可能なフラグ(ncurses.hヘッダーファイルにも記載されています)が一覧表示されていますが、1つのボタンのすべてのイベントに対応する定義済みシンボルはありません。
ところで、ncurses5(ncurses6 was released in August 2015)では、ビットが割り当てられているためにボタン5を検出できません。あなたがncurses5とボタン4を取得します
/*
* In 32 bits the version-1 scheme does not provide enough space for a 5th
* button, unless we choose to change the ABI by omitting the reserved-events.
*/
#if NCURSES_MOUSE_VERSION > 1
#define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
#define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
#define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
#define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
#define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
#define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L)
#define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L)
#define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L)
#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L)
#else
#define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
#define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
#define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
#define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
#define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L)
#define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L)
#define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L)
#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L)
#endif
、しかし:ヘッダファイルでは、このセクションでは、ボタン5がレポート - マウスの位置とマスクの同じ部分を使用していたので、あなたの質問に関連していますボタン5はクラックを通り抜けます(いくつかのイベントが表示されますが、ボタン5であることはわかりません)。議論するホイールマウスを誰かが持っている前に、マスクを設置しました(1995年後半)。
私はncurses 5を使用していますので、BUTTON4イベントを取得するはずはありませんか? 私はREPORT_MOUSE_POSITIONイベントのみを取得します。 – Nathan