Support SGR 1006 mouse reporting
Patch to support SGR 1006 mouse reporting, from [w3m-dev 04466] on 2012-07-15, provided by Hayaki Saito.
This commit is contained in:
@@ -91,7 +91,7 @@ unsigned char EscBKeymap[128] = {
|
|||||||
/* 0 1 2 3 4 5 6 7 */
|
/* 0 1 2 3 4 5 6 7 */
|
||||||
nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd,
|
nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd,
|
||||||
/* 8 9 : ; < = > ? */
|
/* 8 9 : ; < = > ? */
|
||||||
nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd,
|
nulcmd, nulcmd, nulcmd, nulcmd, sgrmouse, nulcmd, nulcmd, nulcmd,
|
||||||
/* @ A B C D E F G */
|
/* @ A B C D E F G */
|
||||||
nulcmd, movU, movD, movR, movL, nulcmd, goLineL, pgFore,
|
nulcmd, movU, movD, movR, movL, nulcmd, goLineL, pgFore,
|
||||||
/* H I J K L M N O */
|
/* H I J K L M N O */
|
||||||
|
|||||||
@@ -5398,6 +5398,58 @@ DEFUN(mouse, MOUSE, "mouse operation")
|
|||||||
process_mouse(btn, x, y);
|
process_mouse(btn, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFUN(sgrmouse, SGRMOUSE, "SGR 1006 mouse operation")
|
||||||
|
{
|
||||||
|
int btn = 0, x = 0, y = 0;
|
||||||
|
unsigned char c;
|
||||||
|
|
||||||
|
do {
|
||||||
|
c = getch();
|
||||||
|
if (IS_DIGIT(c))
|
||||||
|
btn = btn * 10 + c - '0';
|
||||||
|
else if (c == ';')
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
} while (1);
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__) && CYGWIN_VERSION_DLL_MAJOR < 1005
|
||||||
|
if (cygwin_mouse_btn_swapped) {
|
||||||
|
if (btn == MOUSE_BTN2_DOWN)
|
||||||
|
btn = MOUSE_BTN3_DOWN;
|
||||||
|
else if (btn == MOUSE_BTN3_DOWN)
|
||||||
|
btn = MOUSE_BTN2_DOWN;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
do {
|
||||||
|
c = getch();
|
||||||
|
if (IS_DIGIT(c))
|
||||||
|
x = x * 10 + c - '0';
|
||||||
|
else if (c == ';')
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
} while (1);
|
||||||
|
|
||||||
|
do {
|
||||||
|
c = getch();
|
||||||
|
if (IS_DIGIT(c))
|
||||||
|
y = y * 10 + c - '0';
|
||||||
|
else if (c == 'M')
|
||||||
|
break;
|
||||||
|
else if (c == 'm') {
|
||||||
|
btn |= 3;
|
||||||
|
break;
|
||||||
|
} else
|
||||||
|
return;
|
||||||
|
} while (1);
|
||||||
|
|
||||||
|
if (x < 0 || x >= COLS || y < 0 || y > LASTLINE)
|
||||||
|
return;
|
||||||
|
process_mouse(btn, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_GPM
|
#ifdef USE_GPM
|
||||||
int
|
int
|
||||||
gpm_process_mouse(Gpm_Event * event, void *data)
|
gpm_process_mouse(Gpm_Event * event, void *data)
|
||||||
|
|||||||
@@ -683,6 +683,7 @@ extern void reMark(void);
|
|||||||
|
|
||||||
#ifdef USE_MOUSE
|
#ifdef USE_MOUSE
|
||||||
extern void mouse(void);
|
extern void mouse(void);
|
||||||
|
extern void sgrmouse(void);
|
||||||
extern void mouse_init(void);
|
extern void mouse_init(void);
|
||||||
extern void mouse_end(void);
|
extern void mouse_end(void);
|
||||||
extern void mouse_active(void);
|
extern void mouse_active(void);
|
||||||
|
|||||||
@@ -2027,8 +2027,8 @@ sleep_till_anykey(int sec, int purge)
|
|||||||
|
|
||||||
#ifdef USE_MOUSE
|
#ifdef USE_MOUSE
|
||||||
|
|
||||||
#define XTERM_ON {fputs("\033[?1001s\033[?1000h",ttyf); flush_tty();}
|
#define XTERM_ON {fputs("\033[?1001s\033[?1000h\033[?1006h",ttyf); flush_tty();}
|
||||||
#define XTERM_OFF {fputs("\033[?1000l\033[?1001r",ttyf); flush_tty();}
|
#define XTERM_OFF {fputs("\033[?1006l\033[?1000l\033[?1001r",ttyf); flush_tty();}
|
||||||
#define CYGWIN_ON {fputs("\033[?1000h",ttyf); flush_tty();}
|
#define CYGWIN_ON {fputs("\033[?1000h",ttyf); flush_tty();}
|
||||||
#define CYGWIN_OFF {fputs("\033[?1000l",ttyf); flush_tty();}
|
#define CYGWIN_OFF {fputs("\033[?1000l",ttyf); flush_tty();}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user