Add luacurses to contrib
[project/luci.git] / contrib / luacurses / src / test / mouse.lua
diff --git a/contrib/luacurses/src/test/mouse.lua b/contrib/luacurses/src/test/mouse.lua
new file mode 100644 (file)
index 0000000..0129cd8
--- /dev/null
@@ -0,0 +1,54 @@
+
+require("curses");
+
+function show_message(m)
+  local width = string.len(m) + 6;
+  local win = curses.newwin(5, width, (lines - 5) / 2, (cols - width) / 2);
+  win:keypad(true);
+  win:attron(curses.COLOR_PAIR(curses.COLOR_RED));
+  win:box('|', '-', '+');
+  win:mvaddstr(2, 3, m);
+  win:refresh();
+  win:getch();
+  win:delwin();
+end
+
+curses.initscr();
+curses.start_color();
+curses.init_pair(curses.COLOR_BLUE, curses.COLOR_BLUE, curses.COLOR_WHITE);
+curses.init_pair(curses.COLOR_RED, curses.COLOR_RED, curses.COLOR_WHITE);
+curses.cbreak();
+curses.noecho();
+curses.keypad(curses.stdscr(), true);
+
+lines = curses.LINES();
+cols = curses.COLS();
+
+mmasks =
+{
+    curses.BUTTON1_CLICKED,
+    curses.BUTTON2_CLICKED,
+    curses.BUTTON3_CLICKED,
+    curses.BUTTON4_CLICKED
+};
+
+table.foreachi(mmasks, function(_i, _m) curses.addmousemask(_m) end);
+curses.attron(curses.COLOR_PAIR(curses.COLOR_BLUE));
+curses.attron(curses.A_BOLD);
+curses.mvaddstr((lines - 5) / 2, (cols - 10) / 2, "click");
+
+curses.refresh();
+while(true) do
+    local c = curses.getch();
+    if (c == curses.KEY_MOUSE) then
+       local r, id, x, y, z, bstate = curses.getmouse();
+       if (r) then
+           show_message("id = " .. id .. ", x = " .. x .. ", y = " .. y .. ", z = " .. z .. ", bstate = " ..
+                        string.format("0x%x", bstate));
+       end
+       break;
+    end
+end
+
+curses.endwin();
+