aboutsummaryrefslogtreecommitdiff
path: root/tests/mouse-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mouse-test.c')
-rw-r--r--tests/mouse-test.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/mouse-test.c b/tests/mouse-test.c
new file mode 100644
index 0000000..c7d3e57
--- /dev/null
+++ b/tests/mouse-test.c
@@ -0,0 +1,50 @@
+// Test the ncurses mouse API
+//gcc -o mouse-test mouse-test.c -I~/working-copies/ncurses-snapshots/include ~/working-copies/ncurses-snapshots/lib/libncursesw.a
+#include <strings.h>
+
+#include <curses.h>
+#include <term.h>
+
+#define BUTTON_NUM(X) \
+ (BUTTON##X##_PRESSED | BUTTON##X##_RELEASED | \
+ BUTTON##X##_CLICKED | BUTTON##X##_DOUBLE_CLICKED | BUTTON##X##_TRIPLE_CLICKED)
+#define BUTTON_EVENT(X) \
+ (BUTTON1_##X | BUTTON2_##X | BUTTON3_##X | BUTTON4_##X | BUTTON5_##X)
+
+int main(void)
+{
+ initscr();
+ raw();
+ noecho();
+ scrollok(stdscr, TRUE);
+
+ keypad(stdscr, TRUE);
+ mouseinterval(0);
+ mousemask(BUTTON_EVENT(PRESSED) | BUTTON_EVENT(RELEASED) /*| REPORT_MOUSE_POSITION*/, NULL);
+// mousemask(ALL_MOUSE_EVENTS, NULL);
+
+ for (;;) {
+ MEVENT event;
+ int c = wgetch(stdscr);
+
+ if (c == '\e')
+ break;
+ if (c != KEY_MOUSE)
+ continue;
+
+ while (getmouse(&event) == OK) {
+ printw("EVENT: 0x%016X == %02d [%c%c%c%c%c%c]\n",
+ event.bstate, ffs(event.bstate)-1,
+ event.bstate & BUTTON_NUM(4) ? 'U' : ' ',
+ event.bstate & BUTTON_NUM(5) ? 'D' : ' ',
+ event.bstate & BUTTON_EVENT(PRESSED) ? 'P' : ' ',
+ event.bstate & BUTTON_EVENT(RELEASED) ? 'R' : ' ',
+ event.bstate & BUTTON_EVENT(CLICKED) ? 'C' : ' ',
+ event.bstate & REPORT_MOUSE_POSITION ? 'M' : ' ');
+ }
+ }
+
+ endwin();
+
+ return 0;
+}