-#define Show(btn,name) ((event.bstate & NCURSES_MOUSE_MASK(btn, name)) != 0) ? #name : ""
- curline = logw(curline,
- "button %d %s %s %s %s %s %d[%x] @ %d, %d",
- btn,
- Show(btn, NCURSES_BUTTON_RELEASED),
- Show(btn, NCURSES_BUTTON_PRESSED),
- Show(btn, NCURSES_BUTTON_CLICKED),
- Show(btn, NCURSES_DOUBLE_CLICKED),
- Show(btn, NCURSES_TRIPLE_CLICKED),
- (event.bstate & REPORT_MOUSE_POSITION) != 0,
- events,
- event.y, event.x);
+#define ShowQ(btn,name) \
+ (((event.bstate & NCURSES_MOUSE_MASK(btn, NCURSES_ ## name)) != 0) \
+ ? (" " #name) \
+ : "")
+#define ShowM(name) \
+ (((event.bstate & NCURSES_MOUSE_MASK(btn, BUTTON_ ## name)) != 0) \
+ ? (" " #name) \
+ : "")
+#define ShowP() \
+ ((event.bstate & REPORT_MOUSE_POSITION) != 0 \
+ ? " position" \
+ : "")
+ logw("[%08lX] button %d%s%s%s%s%s%s%s%s%s @ %d, %d",
+ (unsigned long) events,
+ btn,
+ ShowQ(btn, BUTTON_RELEASED),
+ ShowQ(btn, BUTTON_PRESSED),
+ ShowQ(btn, BUTTON_CLICKED),
+ ShowQ(btn, DOUBLE_CLICKED),
+ ShowQ(btn, TRIPLE_CLICKED),
+ ShowM(SHIFT),
+ ShowM(CTRL),
+ ShowM(ALT),
+ ShowP(),
+ event.y, event.x);
+ found = TRUE;
+ }
+ /*
+ * A position report need not have a button associated with it.
+ * The modifiers probably are unused.
+ */
+ if (!found && (event.bstate & REPORT_MOUSE_POSITION)) {
+ logw("[%08lX]%s%s%s%s @ %d, %d",
+ (unsigned long) events,
+ ShowM(SHIFT),
+ ShowM(CTRL),
+ ShowM(ALT),
+ ShowP(),
+ event.y, event.x);