X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fcurs_mouse.3x.html;h=b62defdfbe14b0c588b5e3c50420d85ab28ac205;hp=9a09a3f4ec2d8a059c86371502dd86c66e65c771;hb=HEAD;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/doc/html/man/curs_mouse.3x.html b/doc/html/man/curs_mouse.3x.html index 9a09a3f4..e35187f9 100644 --- a/doc/html/man/curs_mouse.3x.html +++ b/doc/html/man/curs_mouse.3x.html @@ -1,8 +1,8 @@ - - +
-- +curs_mouse(3x) Library calls curs_mouse(3x) --
- getmouse, ungetmouse, mousemask, wenclose, mouse_trafo, - wmouse_trafo, mouseinterval - mouse interface through - curses --
+ +
+ has_mouse, getmouse, ungetmouse, mousemask, wenclose, mouse_trafo, + wmouse_trafo, mouseinterval - get mouse events in curses + + +
#include <curses.h> typedef unsigned long mmask_t; - typedef struct - { + typedef struct { short id; /* ID to distinguish multiple devices */ int x, y, z; /* event coordinates */ mmask_t bstate; /* button state bits */ - } - MEVENT; - 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); + } MEVENT; + + bool has_mouse(void); + + mmask_t mousemask(mmask_t newmask, mmask_t *oldmask); + + int getmouse(MEVENT *event); + int ungetmouse(MEVENT *event); + + 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(3x) input stream. + + +
+ The has_mouse function returns TRUE if the mouse driver has been + successfully initialized, and FALSE otherwise. + + Mouse events are ignored when input is in cooked mode, and cause an + error beep when cooked mode is being simulated in a window by a + function such as getstr that expects a linefeed for input-loop + termination. + + +
+ To make mouse events visible, use the mousemask function. This sets + the mouse events to be reported. By default, no mouse events are + reported. + + o The function returns an updated copy of newmask to indicate which + of the specified mouse events can be reported. + + If the screen has not been initialized, or if the terminal does not + support mouse-events, this function returns 0. + + o If oldmask is non-NULL, this function fills the indicated location + with the previous value of the current screen's mouse event mask. + + As a side effect, setting a zero mouse mask may turn off 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 + ------------------------------------------------------------------------ + BUTTON1_PRESSED mouse button 1 down + BUTTON1_RELEASED mouse button 1 up + BUTTON1_CLICKED mouse button 1 clicked + BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked + BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked + ------------------------------------------------------------------------ + BUTTON2_PRESSED mouse button 2 down + 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 + BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked + BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked + ------------------------------------------------------------------------ + BUTTON4_PRESSED mouse button 4 down + BUTTON4_RELEASED mouse button 4 up + BUTTON4_CLICKED mouse button 4 clicked + BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked + BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked + ------------------------------------------------------------------------ + BUTTON5_PRESSED mouse button 5 down + BUTTON5_RELEASED mouse button 5 up + BUTTON5_CLICKED mouse button 5 clicked + BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked + BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked + ------------------------------------------------------------------------ + BUTTON_SHIFT shift was down during button state change + BUTTON_CTRL control was down during button state change + BUTTON_ALT alt was down during button state change + ALL_MOUSE_EVENTS report all button state changes + REPORT_MOUSE_POSITION report mouse movement + ------------------------------------------------------------------------ --
- 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. - - To make mouse events visible, use the mousemask function. - This will set the mouse events to be reported. By - default, no mouse events are reported. The function will - return a mask to indicate which of the specified mouse - events can be reported; on complete failure it returns 0. - If oldmask is non-NULL, this function fills the indicated - location with the previous value of the given window's - mouse event mask. - - As a side effect, setting a zero mousemask may turn off - the mouse pointer; setting a nonzero mask may turn it on. - Whether this happens is device-dependent. - - Here are the mouse event type masks: - - Name Description - --------------------------------------------------------------------- - BUTTON1_PRESSED mouse button 1 down - BUTTON1_RELEASED mouse button 1 up - BUTTON1_CLICKED mouse button 1 clicked - BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked - BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked - - BUTTON2_PRESSED mouse button 2 down - 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 - BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked - BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked - BUTTON4_PRESSED mouse button 4 down - BUTTON4_RELEASED mouse button 4 up - BUTTON4_CLICKED mouse button 4 clicked - BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked - BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked - BUTTON_SHIFT shift was down during button state change - BUTTON_CTRL control was down during button state change - BUTTON_ALT alt was down during button state change - ALL_MOUSE_EVENTS report all button state changes - REPORT_MOUSE_POSITION report mouse movement - - Once a class of mouse events have been made visible in a - window, calling the wgetch function on that window may - return KEY_MOUSE as an indicator that a mouse event has - been queued. To read the event data and pop the event off - the queue, call getmouse. This function will return OK if - a mouse event is actually visible in the given window, ERR - otherwise. When getmouse returns OK, the data deposited - as y and x in the event structure coordinates will be - screen-relative character-cell coordinates. The returned - state mask will have exactly one bit set to indicate the - event type. - - The ungetmouse function behaves analogously to ungetch. - It pushes a KEY_MOUSE event onto the input queue, and - associates 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- - 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 screen-rela- - tive coordinates or vice versa. Please remember, that - stdscr-relative coordinates are not always identical to - screen-relative coordinates due to the mechanism to - reserve lines on top or bottom of the screen for other - purposes (ripoff() call, see also slk_... functions). 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 screen-relative coordinates - and returned through the pointers. If the conversion was - successful, the function returns TRUE. If one of the - parameters was NULL or the location is not inside the win- - dow, FALSE is returned. If to_screen is FALSE, the point- - ers pY, pX must reference screen-relative coordinates. - 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 transformation was - successful. - - The mouseinterval function sets the maximum time (in thou- - sands of a second) that can elapse between press and - release events for them to be recognized as a click. Use - mouseinterval(-1) to disable click resolution. This func- - tion returns the previous interval value. The default is - one sixth of a second. - - Note that mouse events will be ignored when input is in - cooked mode, and will cause an error beep when cooked mode - is being simulated in a window by a function such as get- - str that expects a linefeed for input-loop termination. +
+ Once a class of mouse events has been made visible in a window, calling + the wgetch function on that window may return KEY_MOUSE as an indicator + that a mouse event has been queued. To read the event data and pop the + event off the queue, call getmouse. This function will return OK if a + mouse event is actually visible in the given window, ERR otherwise. + When getmouse returns OK, the data deposited as y and x in the event + structure coordinates will be screen-relative character-cell + coordinates. The returned state mask will have exactly one bit set to + indicate the event type. The corresponding data in the queue is marked + 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 associates with that event + the given state data and screen-relative character-cell coordinates. --
- getmouse, ungetmouse and mouseinterval return the integer - ERR upon failure or OK upon successful completion. mouse- - mask returns the mask of reportable events. wenclose and - wmouse_trafo are boolean functions returning TRUE or FALSE - depending on their test result. +
+ 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 otherwise. It is useful for determining what + subset of the screen windows enclose the location of a mouse event. --
- 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 (its value is 1). If the interface is - changed, the value of NCURSES_MOUSE_VERSION will be incre- - mented. - - The order of the MEVENT structure members is not guaran- - teed. Additional fields may be added to the structure in - the future. - - Under ncurses(3x), these calls are implemented using - either xterm's built-in mouse-tracking API or Alessandro - Rubini's gpm server. If you are using something other - than xterm and there is no gpm daemon running on your - machine, mouse events will not be visible to ncurses(3x) - (and the wmousemask function will always return 0). - 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. + If the parameter is a pad, wenclose uses the most recent screen + coordinates used for this pad in prefresh(3x) or pnoutrefresh(3x). --
- Mouse events under xterm will not in fact be ignored dur- - ing cooked mode, if they have been enabled by wmousemask. - Instead, the xterm mouse report sequence will appear in - the string read. - - Mouse events under xterm will not be detected correctly in - a window with its keypad bit off, since they are inter- - preted as a variety of function key. Your terminfo - description must have kmous set to "\E[M" (the beginning - of the response from xterm for mouse clicks). - - Because there are no standard terminal responses that - would serve to identify terminals which support the xterm - mouse protocol, ncurses assumes that if your $TERM envi- - ronment variable contains "xterm", or kmous is defined in - the terminal description, then the terminal may send mouse - events. +
+ The wmouse_trafo function transforms a given pair of coordinates from + stdscr-relative coordinates to coordinates relative to the given window + or vice versa. The resulting stdscr-relative coordinates are not + always identical to screen coordinates due to the mechanism to reserve + lines on top or bottom of the screen for other purposes (see the + ripoffline(3x) and slk_init(3x) calls, for example). + 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 stdscr-relative coordinates and returned + through the pointers. If the conversion was successful, the + function returns TRUE. --
- curses(3x). + 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 reference + stdscr-relative coordinates. They are converted to window-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. + + The referenced coordinates are only replaced by the converted + coordinates 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 thousandths of a + second) that can elapse between press and release events for them to be + resolved as a click. An application might interpret button press and + release events separated by more than the mouse interval as a "long + press", or, with motion, as a "drag". + + Calling mouseinterval(0) disables click resolution. When ncurses + detects a mouse event, it awaits further input activity up to this + interval, and then checks for a subsequent mouse event which can be + combined with the first event. If the timeout expires without input + activity (which would happen with a zero interval), then no click + resolution will occur. + + This function returns the previous interval value. Use + mouseinterval(-1) to obtain the interval without altering it. + + The mouse interval is set to one sixth of a second when the + corresponding screen is initialized, e.g., in initscr(3x) or + setupterm(3x). + + +
+ has_mouse, wenclose, mouse_trafo, and wmouse_trafo return TRUE or FALSE + as noted above. + + getmouse and ungetmouse return ERR upon failure and OK upon success. + + getmouse fails if: + + o no mouse driver was initialized, + + o the mask of reportable events is zero, + + o a mouse event was detected that does not match the mask, + + o or if no more events remain in the queue. + + ungetmouse returns an error if the event queue 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 returns the maximum interval + value (166). + + +
+ The order of the MEVENT structure members is not guaranteed. + Additional fields may be added to the structure in the future. + + Under ncurses, these calls are implemented using either xterm's built- + in mouse-tracking API or platform-specific drivers including + + 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 (and the mousemask function will always return 0). + + If the terminfo entry contains a XM string, this is used 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 mouse driver also recognizes a newer xterm private mode 1006, e.g., + \E[?1006;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 REPORT_MOUSE_POSITION. + They are distinct. For example, in xterm, wheel/scrolling mice send + position reports as a sequence of presses of buttons 4 or 5 without + matching button-releases. +
+ These functions were designed for ncurses(3x), and are not found in + SVr4 curses, 4.4BSD curses, or any other previous curses + implementation. (SVr4 curses did have a getmouse function, which took + no argument and returned a different type.) +
+ Applications employing the ncurses mouse extension should condition its + use on the visibility of the NCURSES_MOUSE_VERSION preprocessor macro. + When the interface changes, the macro's value increments. Multiple + versions are available when ncurses is configured; see section + "ALTERNATE CONFIGURATIONS" of ncurses(3x). The following values may be + specified. + 1 has definitions for reserved events. The mask uses 28 bits. + 2 adds definitions for button 5, removes the definitions for + reserved events. The mask uses 29 bits. + SVr4 curses had support for the mouse in a variant of xterm(1). It is + mentioned in a few places, with little supporting documentation. + o Its "libcurses" manual page lists functions for this feature + prototyped in curses.h. + extern int mouse_set(long int); + extern int mouse_on(long int); + extern int mouse_off(long int); + extern int request_mouse_pos(void); + extern int map_button(unsigned long); + extern void wmouse_position(WINDOW *, int *, int *); + extern unsigned long getmouse(void), getbmap(void); + o Its "terminfo" manual page lists capabilities for the feature. + buttons btns BT Number of buttons on the mouse + get_mouse getm Gm Curses should get button events + key_mouse kmous Km 0631, Mouse event has occurred + mouse_info minfo Mi Mouse status information + req_mouse_pos reqmp RQ Request mouse position report + o The interface made assumptions (as does ncurses) about the escape + sequences sent to and received from the terminal. + For instance, the SVr4 curses library used the get_mouse capability + to tell the terminal which mouse button events it should send, + passing the mouse-button bit mask to the terminal. Also, it could + ask the terminal where the mouse was using the req_mouse_pos + capability. + Those features required a terminal program that had been modified + to work with SVr4 curses. They were not part of the X Consortium's + xterm. + When developing the xterm mouse support for ncurses in September 1995, + Eric Raymond was uninterested in using the same interface due to its + lack of documentation. Later, in 1998, Mark Hesseling provided support + in PDCurses 2.3 using the SVr4 interface. PDCurses, however, does not + use video terminals, making it unnecessary to be concerned about + compatibility with the escape sequences. +
+ Mouse events from xterm are not ignored in cooked mode if they have + been enabled by mousemask. Instead, the xterm mouse report sequence + appears in the string read. + An ncurses window must enable keypad(3x) to correctly receive mouse + event reports from xterm since they are encoded like function keys. + Set the terminal's terminfo capability kmous to "\E[M" (the beginning + of the response from xterm for mouse clicks). Other values of kmous + are permitted under the same assumption, that is, the report begins + with that sequence. + Because there are no standard response sequences that serve to identify + terminals supporting the xterm mouse protocol, ncurses assumes that if + kmous is defined in the terminal description, or if the terminal type's + primary name or aliases contain the string "xterm", then the terminal + may send mouse events. The kmous capability is checked first, allowing + use of newer xterm mouse protocols, such as its private mode 1006. +
+ curses(3x), curs_inopts(3x), curs_kernel(3x), curs_pad(3x), + curs_slk(3x), curs_variables(3x) +ncurses 6.5 2024-05-18 curs_mouse(3x)-