mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 01:48:47 +00:00
Preliminary mouse support.
This commit is contained in:
parent
f47ab8f13f
commit
043514a834
4
CHANGES
4
CHANGES
@ -1,5 +1,7 @@
|
|||||||
27 November 2007
|
27 November 2007
|
||||||
|
|
||||||
|
* Enable/disable mouse when asked, if terminal claims to support it. Mouse
|
||||||
|
sequences are just passed through unaltered for the moment.
|
||||||
* Big internal reorganisation. Rather than leaving control of the tty solely in
|
* Big internal reorganisation. Rather than leaving control of the tty solely in
|
||||||
the client and piping all data through a socket to it, change so that the
|
the client and piping all data through a socket to it, change so that the
|
||||||
server opens the tty again and reads and writes to it directly. This avoids
|
server opens the tty again and reads and writes to it directly. This avoids
|
||||||
@ -283,4 +285,4 @@
|
|||||||
(including mutt, emacs). No status bar yet and no key remapping or other
|
(including mutt, emacs). No status bar yet and no key remapping or other
|
||||||
customisation.
|
customisation.
|
||||||
|
|
||||||
$Id: CHANGES,v 1.87 2007-11-27 19:23:32 nicm Exp $
|
$Id: CHANGES,v 1.88 2007-11-27 23:28:51 nicm Exp $
|
||||||
|
23
TODO
23
TODO
@ -65,3 +65,26 @@
|
|||||||
- anything which uses cmd_{send,recv}_string will break if the string is
|
- anything which uses cmd_{send,recv}_string will break if the string is
|
||||||
split. string length should be part of the command size
|
split. string length should be part of the command size
|
||||||
- echo \\033[35\;46m\\033[2J last line quirk (with C-b r)
|
- echo \\033[35\;46m\\033[2J last line quirk (with C-b r)
|
||||||
|
|
||||||
|
--------
|
||||||
|
kmous -- \E[M
|
||||||
|
|
||||||
|
mouse init: putp("\033[?1000h");
|
||||||
|
mouse deinit: putp("\033[?1000l");
|
||||||
|
|
||||||
|
\e[M CbCxCy
|
||||||
|
* On button press or release, xterm sends ESC [ M CbCxCy.
|
||||||
|
* The low two bits of Cb encode button information: 0=MB1
|
||||||
|
* pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release. The
|
||||||
|
* upper bits encode what modifiers were down when the
|
||||||
|
* button was pressed and are added together. 4=Shift,
|
||||||
|
* 8=Meta, 16=Control. Cx and Cy are the x and y coordinates
|
||||||
|
* of the mouse event. The upper left corner is (1,1).
|
||||||
|
|
||||||
|
|
||||||
|
get_mouse getm Gm Curses should get
|
||||||
|
button events
|
||||||
|
key_mouse kmous Km Mouse event has
|
||||||
|
occurred
|
||||||
|
mouse_info minfo Mi Mouse status
|
||||||
|
information
|
||||||
|
10
input.c
10
input.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: input.c,v 1.41 2007-11-27 23:01:27 nicm Exp $ */
|
/* $Id: input.c,v 1.42 2007-11-27 23:28:51 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -913,6 +913,10 @@ input_handle_sequence_sm(struct input_ctx *ictx)
|
|||||||
s->mode |= MODE_CURSOR;
|
s->mode |= MODE_CURSOR;
|
||||||
input_write(ictx, TTY_CURSORON);
|
input_write(ictx, TTY_CURSORON);
|
||||||
break;
|
break;
|
||||||
|
case 1000:
|
||||||
|
s->mode |= MODE_MOUSE;
|
||||||
|
input_write(ictx, TTY_MOUSEON);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
log_debug("unknown SM [%hhu]: %u", ictx->private, n);
|
log_debug("unknown SM [%hhu]: %u", ictx->private, n);
|
||||||
break;
|
break;
|
||||||
@ -954,6 +958,10 @@ input_handle_sequence_rm(struct input_ctx *ictx)
|
|||||||
s->mode &= ~MODE_CURSOR;
|
s->mode &= ~MODE_CURSOR;
|
||||||
input_write(ictx, TTY_CURSOROFF);
|
input_write(ictx, TTY_CURSOROFF);
|
||||||
break;
|
break;
|
||||||
|
case 1000:
|
||||||
|
s->mode &= ~MODE_MOUSE;
|
||||||
|
input_write(ictx, TTY_MOUSEOFF);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
log_debug("unknown RM [%hhu]: %u", ictx->private, n);
|
log_debug("unknown RM [%hhu]: %u", ictx->private, n);
|
||||||
break;
|
break;
|
||||||
|
7
tmux.h
7
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.105 2007-11-27 23:01:27 nicm Exp $ */
|
/* $Id: tmux.h,v 1.106 2007-11-27 23:28:51 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -282,6 +282,8 @@ struct buffer {
|
|||||||
#define TTY_KKEYPADOFF 22
|
#define TTY_KKEYPADOFF 22
|
||||||
#define TTY_KKEYPADON 23
|
#define TTY_KKEYPADON 23
|
||||||
#define TTY_TITLE 24
|
#define TTY_TITLE 24
|
||||||
|
#define TTY_MOUSEON 25
|
||||||
|
#define TTY_MOUSEOFF 26 /* XXX merge allon/off into 1 arg? */
|
||||||
|
|
||||||
/* Message codes. */
|
/* Message codes. */
|
||||||
enum hdrtype {
|
enum hdrtype {
|
||||||
@ -343,6 +345,7 @@ struct msg_resize_data {
|
|||||||
#define MODE_HIDDEN 0x020
|
#define MODE_HIDDEN 0x020
|
||||||
#define MODE_BACKGROUND 0x040
|
#define MODE_BACKGROUND 0x040
|
||||||
#define MODE_BGCURSOR 0x080
|
#define MODE_BGCURSOR 0x080
|
||||||
|
#define MODE_MOUSE 0x100
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Virtual screen. This is stored as three blocks of 8-bit values, one for
|
* Virtual screen. This is stored as three blocks of 8-bit values, one for
|
||||||
@ -558,7 +561,7 @@ struct client {
|
|||||||
|
|
||||||
#define CLIENT_TERMINAL 0x1
|
#define CLIENT_TERMINAL 0x1
|
||||||
#define CLIENT_PREFIX 0x2
|
#define CLIENT_PREFIX 0x2
|
||||||
#define CLIENT_ATTACHED 0x4
|
#define CLIENT_MOUSE 0x4
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
struct session *session;
|
struct session *session;
|
||||||
|
10
tty.c
10
tty.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tty.c,v 1.6 2007-11-27 23:01:27 nicm Exp $ */
|
/* $Id: tty.c,v 1.7 2007-11-27 23:28:51 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -324,7 +324,15 @@ tty_vwrite(struct tty *tty, int cmd, va_list ap)
|
|||||||
case TTY_KKEYPADON:
|
case TTY_KKEYPADON:
|
||||||
if (keypad_xmit != NULL)
|
if (keypad_xmit != NULL)
|
||||||
tty_puts(tty, keypad_xmit);
|
tty_puts(tty, keypad_xmit);
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case TTY_MOUSEOFF:
|
||||||
|
if (key_mouse != NULL)
|
||||||
|
tty_puts(tty, "\e[?1000l");
|
||||||
|
break;
|
||||||
|
case TTY_MOUSEON:
|
||||||
|
if (key_mouse != NULL)
|
||||||
|
tty_puts(tty, "\e[?1000h");
|
||||||
break;
|
break;
|
||||||
case TTY_TITLE:
|
case TTY_TITLE:
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user