]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/curs_mouse.3x.html
ncurses 6.4 - patch 20240113
[ncurses.git] / doc / html / man / curs_mouse.3x.html
1 <!--
2   * t
3   ****************************************************************************
4   * Copyright 2018-2023,2024 Thomas E. Dickey                                *
5   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
6   *                                                                          *
7   * Permission is hereby granted, free of charge, to any person obtaining a  *
8   * copy of this software and associated documentation files (the            *
9   * "Software"), to deal in the Software without restriction, including      *
10   * without limitation the rights to use, copy, modify, merge, publish,      *
11   * distribute, distribute with modifications, sublicense, and/or sell       *
12   * copies of the Software, and to permit persons to whom the Software is    *
13   * furnished to do so, subject to the following conditions:                 *
14   *                                                                          *
15   * The above copyright notice and this permission notice shall be included  *
16   * in all copies or substantial portions of the Software.                   *
17   *                                                                          *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
19   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
20   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
21   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
22   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
23   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
24   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
25   *                                                                          *
26   * Except as contained in this notice, the name(s) of the above copyright   *
27   * holders shall not be used in advertising or otherwise to promote the     *
28   * sale, use or other dealings in this Software without prior written       *
29   * authorization.                                                           *
30   ****************************************************************************
31   * @Id: curs_mouse.3x,v 1.86 2024/01/13 22:05:39 tom Exp @
32 -->
33 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
34 <HTML>
35 <HEAD>
36 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
37 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
38 <TITLE>curs_mouse 3x 2024-01-13 ncurses 6.4 Library calls</TITLE>
39 <link rel="author" href="mailto:bug-ncurses@gnu.org">
40
41 </HEAD>
42 <BODY>
43 <H1 class="no-header">curs_mouse 3x 2024-01-13 ncurses 6.4 Library calls</H1>
44 <PRE>
45 <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
46
47
48
49
50 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
51        <STRONG>has_mouse</STRONG>,  <STRONG>getmouse</STRONG>,  <STRONG>ungetmouse</STRONG>,  <STRONG>mousemask</STRONG>,  <STRONG>wenclose</STRONG>,  <STRONG>mouse_trafo</STRONG>,
52        <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - get mouse events in <EM>curses</EM>
53
54
55 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
56        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
57
58        <STRONG>typedef</STRONG> <STRONG>unsigned</STRONG> <STRONG>long</STRONG> <STRONG>mmask_t;</STRONG>
59
60        <STRONG>typedef</STRONG> <STRONG>struct</STRONG> <STRONG>{</STRONG>
61            <STRONG>short</STRONG> <STRONG>id;</STRONG>         <EM>/*</EM> <EM>ID</EM> <EM>to</EM> <EM>distinguish</EM> <EM>multiple</EM> <EM>devices</EM> <EM>*/</EM>
62            <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>y,</STRONG> <STRONG>z;</STRONG>      <EM>/*</EM> <EM>event</EM> <EM>coordinates</EM> <EM>*/</EM>
63            <STRONG>mmask_t</STRONG> <STRONG>bstate;</STRONG>   <EM>/*</EM> <EM>button</EM> <EM>state</EM> <EM>bits</EM> <EM>*/</EM>
64        <STRONG>}</STRONG> <STRONG>MEVENT;</STRONG>
65
66        <STRONG>bool</STRONG> <STRONG>has_mouse(void);</STRONG>
67
68        <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
69        <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
70
71        <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG>
72
73        <STRONG>bool</STRONG> <STRONG>wenclose(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
74
75        <STRONG>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
76        <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG>
77                          <STRONG>int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
78
79        <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <EM>erval</EM><STRONG>);</STRONG>
80
81
82 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
83        These functions provide an interface to mouse events from  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
84        Mouse  events  are  represented  by  <STRONG>KEY_MOUSE</STRONG> pseudo-key values in the
85        <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> input stream.
86
87
88 </PRE><H3><a name="h3-mousemask">mousemask</a></H3><PRE>
89        To make mouse events visible, use the <STRONG>mousemask</STRONG>  function.   This  sets
90        the  mouse  events  to  be  reported.   By default, no mouse events are
91        reported.
92
93        <STRONG>o</STRONG>   The function returns an updated copy of <EM>newmask</EM> to  indicate  which
94            of the specified mouse events can be reported.
95
96            If the screen has not been initialized, or if the terminal does not
97            support mouse-events, this function returns 0.
98
99        <STRONG>o</STRONG>   If <EM>oldmask</EM> is non-<STRONG>NULL</STRONG>, this function fills the indicated  location
100            with the previous value of the current screen's mouse event mask.
101
102        As  a  side  effect,  setting  a  zero mousemask may turn off the mouse
103        pointer; setting a nonzero mask may turn it on.  Whether  this  happens
104        is device-dependent.
105
106
107 </PRE><H3><a name="h3-Mouse-Events">Mouse Events</a></H3><PRE>
108        Here are the mouse event type masks which may be defined:
109
110        <STRONG>Name</STRONG>                     <STRONG>Description</STRONG>
111        ------------------------------------------------------------------------
112        <STRONG>BUTTON1_PRESSED</STRONG>          mouse button 1 down
113        <STRONG>BUTTON1_RELEASED</STRONG>         mouse button 1 up
114        <STRONG>BUTTON1_CLICKED</STRONG>          mouse button 1 clicked
115
116        <STRONG>BUTTON1_DOUBLE_CLICKED</STRONG>   mouse button 1 double clicked
117        <STRONG>BUTTON1_TRIPLE_CLICKED</STRONG>   mouse button 1 triple clicked
118        ------------------------------------------------------------------------
119        <STRONG>BUTTON2_PRESSED</STRONG>          mouse button 2 down
120        <STRONG>BUTTON2_RELEASED</STRONG>         mouse button 2 up
121        <STRONG>BUTTON2_CLICKED</STRONG>          mouse button 2 clicked
122        <STRONG>BUTTON2_DOUBLE_CLICKED</STRONG>   mouse button 2 double clicked
123        <STRONG>BUTTON2_TRIPLE_CLICKED</STRONG>   mouse button 2 triple clicked
124        ------------------------------------------------------------------------
125        <STRONG>BUTTON3_PRESSED</STRONG>          mouse button 3 down
126        <STRONG>BUTTON3_RELEASED</STRONG>         mouse button 3 up
127        <STRONG>BUTTON3_CLICKED</STRONG>          mouse button 3 clicked
128        <STRONG>BUTTON3_DOUBLE_CLICKED</STRONG>   mouse button 3 double clicked
129        <STRONG>BUTTON3_TRIPLE_CLICKED</STRONG>   mouse button 3 triple clicked
130        ------------------------------------------------------------------------
131        <STRONG>BUTTON4_PRESSED</STRONG>          mouse button 4 down
132        <STRONG>BUTTON4_RELEASED</STRONG>         mouse button 4 up
133        <STRONG>BUTTON4_CLICKED</STRONG>          mouse button 4 clicked
134        <STRONG>BUTTON4_DOUBLE_CLICKED</STRONG>   mouse button 4 double clicked
135        <STRONG>BUTTON4_TRIPLE_CLICKED</STRONG>   mouse button 4 triple clicked
136        ------------------------------------------------------------------------
137        <STRONG>BUTTON5_PRESSED</STRONG>          mouse button 5 down
138        <STRONG>BUTTON5_RELEASED</STRONG>         mouse button 5 up
139        <STRONG>BUTTON5_CLICKED</STRONG>          mouse button 5 clicked
140        <STRONG>BUTTON5_DOUBLE_CLICKED</STRONG>   mouse button 5 double clicked
141        <STRONG>BUTTON5_TRIPLE_CLICKED</STRONG>   mouse button 5 triple clicked
142        ------------------------------------------------------------------------
143        <STRONG>BUTTON_SHIFT</STRONG>             shift was down during button state change
144        <STRONG>BUTTON_CTRL</STRONG>              control was down during button state change
145        <STRONG>BUTTON_ALT</STRONG>               alt was down during button state change
146        <STRONG>ALL_MOUSE_EVENTS</STRONG>         report all button state changes
147        <STRONG>REPORT_MOUSE_POSITION</STRONG>    report mouse movement
148        ------------------------------------------------------------------------
149
150
151 </PRE><H3><a name="h3-getmouse">getmouse</a></H3><PRE>
152        Once a class of mouse events has been made visible in a window, calling
153        the <STRONG>wgetch</STRONG> function on that window may return <STRONG>KEY_MOUSE</STRONG> as an indicator
154        that a mouse event has been queued.  To read the event data and pop the
155        event off the queue, call <STRONG>getmouse</STRONG>.  This function will return <STRONG>OK</STRONG> if  a
156        mouse  event  is  actually  visible in the given window, <STRONG>ERR</STRONG> otherwise.
157        When <STRONG>getmouse</STRONG> returns <STRONG>OK</STRONG>, the data deposited as y and x  in  the  event
158        structure    coordinates   will   be   screen-relative   character-cell
159        coordinates.  The returned state mask will have exactly one bit set  to
160        indicate the event type.  The corresponding data in the queue is marked
161        invalid.  A subsequent call to <STRONG>getmouse</STRONG> will retrieve  the  next  older
162        item from the queue.
163
164
165 </PRE><H3><a name="h3-ungetmouse">ungetmouse</a></H3><PRE>
166        The  <STRONG>ungetmouse</STRONG>  function  behaves analogously to <STRONG>ungetch</STRONG>.  It pushes a
167        <STRONG>KEY_MOUSE</STRONG> event onto the input queue, and associates  with  that  event
168        the given state data and screen-relative character-cell coordinates.
169
170
171 </PRE><H3><a name="h3-wenclose">wenclose</a></H3><PRE>
172        The  <STRONG>wenclose</STRONG>  function  tests  whether a given pair of screen-relative
173        character-cell coordinates is enclosed by  a  given  window,  returning
174        <STRONG>TRUE</STRONG>  if  it is and <STRONG>FALSE</STRONG> otherwise.  It is useful for determining what
175        subset of the screen windows enclose the location of a mouse event.
176
177
178 </PRE><H3><a name="h3-wmouse_trafo">wmouse_trafo</a></H3><PRE>
179        The <STRONG>wmouse_trafo</STRONG> function transforms a given pair of  coordinates  from
180        <STRONG>stdscr</STRONG>-relative coordinates to coordinates relative to the given window
181        or vice versa.   The  resulting  <STRONG>stdscr</STRONG>-relative  coordinates  are  not
182        always identical to window-relative coordinates due to the mechanism to
183        reserve lines on top or bottom of the screen for  other  purposes  (see
184        the <STRONG>ripoffline</STRONG> and <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG> calls, for example).
185
186        <STRONG>o</STRONG>   If  the  parameter  <EM>to</EM><STRONG>_</STRONG><EM>screen</EM>  is  <STRONG>TRUE</STRONG>,  the  pointers <EM>pY,</EM> <EM>pX</EM> must
187            reference the coordinates of a  location  inside  the  window  <EM>win</EM>.
188            They  are  converted  to  window-relative  coordinates and returned
189            through the  pointers.   If  the  conversion  was  successful,  the
190            function returns <STRONG>TRUE</STRONG>.
191
192        <STRONG>o</STRONG>   If one of the parameters was <STRONG>NULL</STRONG> or the location is not inside the
193            window, <STRONG>FALSE</STRONG> is returned.
194
195        <STRONG>o</STRONG>   If <EM>to</EM><STRONG>_</STRONG><EM>screen</EM> is <STRONG>FALSE</STRONG>, the pointers <EM>pY,</EM> <EM>pX</EM> must  reference  window-
196            relative   coordinates.   They  are  converted  to  <STRONG>stdscr</STRONG>-relative
197            coordinates if the window <EM>win</EM> encloses this point.   In  this  case
198            the function returns <STRONG>TRUE</STRONG>.
199
200        <STRONG>o</STRONG>   If  one  of  the  parameters is <STRONG>NULL</STRONG> or the point is not inside the
201            window, <STRONG>FALSE</STRONG> is returned.  The  referenced  coordinates  are  only
202            replaced  by  the  converted  coordinates if the transformation was
203            successful.
204
205
206 </PRE><H3><a name="h3-mouse_trafo">mouse_trafo</a></H3><PRE>
207        The <STRONG>mouse_trafo</STRONG> function performs the same translation as <STRONG>wmouse_trafo</STRONG>,
208        using <STRONG>stdscr</STRONG> for <EM>win</EM>.
209
210
211 </PRE><H3><a name="h3-mouseinterval">mouseinterval</a></H3><PRE>
212        The  <STRONG>mouseinterval</STRONG>  function  sets  the maximum time (in thousands of a
213        second) that can elapse between press and release events for them to be
214        recognized   as   a  click.   Use  <STRONG>mouseinterval(0)</STRONG>  to  disable  click
215        resolution.  This function returns the previous  interval  value.   Use
216        <STRONG>mouseinterval(-1)</STRONG>  to  obtain  the  interval  without altering it.  The
217        default is one sixth of a second.
218
219
220 </PRE><H3><a name="h3-has_mouse">has_mouse</a></H3><PRE>
221        The <STRONG>has_mouse</STRONG> function returns  <STRONG>TRUE</STRONG>  if  the  mouse  driver  has  been
222        successfully initialized, and <STRONG>FALSE</STRONG> otherwise.
223
224        Note  that  mouse  events will be ignored when input is in cooked mode,
225        and will cause an error beep when cooked mode is being simulated  in  a
226        window  by a function such as <STRONG>getstr</STRONG> that expects a linefeed for input-
227        loop termination.
228
229
230 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
231        <STRONG>has_mouse</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>mouse_trafo</STRONG>, and <STRONG>wmouse_trafo</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>
232        as noted above.
233
234        <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success.
235
236        <STRONG>getmouse</STRONG> fails if:
237
238        <STRONG>o</STRONG>   no mouse driver was initialized,
239
240        <STRONG>o</STRONG>   the mask of reportable events is zero,
241
242        <STRONG>o</STRONG>   a mouse event was detected that does not match the mask,
243
244        <STRONG>o</STRONG>   or if no more events remain in the queue.
245
246        <STRONG>ungetmouse</STRONG> returns an error if the event queue is full.
247
248        <STRONG>mousemask</STRONG> returns the mask of reportable events.
249
250        <STRONG>mouseinterval</STRONG>  returns the previous interval value, unless the terminal
251        was not initialized.  In that case, it  returns  the  maximum  interval
252        value (166).
253
254
255 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
256        The   order   of  the  <STRONG>MEVENT</STRONG>  structure  members  is  not  guaranteed.
257        Additional fields may be added to the structure in the future.
258
259        Under <EM>ncurses,</EM> these calls are implemented using either <EM>xterm</EM>'s  built-
260        in mouse-tracking API or platform-specific drivers including
261
262           <STRONG>o</STRONG>   Alessandro Rubini's gpm server
263
264           <STRONG>o</STRONG>   FreeBSD sysmouse
265
266           <STRONG>o</STRONG>   OS/2 EMX
267
268        If you are using an unsupported configuration, mouse events will not be
269        visible to <EM>ncurses</EM> (and the <STRONG>mousemask</STRONG> function will always return <STRONG>0</STRONG>).
270
271        If the <EM>terminfo</EM> entry contains a <STRONG>XM</STRONG> string, this is used in  the  <EM>xterm</EM>
272        mouse  driver  to control the way the terminal is initialized for mouse
273        operation.  The default, if <STRONG>XM</STRONG> is not  found,  corresponds  to  private
274        mode 1000 of <EM>xterm:</EM>
275
276           \E[?1000%?%p1%{1}%=%th%el%;
277
278        The mouse driver also recognizes a newer <EM>xterm</EM> private mode 1006, e.g.,
279
280           \E[?1006;1000%?%p1%{1}%=%th%el%;
281
282        The  <EM>z</EM>  member  in  the  event  structure is not presently used.  It is
283        intended for use with touch screens (which may  be  pressure-sensitive)
284        or with 3D-mice/trackballs/power gloves.
285
286        The  <STRONG>ALL_MOUSE_EVENTS</STRONG>  class  does  not  include <STRONG>REPORT_MOUSE_POSITION</STRONG>.
287        They are distinct.  For example, in <EM>xterm,</EM>  wheel/scrolling  mice  send
288        position  reports  as  a  sequence of presses of buttons 4 or 5 without
289        matching button-releases.
290
291
292 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
293        These functions were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and  are  not  found  in
294        SVr4   <EM>curses</EM>,   4.4BSD   <EM>curses</EM>,   or   any   other   previous  curses
295        implementation.  (SVr4 <EM>curses</EM> did have a <EM>getmouse</EM> function, which  took
296        no argument and returned a different type.)
297
298
299 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
300        Applications employing the <EM>ncurses</EM> mouse extension should condition its
301        use on the visibility of the <STRONG>NCURSES_MOUSE_VERSION</STRONG> preprocessor  macro.
302        When  the  interface  changes,  the macro's value increments.  Multiple
303        versions  are  available  when  <EM>ncurses</EM>  is  configured;  see   section
304        "ALTERNATE CONFIGURATIONS" of <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.  The following values may be
305        specified.
306
307           1  has definitions for reserved events.  The mask uses 28 bits.
308
309           2  adds definitions  for  button  5,  removes  the  definitions  for
310              reserved events.  The mask uses 29 bits.
311
312        SVr4  <EM>curses</EM> had support for the mouse in a variant of <STRONG>xterm(1)</STRONG>.  It is
313        mentioned in a few places, with little supporting documentation.
314
315        <STRONG>o</STRONG>   Its "libcurses"  manual  page  lists  functions  for  this  feature
316            prototyped in <EM>curses.h</EM>.
317
318                extern int mouse_set(long int);
319                extern int mouse_on(long int);
320                extern int mouse_off(long int);
321                extern int request_mouse_pos(void);
322                extern int map_button(unsigned long);
323                extern void wmouse_position(WINDOW *, int *, int *);
324                extern unsigned long getmouse(void), getbmap(void);
325
326        <STRONG>o</STRONG>   Its "terminfo" manual page lists capabilities for the feature.
327
328                <STRONG>buttons</STRONG>         <STRONG>btns</STRONG>    <STRONG>BT</STRONG>   Number of buttons on the mouse
329                <STRONG>get_mouse</STRONG>       <STRONG>getm</STRONG>    <STRONG>Gm</STRONG>   Curses should get button events
330                <STRONG>key_mouse</STRONG>       <STRONG>kmous</STRONG>   <STRONG>Km</STRONG>   0631, Mouse event has occurred
331                <STRONG>mouse_info</STRONG>      <STRONG>minfo</STRONG>   <STRONG>Mi</STRONG>   Mouse status information
332                <STRONG>req_mouse_pos</STRONG>   <STRONG>reqmp</STRONG>   <STRONG>RQ</STRONG>   Request mouse position report
333
334        <STRONG>o</STRONG>   The  interface  made assumptions (as does <EM>ncurses</EM>) about the escape
335            sequences sent to and received from the terminal.
336
337            For instance, the SVr4 <EM>curses</EM> library used the <STRONG>get_mouse</STRONG> capability
338            to  tell  the  terminal  which  mouse button events it should send,
339            passing the mouse-button bit mask to the terminal.  Also, it  could
340            ask  the  terminal  where  the  mouse  was  using the <STRONG>req_mouse_pos</STRONG>
341            capability.
342
343            Those features required a terminal program that had  been  modified
344            to work with SVr4 <EM>curses.</EM>  They were not part of the X Consortium's
345            <EM>xterm.</EM>
346
347        When developing the <EM>xterm</EM> mouse support for <EM>ncurses</EM> in September  1995,
348        Eric  Raymond  was  uninterested in using the same interface due to its
349        lack of documentation.  Later, in 1998, Mark Hesseling provided support
350        in  <EM>PDCurses</EM> 2.3 using the SVr4 interface.  <EM>PDCurses,</EM> however, does not
351        use video terminals,  making  it  unnecessary  to  be  concerned  about
352        compatibility with the escape sequences.
353
354
355 </PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
356        Mouse  events  from  <EM>xterm</EM>  are <EM>not</EM> ignored in cooked mode if they have
357        been enabled by <STRONG>mousemask</STRONG>.  Instead, the <EM>xterm</EM>  mouse  report  sequence
358        appears in the string read.
359
360        Mouse  event  reports from <EM>xterm</EM> are not detected correctly in a window
361        with keypad application mode disabled, since they are interpreted as  a
362        variety  of function key.  Set the terminal's <EM>terminfo</EM> capability <STRONG>kmous</STRONG>
363        to "\E[M" (the beginning of the response from <EM>xterm</EM> for mouse  clicks).
364        Other values of <STRONG>kmous</STRONG> are permitted under the same assumption, that is,
365        the report begins with that sequence.
366
367        Because there are no standard response sequences that serve to identify
368        terminals  supporting the <EM>xterm</EM> mouse protocol, <EM>ncurses</EM> assumes that if
369        <STRONG>kmous</STRONG> is defined in the terminal description, or if the terminal type's
370        primary  name  or aliases contain the string "xterm", then the terminal
371        may send mouse events.  The <STRONG>kmous</STRONG> capability is checked first, allowing
372        use of newer <EM>xterm</EM> mouse protocols, such as its private mode 1006.
373
374
375 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
376        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,     <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,     <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>,
377        <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
378
379
380
381 ncurses 6.4                       2024-01-13                    <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
382 </PRE>
383 <div class="nav">
384 <ul>
385 <li><a href="#h2-NAME">NAME</a></li>
386 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
387 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
388 <ul>
389 <li><a href="#h3-mousemask">mousemask</a></li>
390 <li><a href="#h3-Mouse-Events">Mouse Events</a></li>
391 <li><a href="#h3-getmouse">getmouse</a></li>
392 <li><a href="#h3-ungetmouse">ungetmouse</a></li>
393 <li><a href="#h3-wenclose">wenclose</a></li>
394 <li><a href="#h3-wmouse_trafo">wmouse_trafo</a></li>
395 <li><a href="#h3-mouse_trafo">mouse_trafo</a></li>
396 <li><a href="#h3-mouseinterval">mouseinterval</a></li>
397 <li><a href="#h3-has_mouse">has_mouse</a></li>
398 </ul>
399 </li>
400 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
401 <li><a href="#h2-NOTES">NOTES</a></li>
402 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
403 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
404 <li><a href="#h2-BUGS">BUGS</a></li>
405 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
406 </ul>
407 </div>
408 </BODY>
409 </HTML>