tmux doesn't support \033[?1001s, adding that may be enough
if not then ncurses needs to tell tmux it is using the mouse like
ncmpcpp is doing, are you sure it isn't sending \033[?1000h? (run one of
the applications in script, or use tmux logging to see)
On Fri, Jun 03, 2011 at 04:08:04PM +0200, marcel partap wrote:
> >haven't got time to look into this really, but it is on the pile in my
> >inbox so if nobody else does I'll get to it after this week
> Ok i have wasted couple of hours investigating this and conclusion
> is as follows.
> If any mouse-interactivity feature (f.e. mouse-select-pane) is
> turned on (and, in this case, multiple panes exists), Tmux checks
> for 'kmous' in the termcap, then directly uses the 'Xterm Control
> Sequences', i.e. it sends f.e. an "enable SET_VT200_MOUSE" escape
> sequence down the iostream as in
> >if (mode & MODE_MOUSE_STANDARD)
> > tty_puts(tty, "\033[?1000h");
> which tells the terminal emulator to communicate button
> press/release events via special ESC sequences, which tmux in turn
> catches and parses. This however prevents SOME applications running
> inside tmux from doing the same - only when tmux disables mouse
> event tracking
> >if (tty->mode & MODE_MOUSE_STANDARD)
> > tty_puts(tty, "\033[?1000l");
> >if (tty->mode & MODE_MOUSE_UTF8) // SET_EXT_MODE_MOUSE, uses UTF8 for bigger
> >[x,y] coordinate space
> > tty_puts(tty, "\033[?1005l");
> mouse scrolling f.e. in _less_ and _bash_ history does work. For
> those two, i tried to find out HOW they implement mouse support but
> could not find any trace in the code which suggests this magically
> comes 'for free' from _ncurses_ compiled with support for the _gpm_
> console mouse driver, which (just for reference) defines in gpm.h:
> >#define GPM_XTERM_ON \
> > printf("%c[?1001s",27), fflush(stdout), /* save old hilit tracking */ \
> > printf("%c[?1000h",27), fflush(stdout) /* enable mouse tracking */
>
> The ncurses docs state about mouse support:
> > Mouse Interfacing
> >
> > The ncurses library also provides a mouse interface.
> >
> > NOTE: this facility is specific to ncurses, it is not part of
> > either the XSI Curses standard, nor of System V Release 4, nor BSD
> > curses. System V Release 4 curses contains code with similar
> > interface definitions, however it is not documented. Other than by
> > disassembling the library, we have no way to determine exactly how
> > that mouse code works. Thus, we recommend that you wrap
> > mouse-related code in an #ifdef using the feature macro
> > NCURSES_MOUSE_VERSION so it will not be compiled and linked on
> > non-ncurses systems.
> >
> > Presently, mouse event reporting works in the following environments:
> > * xterm and similar programs such as rxvt.
> > * Linux console, when configured with gpm(1), Alessandro Rubini's
> > mouse server.
> > * FreeBSD sysmouse (console)
> > * OS/2 EMX
> >
> > The mouse interface is very simple. To activate it, you use the
> > function mousemask(), passing it as first argument a bit-mask that
> > specifies what kinds of events you want your program to be able to
> > see. It will return the bit-mask of events that actually become
> > visible, which may differ from the argument if the mouse device is not
> > capable of reporting some of the event types you specify.
> >
> > Once the mouse is active, your application's command loop should watch
> > for a return value of KEY_MOUSE from wgetch(). When you see this, a
> > mouse event report has been queued. To pick it off the queue, use the
> > function getmouse() (you must do this before the next wgetch(),
> > otherwise another mouse event might come in and make the first one
> > inaccessible).
> However, as mentioned, less and bash do not seem to have any code
> explicitly activating ncurses mouse support. And, if tmux is
> tracking mouse events, their mouse scrolling is dead.
> An application that DOES use the above ncurses method is my favorite
> music player [..daemon client..]. From ncmpcpp.cpp:
> > MEVENT mouse_event;
> > mouseinterval(0);
> > if (Config.mouse_support)
> > mousemask(ALL_MOUSE_EVENTS, 0);
> And this one is able to receive mouse events even when tmux is
> tracking them aswell!
>
>
> ...So0Oo.. what do we make from this? Well, firstly, the problem is
> non-trivial ^^
> Secondly, there may be two options: figure out if bash/less mouse
> support can be made more robust like ncmpcpp's and push patches
> upstream. Or to try and add ncurses mouse support
> (http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/mouse.html) to tmux
> and test if that solves the problem.
> And now i definitly should do some work on my engineering project x)
> #regards/marcel.
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today.
http://p.sf.net/sfu/quest-dev2dev2
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users