X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_mouse.3x.html;h=194e4d0f1a6ecedf986338c302639456682ea014;hb=5eb177874dea59107a1a2ea44f5d8f5bb99550b2;hp=0505403bf85b4d169235c5f4d01d8b59958e09fe;hpb=cef50b3afcd58166f3541b701c97bce538844c76;p=ncurses.git diff --git a/doc/html/man/curs_mouse.3x.html b/doc/html/man/curs_mouse.3x.html index 0505403b..194e4d0f 100644 --- a/doc/html/man/curs_mouse.3x.html +++ b/doc/html/man/curs_mouse.3x.html @@ -1,8 +1,7 @@ - +
+ +- curs_mouse(3x) curs_mouse(3x) --
+
has_mouse, getmouse, ungetmouse, mousemask, wenclose, mouse_trafo, wmouse_trafo, mouseinterval - mouse interface through curses --
+
#include <curses.h> typedef unsigned long mmask_t; - typedef struct - { - short id; /* ID to distinguish multiple devices */ + typedef struct { + short id; /* ID to distinguish multiple devices */ int x, y, z; /* event coordinates */ mmask_t bstate; /* button state bits */ - } - MEVENT; + } MEVENT; + bool has_mouse(void); - int getmouse(MEVENT *event); - int ungetmouse(MEVENT *event); - mmask_t mousemask(mmask_t newmask, mmask_t *oldmask); - bool wenclose(const WINDOW *win, int y, int x); - bool mouse_trafo(int* pY, int* pX, bool to_screen); - bool wmouse_trafo(const WINDOW* win, int* pY, int* pX, - bool to_screen); - int mouseinterval(int erval); + int getmouse(MEVENT *event); + int ungetmouse(MEVENT *event); + mmask_t mousemask(mmask_t newmask, mmask_t *oldmask); + bool wenclose(const WINDOW *win, int y, int x); + bool mouse_trafo(int* pY, int* pX, bool to_screen); + bool wmouse_trafo(const WINDOW* win, int* pY, int* pX, + bool to_screen); + int mouseinterval(int erval); --
+
These functions provide an interface to mouse events from ncurses(3x). Mouse events are represented by KEY_MOUSE - pseudo-key values in the wgetch input stream. + pseudo-key values in the wgetch(3x) input stream. + +
To make mouse events visible, use the mousemask function. This will set the mouse events to be reported. By de- fault, no mouse events are reported. The function will @@ -96,6 +94,8 @@ the mouse pointer; setting a nonzero mask may turn it on. Whether this happens is device-dependent. + +
Here are the mouse event type masks which may be defined: Name Description @@ -110,9 +110,10 @@ BUTTON2_RELEASED mouse button 2 up BUTTON2_CLICKED mouse button 2 clicked BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked + + BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked --------------------------------------------------------------------- - BUTTON3_PRESSED mouse button 3 down BUTTON3_RELEASED mouse button 3 up BUTTON3_CLICKED mouse button 3 clicked @@ -138,7 +139,9 @@ REPORT_MOUSE_POSITION report mouse movement --------------------------------------------------------------------- - Once a class of mouse events have been made visible in a + +
+ Once a class of mouse events has been made visible in a window, calling the wgetch function on that window may re- turn KEY_MOUSE as an indicator that a mouse event has been queued. To read the event data and pop the event off the @@ -152,43 +155,59 @@ invalid. A subsequent call to getmouse will retrieve the next older item from the queue. + +
The ungetmouse function behaves analogously to ungetch. It pushes a KEY_MOUSE event onto the input queue, and as- sociates with that event the given state data and screen- relative character-cell coordinates. + +
The wenclose function tests whether a given pair of screen-relative character-cell coordinates is enclosed by - a given window, returning TRUE if it is and FALSE other- + a given window, returning TRUE if it is and FALSE other- wise. It is useful for determining what subset of the screen windows enclose the location of a mouse event. + +
The wmouse_trafo function transforms a given pair of coor- dinates from stdscr-relative coordinates to coordinates - relative to the given window or vice versa. Please remem- - ber, that stdscr-relative coordinates are not always iden- - tical to window-relative coordinates due to the mechanism - to reserve lines on top or bottom of the screen for other - purposes (see the ripoffline() and slk_init calls, for ex- - ample). If the parameter to_screen is TRUE, the pointers - pY, pX must reference the coordinates of a location inside - the window win. They are converted to window-relative co- - ordinates and returned through the pointers. If the con- - version was successful, the function returns TRUE. If one - of the parameters was NULL or the location is not inside - the window, FALSE is returned. If to_screen is FALSE, the - pointers pY, pX must reference window-relative coordi- - nates. They are converted to stdscr-relative coordinates - if the window win encloses this point. In this case the - function returns TRUE. If one of the parameters is NULL - or the point is not inside the window, FALSE is returned. - Please notice, that the referenced coordinates are only - replaced by the converted coordinates if the transforma- - tion was successful. - + relative to the given window or vice versa. The resulting + stdscr-relative coordinates are not always identical to + window-relative coordinates due to the mechanism to re- + serve lines on top or bottom of the screen for other pur- + poses (see the ripoffline and slk_init(3x) calls, for ex- + ample). + + o If the parameter to_screen is TRUE, the pointers pY, + pX must reference the coordinates of a location inside + the window win. They are converted to window-relative + coordinates and returned through the pointers. If the + conversion was successful, the function returns TRUE. + + o If one of the parameters was NULL or the location is + not inside the window, FALSE is returned. + + o If to_screen is FALSE, the pointers pY, pX must refer- + ence window-relative coordinates. They are converted + to stdscr-relative coordinates if the window win en- + closes this point. In this case the function returns + TRUE. + + o If one of the parameters is NULL or the point is not + inside the window, FALSE is returned. The referenced + coordinates are only replaced by the converted coordi- + nates if the transformation was successful. + + +
The mouse_trafo function performs the same translation as wmouse_trafo, using stdscr for win. + +
The mouseinterval function sets the maximum time (in thou- sands of a second) that can elapse between press and re- lease events for them to be recognized as a click. Use @@ -197,7 +216,9 @@ val(-1) to obtain the interval without altering it. The default is one sixth of a second. - The has_mouse function returns TRUE if the mouse driver + +
+ The has_mouse function returns TRUE if the mouse driver has been successfully initialized. Note that mouse events will be ignored when input is in @@ -206,49 +227,49 @@ str that expects a linefeed for input-loop termination. --
+
getmouse and ungetmouse return the integer ERR upon fail- - ure or OK upon successful completion. + ure or OK upon successful completion: + + getmouse + returns an error. + + o If no mouse driver was initialized, or if the mask + parameter is zero, - getmouse - returns an error. If no mouse driver was ini- - tialized, or if the mask parameter is zero, it - also returns an error if no more events remain - in the queue. + o It also returns an error if no more events remain + in the queue. - ungetmouse - returns an error if the FIFO is full. + ungetmouse + returns an error if the FIFO is full. mousemask returns the mask of reportable events. - mouseinterval returns the previous interval value, unless - the terminal was not initialized. In that case, it re- + mouseinterval returns the previous interval value, unless + the terminal was not initialized. In that case, it re- turns the maximum interval value (166). - wenclose and wmouse_trafo are boolean functions returning + wenclose and wmouse_trafo are boolean functions returning TRUE or FALSE depending on their test result. --
- These calls were designed for ncurses(3x), and are not +
+ These calls were designed for ncurses(3x), and are not found in SVr4 curses, 4.4BSD curses, or any other previous version of curses. The feature macro NCURSES_MOUSE_VERSION is provided so the - preprocessor can be used to test whether these features - are present. If the interface is changed, the value of - NCURSES_MOUSE_VERSION will be incremented. These values - for NCURSES_MOUSE_VERSION may be specified when configur- + preprocessor can be used to test whether these features + are present. If the interface is changed, the value of + NCURSES_MOUSE_VERSION will be incremented. These values + for NCURSES_MOUSE_VERSION may be specified when configur- ing ncurses: - 1 has definitions for reserved events. The mask - uses 28 bits. + 1 has definitions for reserved events. The mask uses + 28 bits. - 2 adds definitions for button 5, removes the defi- - nitions for reserved events. The mask uses 29 - bits. + 2 adds definitions for button 5, removes the defini- + tions for reserved events. The mask uses 29 bits. The order of the MEVENT structure members is not guaran- teed. Additional fields may be added to the structure in @@ -257,9 +278,13 @@ Under ncurses(3x), these calls are implemented using ei- ther xterm's built-in mouse-tracking API or platform-spe- cific drivers including - Alessandro Rubini's gpm server - FreeBSD sysmouse - OS/2 EMX + + o Alessandro Rubini's gpm server + + o FreeBSD sysmouse + + o OS/2 EMX + If you are using an unsupported configuration, mouse events will not be visible to ncurses(3x) (and the mouse- mask function will always return 0). @@ -268,15 +293,22 @@ in the xterm mouse driver to control the way the terminal is initialized for mouse operation. The default, if XM is not found, corresponds to private mode 1000 of xterm: - \E[?1000%?%p1%{1}%=%th%el%; - The z member in the event structure is not presently used. + + \E[?1000%?%p1%{1}%=%th%el%; + + The z member in the event structure is not presently used. It is intended for use with touch screens (which may be pressure-sensitive) or with 3D-mice/trackballs/power gloves. + The ALL_MOUSE_EVENTS class does not include RE- + PORT_MOUSE_POSITION. They are distinct. For example, in + xterm, wheel/scrolling mice send position reports as a se- + quence of presses of buttons 4 or 5 without matching but- + ton-releases. --
+ +
Mouse events under xterm will not in fact be ignored dur- ing cooked mode, if they have been enabled by mousemask. Instead, the xterm mouse report sequence will appear in @@ -298,8 +330,7 @@ events. --
+
curses(3x), curs_kernel(3x), curs_slk(3x), curs_vari- ables(3x). @@ -307,10 +338,28 @@ curs_mouse(3x)-