diff options
author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-10-06 00:48:48 +0300 |
---|---|---|
committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-10-06 00:48:48 +0300 |
commit | ad9e7cd5117c965222aae708f660e56d537914fc (patch) | |
tree | 580006656ec76513500170e5646e92e7819c6c0b /tests/mouse-test.c | |
download | snippets-ad9e7cd5117c965222aae708f660e56d537914fc.tar.gz |
imported all of my Github gists from https://gist.github.com/rhaberkorn
Diffstat (limited to 'tests/mouse-test.c')
-rw-r--r-- | tests/mouse-test.c | 50 |
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; +} |