Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/lib/libcurses curses: Add stubs for mouse functions



details:   https://anonhg.NetBSD.org/src/rev/58386aec1342
branches:  trunk
changeset: 1008463:58386aec1342
user:      roy <roy%NetBSD.org@localhost>
date:      Mon Mar 23 13:37:36 2020 +0000

description:
curses: Add stubs for mouse functions

No mouse support actually included.
But that doesn't matter because most terms don't actually support a mouse.

We should look into hooking these into wsmouse(4) and xterm mouse
in the future.

Compatable with nCurses mouse API version 2.

diffstat:

 distrib/sets/lists/comp/mi |   26 +++++++++-
 lib/libcurses/Makefile     |   13 +++-
 lib/libcurses/curses.h     |   70 ++++++++++++++++++++++++-
 lib/libcurses/mouse.c      |  125 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 228 insertions(+), 6 deletions(-)

diffs (truncated from 434 to 300 lines):

diff -r cd18180642a9 -r 58386aec1342 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi        Mon Mar 23 11:45:00 2020 +0000
+++ b/distrib/sets/lists/comp/mi        Mon Mar 23 13:37:36 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: mi,v 1.2313 2020/03/22 14:27:33 ad Exp $
+#      $NetBSD: mi,v 1.2314 2020/03/23 13:37:37 roy Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 ./etc/mtree/set.comp                           comp-sys-root
@@ -6402,6 +6402,7 @@
 ./usr/share/man/cat3/curses_insertln.0         comp-c-catman           .cat
 ./usr/share/man/cat3/curses_keyname.0          comp-c-catman           .cat
 ./usr/share/man/cat3/curses_line.0             comp-c-catman           .cat
+./usr/share/man/cat3/curses_mouse.0            comp-c-catman           .cat
 ./usr/share/man/cat3/curses_pad.0              comp-c-catman           .cat
 ./usr/share/man/cat3/curses_print.0            comp-c-catman           .cat
 ./usr/share/man/cat3/curses_refresh.0          comp-c-catman           .cat
@@ -7308,6 +7309,7 @@
 ./usr/share/man/cat3/getmntopts.0              comp-c-catman           .cat
 ./usr/share/man/cat3/getmntoptstr.0            comp-c-catman           .cat
 ./usr/share/man/cat3/getmode.0                 comp-c-catman           .cat
+./usr/share/man/cat3/getmouse.0                        comp-c-catman           .cat
 ./usr/share/man/cat3/getnameinfo.0             comp-c-catman           .cat
 ./usr/share/man/cat3/getnetbyaddr.0            comp-c-catman           .cat
 ./usr/share/man/cat3/getnetbyname.0            comp-c-catman           .cat
@@ -7428,6 +7430,7 @@
 ./usr/share/man/cat3/has_ic.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/has_il.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/has_key.0                 comp-c-catman           .cat
+./usr/share/man/cat3/has_mouse.0               comp-c-catman           .cat
 ./usr/share/man/cat3/hash.0                    comp-c-catman           .cat
 ./usr/share/man/cat3/hcreate.0                 comp-c-catman           .cat
 ./usr/share/man/cat3/hcreate_r.0               comp-c-catman           .cat
@@ -8542,6 +8545,8 @@
 ./usr/share/man/cat3/modfl.0                   comp-c-catman           .cat
 ./usr/share/man/cat3/moncontrol.0              comp-c-catman           .cat
 ./usr/share/man/cat3/monstartup.0              comp-c-catman           .cat
+./usr/share/man/cat3/mouse_trafo.0             comp-c-catman           .cat
+./usr/share/man/cat3/mouseinterval.0           comp-c-catman           .cat
 ./usr/share/man/cat3/move.0                    comp-c-catman           .cat
 ./usr/share/man/cat3/move_field.0              comp-c-catman           .cat
 ./usr/share/man/cat3/move_panel.0              comp-c-catman           .cat
@@ -10277,6 +10282,7 @@
 ./usr/share/man/cat3/underscore.0              comp-c-catman           .cat
 ./usr/share/man/cat3/ungetc.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/ungetch.0                 comp-c-catman           .cat
+./usr/share/man/cat3/ungetmouse.0              comp-c-catman           .cat
 ./usr/share/man/cat3/ungetwc.0                 comp-c-catman           .cat
 ./usr/share/man/cat3/unistd.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/unlockpt.0                        comp-c-catman           .cat
@@ -10424,6 +10430,7 @@
 ./usr/share/man/cat3/wdelch.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/wdeleteln.0               comp-c-catman           .cat
 ./usr/share/man/cat3/wechochar.0               comp-c-catman           .cat
+./usr/share/man/cat3/wenclose.0                        comp-c-catman           .cat
 ./usr/share/man/cat3/werase.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/wgetch.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/wgetnstr.0                        comp-c-catman           .cat
@@ -10442,6 +10449,7 @@
 ./usr/share/man/cat3/wmemcpy.0                 comp-c-catman           .cat
 ./usr/share/man/cat3/wmemmove.0                        comp-c-catman           .cat
 ./usr/share/man/cat3/wmemset.0                 comp-c-catman           .cat
+./usr/share/man/cat3/wmouse_trafo.0            comp-c-catman           .cat
 ./usr/share/man/cat3/wmove.0                   comp-c-catman           .cat
 ./usr/share/man/cat3/wnoutrefresh.0            comp-c-catman           .cat
 ./usr/share/man/cat3/wordexp.0                 comp-c-catman           .cat
@@ -14426,6 +14434,7 @@
 ./usr/share/man/html3/curses_insertln.html     comp-c-htmlman          html
 ./usr/share/man/html3/curses_keyname.html      comp-c-htmlman          html
 ./usr/share/man/html3/curses_line.html         comp-c-htmlman          html
+./usr/share/man/html3/curses_mouse.html                comp-c-htmlman          html
 ./usr/share/man/html3/curses_pad.html          comp-c-htmlman          html
 ./usr/share/man/html3/curses_print.html                comp-c-htmlman          html
 ./usr/share/man/html3/curses_refresh.html      comp-c-htmlman          html
@@ -15339,6 +15348,7 @@
 ./usr/share/man/html3/getmntopts.html          comp-c-htmlman          html
 ./usr/share/man/html3/getmntoptstr.html                comp-c-htmlman          html
 ./usr/share/man/html3/getmode.html             comp-c-htmlman          html
+./usr/share/man/html3/getmouse.html            comp-c-htmlman          html
 ./usr/share/man/html3/getnameinfo.html         comp-c-htmlman          html
 ./usr/share/man/html3/getnetbyaddr.html                comp-c-htmlman          html
 ./usr/share/man/html3/getnetbyname.html                comp-c-htmlman          html
@@ -15458,6 +15468,7 @@
 ./usr/share/man/html3/has_ic.html              comp-c-htmlman          html
 ./usr/share/man/html3/has_il.html              comp-c-htmlman          html
 ./usr/share/man/html3/has_key.html             comp-c-htmlman          html
+./usr/share/man/html3/has_mouse.html           comp-c-htmlman          html
 ./usr/share/man/html3/hash.html                        comp-c-htmlman          html
 ./usr/share/man/html3/hcreate.html             comp-c-htmlman          html
 ./usr/share/man/html3/hcreate_r.html           comp-c-htmlman          html
@@ -16540,6 +16551,8 @@
 ./usr/share/man/html3/modfl.html               comp-c-htmlman          html
 ./usr/share/man/html3/moncontrol.html          comp-c-htmlman          html
 ./usr/share/man/html3/monstartup.html          comp-c-htmlman          html
+./usr/share/man/html3/mouse_trafo.html         comp-c-htmlman          html
+./usr/share/man/html3/mouseinterval.html       comp-c-htmlman          html
 ./usr/share/man/html3/move.html                        comp-c-htmlman          html
 ./usr/share/man/html3/move_field.html          comp-c-htmlman          html
 ./usr/share/man/html3/move_panel.html          comp-c-htmlman          html
@@ -18257,6 +18270,7 @@
 ./usr/share/man/html3/underscore.html          comp-c-htmlman          html
 ./usr/share/man/html3/ungetc.html              comp-c-htmlman          html
 ./usr/share/man/html3/ungetch.html             comp-c-htmlman          html
+./usr/share/man/html3/ungetmouse.html          comp-c-htmlman          html
 ./usr/share/man/html3/ungetwc.html             comp-c-htmlman          html
 ./usr/share/man/html3/unistd.html              comp-c-htmlman          html
 ./usr/share/man/html3/unlockpt.html            comp-c-htmlman          html
@@ -18400,6 +18414,7 @@
 ./usr/share/man/html3/wdelch.html              comp-c-htmlman          html
 ./usr/share/man/html3/wdeleteln.html           comp-c-htmlman          html
 ./usr/share/man/html3/wechochar.html           comp-c-htmlman          html
+./usr/share/man/html3/wenclose.html            comp-c-htmlman          html
 ./usr/share/man/html3/werase.html              comp-c-htmlman          html
 ./usr/share/man/html3/wgetch.html              comp-c-htmlman          html
 ./usr/share/man/html3/wgetnstr.html            comp-c-htmlman          html
@@ -18418,6 +18433,7 @@
 ./usr/share/man/html3/wmemcpy.html             comp-c-htmlman          html
 ./usr/share/man/html3/wmemmove.html            comp-c-htmlman          html
 ./usr/share/man/html3/wmemset.html             comp-c-htmlman          html
+./usr/share/man/html3/wmouse_trafo.html                comp-c-htmlman          html
 ./usr/share/man/html3/wmove.html               comp-c-htmlman          html
 ./usr/share/man/html3/wnoutrefresh.html                comp-c-htmlman          html
 ./usr/share/man/html3/wordexp.html             comp-c-htmlman          html
@@ -22393,6 +22409,7 @@
 ./usr/share/man/man3/curses_insertln.3         comp-c-man              .man
 ./usr/share/man/man3/curses_keyname.3          comp-c-man              .man
 ./usr/share/man/man3/curses_line.3             comp-c-man              .man
+./usr/share/man/man3/curses_mouse.3            comp-c-man              .man
 ./usr/share/man/man3/curses_pad.3              comp-c-man              .man
 ./usr/share/man/man3/curses_print.3            comp-c-man              .man
 ./usr/share/man/man3/curses_refresh.3          comp-c-man              .man
@@ -23310,6 +23327,7 @@
 ./usr/share/man/man3/getmntopts.3              comp-c-man              .man
 ./usr/share/man/man3/getmntoptstr.3            comp-c-man              .man
 ./usr/share/man/man3/getmode.3                 comp-c-man              .man
+./usr/share/man/man3/getmouse.3                        comp-c-man              .man
 ./usr/share/man/man3/getnameinfo.3             comp-c-man              .man
 ./usr/share/man/man3/getnetbyaddr.3            comp-c-man              .man
 ./usr/share/man/man3/getnetbyname.3            comp-c-man              .man
@@ -23430,6 +23448,7 @@
 ./usr/share/man/man3/has_ic.3                  comp-c-man              .man
 ./usr/share/man/man3/has_il.3                  comp-c-man              .man
 ./usr/share/man/man3/has_key.3                 comp-c-man              .man
+./usr/share/man/man3/has_mouse.3               comp-c-man              .man
 ./usr/share/man/man3/hash.3                    comp-c-man              .man
 ./usr/share/man/man3/hcreate.3                 comp-c-man              .man
 ./usr/share/man/man3/hcreate_r.3               comp-c-man              .man
@@ -24545,6 +24564,8 @@
 ./usr/share/man/man3/modfl.3                   comp-c-man              .man
 ./usr/share/man/man3/moncontrol.3              comp-c-man              .man
 ./usr/share/man/man3/monstartup.3              comp-c-man              .man
+./usr/share/man/man3/mouse_trafo.3             comp-c-man              .man
+./usr/share/man/man3/mouseinterval.3           comp-c-man              .man
 ./usr/share/man/man3/move.3                    comp-c-man              .man
 ./usr/share/man/man3/move_field.3              comp-c-man              .man
 ./usr/share/man/man3/move_panel.3              comp-c-man              .man
@@ -26299,6 +26320,7 @@
 ./usr/share/man/man3/underscore.3              comp-c-man              .man
 ./usr/share/man/man3/ungetc.3                  comp-c-man              .man
 ./usr/share/man/man3/ungetch.3                 comp-c-man              .man
+./usr/share/man/man3/ungetmouse.3              comp-c-man              .man
 ./usr/share/man/man3/ungetwc.3                 comp-c-man              .man
 ./usr/share/man/man3/unistd.3                  comp-c-man              .man
 ./usr/share/man/man3/unlockpt.3                        comp-c-man              .man
@@ -26447,6 +26469,7 @@
 ./usr/share/man/man3/wdeleteln.3               comp-c-man              .man
 ./usr/share/man/man3/wechochar.3               comp-c-man              .man
 ./usr/share/man/man3/werase.3                  comp-c-man              .man
+./usr/share/man/man3/wenclose.3                        comp-c-man              .man
 ./usr/share/man/man3/wgetch.3                  comp-c-man              .man
 ./usr/share/man/man3/wgetnstr.3                        comp-c-man              .man
 ./usr/share/man/man3/wgetstr.3                 comp-c-man              .man
@@ -26464,6 +26487,7 @@
 ./usr/share/man/man3/wmemcpy.3                 comp-c-man              .man
 ./usr/share/man/man3/wmemmove.3                        comp-c-man              .man
 ./usr/share/man/man3/wmemset.3                 comp-c-man              .man
+./usr/share/man/man3/wmouse_trafo.3            comp-c-man              .man
 ./usr/share/man/man3/wmove.3                   comp-c-man              .man
 ./usr/share/man/man3/wnoutrefresh.3            comp-c-man              .man
 ./usr/share/man/man3/wordexp.3                 comp-c-man              .man
diff -r cd18180642a9 -r 58386aec1342 lib/libcurses/Makefile
--- a/lib/libcurses/Makefile    Mon Mar 23 11:45:00 2020 +0000
+++ b/lib/libcurses/Makefile    Mon Mar 23 13:37:36 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.93 2019/09/03 13:43:34 roy Exp $
+#      $NetBSD: Makefile,v 1.94 2020/03/23 13:37:36 roy Exp $
 #      @(#)Makefile    8.2 (Berkeley) 1/2/94
 
 .include <bsd.own.mk>
@@ -21,7 +21,7 @@
        flushok.c fullname.c getch.c getstr.c getyx.c id_subwins.c idlok.c \
        idcok.c immedok.c inch.c inchstr.c initscr.c insch.c insdelln.c \
        insertln.c insstr.c instr.c keypad.c keyname.c leaveok.c line.c \
-       meta.c move.c \
+       meta.c mouse.c move.c \
        mvwin.c newwin.c nodelay.c notimeout.c overlay.c overwrite.c pause.c \
        printw.c putchar.c refresh.c resize.c ripoffline.c scanw.c screen.c \
        scroll.c scrollok.c setterm.c slk.c standout.c syncok.c timeout.c \
@@ -34,7 +34,8 @@
        curses_cursor.3 curses_default_colors.3 \
        curses_delch.3 curses_deleteln.3 curses_echochar.3 curses_fileio.3 \
        curses_inch.3 curses_input.3 curses_insch.3 curses_insertln.3 \
-       curses_insdelln.3 curses_keyname.3 curses_line.3 curses_pad.3 \
+       curses_insdelln.3 curses_keyname.3 curses_line.3 \
+       curses_mouse.3 curses_pad.3 \
        curses_print.3 curses_refresh.3 curses_scanw.3 curses_screen.3 \
        curses_scroll.3 curses_slk.3 curses_standout.3 curses_termcap.3 \
        curses_touch.3 curses_tty.3 curses_underscore.3 curses_version.3 \
@@ -203,7 +204,11 @@
         curses_standout.3 wstandout.3 curses_touch.3 wsyncup.3 \
         curses_input.3 wtimeout.3 \
         curses_touch.3 wtouchln.3 curses_underscore.3 wunderend.3 \
-        curses_underscore.3 wunderscore.3 curses_line.3 wvline.3
+        curses_underscore.3 wunderscore.3 curses_line.3 wvline.3 \
+        curses_mouse.3 has_mouse.3 \
+        curses_mouse.3 getmouse.3 curses_mouse.3 ungetmouse.3 \
+        curses_mouse.3 mouse_trafo.3 curses_mouse.3 wmouse_trafo.3 \
+        curses_mouse.3 wenclose.3 curses_mouse.3 mouseinterval.3
 
 SUBDIR.roff+= PSD.doc
 
diff -r cd18180642a9 -r 58386aec1342 lib/libcurses/curses.h
--- a/lib/libcurses/curses.h    Mon Mar 23 11:45:00 2020 +0000
+++ b/lib/libcurses/curses.h    Mon Mar 23 13:37:36 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: curses.h,v 1.128 2020/03/13 02:57:26 roy Exp $ */
+/*     $NetBSD: curses.h,v 1.129 2020/03/23 13:37:36 roy Exp $ */
 
 /*
  * Copyright (c) 1981, 1993, 1994
@@ -980,6 +980,74 @@
 bool is_leaveok(const WINDOW *);
 bool is_pad(const WINDOW *);
 
+/* ncurses mouse support */
+#define        NB_MOUSE_MASK(b, m)     ((m) << (((b) - 1) * 5))
+#define        NB_BUTTON_RELEASED      001L
+#define        NB_BUTTON_PRESSED       002L
+#define        NB_BUTTON_CLICKED       004L
+#define        NB_DOUBLE_CLICKED       010L
+#define        NB_TRIPLE_CLICKED       020L
+#define        NB_RESERVED_EVENT       040L
+
+#define        BUTTON1_RELEASED        NB_MOUSE_MASK(1, NB_BUTTON_RELEASED)
+#define        BUTTON1_PRESSED         NB_MOUSE_MASK(1, NB_BUTTON_PRESSED)
+#define        BUTTON1_CLICKED         NB_MOUSE_MASK(1, NB_BUTTON_CLICKED)
+#define        BUTTON1_DOUBLE_CLICKED  NB_MOUSE_MASK(1, NB_DOUBLE_CLICKED)
+#define        BUTTON1_TRIPLE_CLICKED  NB_MOUSE_MASK(1, NB_TRIPLE_CLICKED)
+
+#define        BUTTON2_RELEASED        NB_MOUSE_MASK(2, NB_BUTTON_RELEASED)
+#define        BUTTON2_PRESSED         NB_MOUSE_MASK(2, NB_BUTTON_PRESSED)
+#define        BUTTON2_CLICKED         NB_MOUSE_MASK(2, NB_BUTTON_CLICKED)
+#define        BUTTON2_DOUBLE_CLICKED  NB_MOUSE_MASK(2, NB_DOUBLE_CLICKED)
+#define        BUTTON2_TRIPLE_CLICKED  NB_MOUSE_MASK(2, NB_TRIPLE_CLICKED)
+
+#define        BUTTON3_RELEASED        NB_MOUSE_MASK(3, NB_BUTTON_RELEASED)
+#define        BUTTON3_PRESSED         NB_MOUSE_MASK(3, NB_BUTTON_PRESSED)
+#define        BUTTON3_CLICKED         NB_MOUSE_MASK(3, NB_BUTTON_CLICKED)
+#define        BUTTON3_DOUBLE_CLICKED  NB_MOUSE_MASK(3, NB_DOUBLE_CLICKED)
+#define        BUTTON3_TRIPLE_CLICKED  NB_MOUSE_MASK(3, NB_TRIPLE_CLICKED)
+
+#define        BUTTON4_RELEASED        NB_MOUSE_MASK(4, NB_BUTTON_RELEASED)
+#define        BUTTON4_PRESSED         NB_MOUSE_MASK(4, NB_BUTTON_PRESSED)
+#define        BUTTON4_CLICKED         NB_MOUSE_MASK(4, NB_BUTTON_CLICKED)
+#define        BUTTON4_DOUBLE_CLICKED  NB_MOUSE_MASK(4, NB_DOUBLE_CLICKED)
+#define        BUTTON4_TRIPLE_CLICKED  NB_MOUSE_MASK(4, NB_TRIPLE_CLICKED)
+
+#define        BUTTON5_RELEASED        NB_MOUSE_MASK(5, NB_BUTTON_RELEASED)
+#define        BUTTON5_PRESSED         NB_MOUSE_MASK(5, NB_BUTTON_PRESSED)
+#define        BUTTON5_CLICKED         NB_MOUSE_MASK(5, NB_BUTTON_CLICKED)
+#define        BUTTON5_DOUBLE_CLICKED  NB_MOUSE_MASK(5, NB_DOUBLE_CLICKED)
+#define        BUTTON5_TRIPLE_CLICKED  NB_MOUSE_MASK(5, NB_TRIPLE_CLICKED)
+
+#define        BUTTON_CTRL             NB_MOUSE_MASK(6, 0001L)
+#define        BUTTON_SHIFT            NB_MOUSE_MASK(6, 0002L)
+#define        BUTTON_ALT              NB_MOUSE_MASK(6, 0004L)
+#define        REPORT_MOUSE_POSITION   NB_MOUSE_MASK(6, 0010L)
+#define        ALL_MOUSE_EVENTS        (REPORT_MOUSE_POSITION - 1)
+
+#define        BUTTON_RELEASE(e, x)            ((e) & NB_MOUSE_MASK(x, 001))
+#define        BUTTON_PRESS(e, x)              ((e) & NB_MOUSE_MASK(x, 002))
+#define        BUTTON_CLICK(e, x)              ((e) & NB_MOUSE_MASK(x, 004))
+#define        BUTTON_DOUBLE_CLICK(e, x)       ((e) & NB_MOUSE_MASK(x, 010))
+#define        BUTTON_TRIPLE_CLICK(e, x)       ((e) & NB_MOUSE_MASK(x, 020))
+#define        BUTTON_RESERVED_EVENT(e, x)     ((e) & NB_MOUSE_MASK(x, 040))
+
+typedef unsigned long mmask_t;
+typedef struct {
+       short id;       /* ID to distinguish multiple devices */
+       int x, y, z;    /* event coordinates */
+       mmask_t bstate;   /* button state bits */
+} MEVENT;
+
+bool has_mouse(void);
+int getmouse(MEVENT *);
+int ungetmouse(MEVENT *);
+mmask_t mousemask(mmask_t, mmask_t *);
+bool wenclose(const WINDOW *, int, int);
+bool mouse_trafo(int *, int *, bool);
+bool wmouse_trafo(const WINDOW *, int *, int *, bool);



Home | Main Index | Thread Index | Old Index