mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-26 01:32:25 +00:00
Well, there was bound to be one I'd forgotten: the new Features
panel should include an option to disable xterm mouse reporting. So now it does. Woo. [originally from svn r1579]
This commit is contained in:
parent
ddee0ed132
commit
fcb31d5cfe
@ -1,4 +1,4 @@
|
|||||||
\versionid $Id: config.but,v 1.27 2002/03/06 23:04:20 simon Exp $
|
\versionid $Id: config.but,v 1.28 2002/03/09 11:47:39 simon Exp $
|
||||||
|
|
||||||
\C{config} Configuring PuTTY
|
\C{config} Configuring PuTTY
|
||||||
|
|
||||||
@ -668,6 +668,26 @@ then do not deal correctly with the modified keys. You can force
|
|||||||
these modes to be permanently disabled no matter what the server
|
these modes to be permanently disabled no matter what the server
|
||||||
tries to do.
|
tries to do.
|
||||||
|
|
||||||
|
\S{config-features-mouse} Disabling \cw{xterm}-style mouse reporting
|
||||||
|
|
||||||
|
\cfg{winhelp-topic}{features.mouse}
|
||||||
|
|
||||||
|
PuTTY allows the server to send control codes that let it take over
|
||||||
|
the mouse and use it for purposes other than copy and paste.
|
||||||
|
Applications which use this feature include the text-mode web
|
||||||
|
browser \c{links}, the Usenet newsreader \c{trn} version 4, and the
|
||||||
|
file manager \c{mc} (Midnight Commander).
|
||||||
|
|
||||||
|
If you find this feature inconvenient, you can disable it using the
|
||||||
|
\q{Disable xterm-style mouse reporting} control. With this box
|
||||||
|
ticked, the mouse will \e{always} do copy and paste in the normal
|
||||||
|
way.
|
||||||
|
|
||||||
|
Note that even if the application takes over the mouse, you can
|
||||||
|
still manage PuTTY's copy and paste by holding down the Shift key
|
||||||
|
while you select and paste, unless you have deliberately turned this
|
||||||
|
feature off (see \k{config-mouseshift}).
|
||||||
|
|
||||||
\S{config-features-resize} Disabling remote terminal resizing
|
\S{config-features-resize} Disabling remote terminal resizing
|
||||||
|
|
||||||
\cfg{winhelp-topic}{features.resize}
|
\cfg{winhelp-topic}{features.resize}
|
||||||
@ -1098,6 +1118,10 @@ unchecking the \q{Shift overrides application's use of mouse}
|
|||||||
checkbox will cause Shift + mouse clicks to go to the server as well
|
checkbox will cause Shift + mouse clicks to go to the server as well
|
||||||
(so that mouse-driven copy and paste will be completely disabled).
|
(so that mouse-driven copy and paste will be completely disabled).
|
||||||
|
|
||||||
|
If you want to prevent the application from taking over the mouse at
|
||||||
|
all, you can do this using the Features control panel; see
|
||||||
|
\k{config-features-mouse}.
|
||||||
|
|
||||||
\S{config-rectselect} Default selection mode
|
\S{config-rectselect} Default selection mode
|
||||||
|
|
||||||
\cfg{winhelp-topic}{selection.rect}
|
\cfg{winhelp-topic}{selection.rect}
|
||||||
|
1
putty.h
1
putty.h
@ -277,6 +277,7 @@ typedef struct {
|
|||||||
int funky_type;
|
int funky_type;
|
||||||
int no_applic_c; /* totally disable app cursor keys */
|
int no_applic_c; /* totally disable app cursor keys */
|
||||||
int no_applic_k; /* totally disable app keypad */
|
int no_applic_k; /* totally disable app keypad */
|
||||||
|
int no_mouse_rep; /* totally disable mouse reporting */
|
||||||
int no_remote_resize; /* disable remote resizing */
|
int no_remote_resize; /* disable remote resizing */
|
||||||
int no_alt_screen; /* disable alternate screen */
|
int no_alt_screen; /* disable alternate screen */
|
||||||
int no_remote_wintitle; /* disable remote retitling */
|
int no_remote_wintitle; /* disable remote retitling */
|
||||||
|
@ -189,6 +189,7 @@ void save_settings(char *section, int do_host, Config * cfg)
|
|||||||
write_setting_i(sesskey, "LinuxFunctionKeys", cfg->funky_type);
|
write_setting_i(sesskey, "LinuxFunctionKeys", cfg->funky_type);
|
||||||
write_setting_i(sesskey, "NoApplicationKeys", cfg->no_applic_k);
|
write_setting_i(sesskey, "NoApplicationKeys", cfg->no_applic_k);
|
||||||
write_setting_i(sesskey, "NoApplicationCursors", cfg->no_applic_c);
|
write_setting_i(sesskey, "NoApplicationCursors", cfg->no_applic_c);
|
||||||
|
write_setting_i(sesskey, "NoMouseReporting", cfg->no_mouse_rep);
|
||||||
write_setting_i(sesskey, "NoRemoteResize", cfg->no_remote_resize);
|
write_setting_i(sesskey, "NoRemoteResize", cfg->no_remote_resize);
|
||||||
write_setting_i(sesskey, "NoAltScreen", cfg->no_alt_screen);
|
write_setting_i(sesskey, "NoAltScreen", cfg->no_alt_screen);
|
||||||
write_setting_i(sesskey, "NoRemoteWinTitle", cfg->no_remote_wintitle);
|
write_setting_i(sesskey, "NoRemoteWinTitle", cfg->no_remote_wintitle);
|
||||||
@ -385,6 +386,7 @@ void load_settings(char *section, int do_host, Config * cfg)
|
|||||||
gppi(sesskey, "LinuxFunctionKeys", 0, &cfg->funky_type);
|
gppi(sesskey, "LinuxFunctionKeys", 0, &cfg->funky_type);
|
||||||
gppi(sesskey, "NoApplicationKeys", 0, &cfg->no_applic_k);
|
gppi(sesskey, "NoApplicationKeys", 0, &cfg->no_applic_k);
|
||||||
gppi(sesskey, "NoApplicationCursors", 0, &cfg->no_applic_c);
|
gppi(sesskey, "NoApplicationCursors", 0, &cfg->no_applic_c);
|
||||||
|
gppi(sesskey, "NoMouseReporting", 0, &cfg->no_mouse_rep);
|
||||||
gppi(sesskey, "NoRemoteResize", 0, &cfg->no_remote_resize);
|
gppi(sesskey, "NoRemoteResize", 0, &cfg->no_remote_resize);
|
||||||
gppi(sesskey, "NoAltScreen", 0, &cfg->no_alt_screen);
|
gppi(sesskey, "NoAltScreen", 0, &cfg->no_alt_screen);
|
||||||
gppi(sesskey, "NoRemoteWinTitle", 0, &cfg->no_remote_wintitle);
|
gppi(sesskey, "NoRemoteWinTitle", 0, &cfg->no_remote_wintitle);
|
||||||
|
11
terminal.c
11
terminal.c
@ -352,12 +352,17 @@ void term_pwron(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* When the user reconfigures us, we need to check the forbidden-
|
* When the user reconfigures us, we need to check the forbidden-
|
||||||
* alternate-screen config option.
|
* alternate-screen config option, and also disable raw mouse mode
|
||||||
|
* if the user has disabled mouse reporting.
|
||||||
*/
|
*/
|
||||||
void term_reconfig(void)
|
void term_reconfig(void)
|
||||||
{
|
{
|
||||||
if (cfg.no_alt_screen)
|
if (cfg.no_alt_screen)
|
||||||
swap_screen(0);
|
swap_screen(0);
|
||||||
|
if (cfg.no_mouse_rep) {
|
||||||
|
xterm_mouse = 0;
|
||||||
|
set_raw_mouse_mode(0);
|
||||||
|
}
|
||||||
if (cfg.no_remote_charset) {
|
if (cfg.no_remote_charset) {
|
||||||
cset_attr[0] = cset_attr[1] = ATTR_ASCII;
|
cset_attr[0] = cset_attr[1] = ATTR_ASCII;
|
||||||
sco_acs = alt_sco_acs = 0;
|
sco_acs = alt_sco_acs = 0;
|
||||||
@ -3387,7 +3392,9 @@ void term_mouse(Mouse_Button b, Mouse_Action a, int x, int y,
|
|||||||
{
|
{
|
||||||
pos selpoint;
|
pos selpoint;
|
||||||
unsigned long *ldata;
|
unsigned long *ldata;
|
||||||
int raw_mouse = xterm_mouse && !(cfg.mouse_override && shift);
|
int raw_mouse = (xterm_mouse &&
|
||||||
|
!cfg.no_mouse_rep &&
|
||||||
|
!(cfg.mouse_override && shift));
|
||||||
int default_seltype;
|
int default_seltype;
|
||||||
|
|
||||||
if (y < 0) {
|
if (y < 0) {
|
||||||
|
13
windlg.c
13
windlg.c
@ -329,6 +329,7 @@ enum { IDCX_ABOUT =
|
|||||||
IDC_BOX_FEATURES1,
|
IDC_BOX_FEATURES1,
|
||||||
IDC_NOAPPLICK,
|
IDC_NOAPPLICK,
|
||||||
IDC_NOAPPLICC,
|
IDC_NOAPPLICC,
|
||||||
|
IDC_NOMOUSEREP,
|
||||||
IDC_NORESIZE,
|
IDC_NORESIZE,
|
||||||
IDC_NOALTSCREEN,
|
IDC_NOALTSCREEN,
|
||||||
IDC_NOWINTITLE,
|
IDC_NOWINTITLE,
|
||||||
@ -687,6 +688,8 @@ char *help_context_cmd(int id)
|
|||||||
case IDC_NOAPPLICK:
|
case IDC_NOAPPLICK:
|
||||||
case IDC_NOAPPLICC:
|
case IDC_NOAPPLICC:
|
||||||
return "JI(`',`features.application')";
|
return "JI(`',`features.application')";
|
||||||
|
case IDC_NOMOUSEREP:
|
||||||
|
return "JI(`',`features.mouse')";
|
||||||
case IDC_NORESIZE:
|
case IDC_NORESIZE:
|
||||||
return "JI(`',`features.resize')";
|
return "JI(`',`features.resize')";
|
||||||
case IDC_NOALTSCREEN:
|
case IDC_NOALTSCREEN:
|
||||||
@ -989,6 +992,7 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess)
|
|||||||
cfg.funky_type == 5 ? IDC_FUNCSCO : IDC_FUNCTILDE);
|
cfg.funky_type == 5 ? IDC_FUNCSCO : IDC_FUNCTILDE);
|
||||||
CheckDlgButton(hwnd, IDC_NOAPPLICC, cfg.no_applic_c);
|
CheckDlgButton(hwnd, IDC_NOAPPLICC, cfg.no_applic_c);
|
||||||
CheckDlgButton(hwnd, IDC_NOAPPLICK, cfg.no_applic_k);
|
CheckDlgButton(hwnd, IDC_NOAPPLICK, cfg.no_applic_k);
|
||||||
|
CheckDlgButton(hwnd, IDC_NOMOUSEREP, cfg.no_mouse_rep);
|
||||||
CheckDlgButton(hwnd, IDC_NORESIZE, cfg.no_remote_resize);
|
CheckDlgButton(hwnd, IDC_NORESIZE, cfg.no_remote_resize);
|
||||||
CheckDlgButton(hwnd, IDC_NOALTSCREEN, cfg.no_alt_screen);
|
CheckDlgButton(hwnd, IDC_NOALTSCREEN, cfg.no_alt_screen);
|
||||||
CheckDlgButton(hwnd, IDC_NOWINTITLE, cfg.no_remote_wintitle);
|
CheckDlgButton(hwnd, IDC_NOWINTITLE, cfg.no_remote_wintitle);
|
||||||
@ -1353,7 +1357,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (panel == featurespanelstart) {
|
if (panel == featurespanelstart) {
|
||||||
/* The Features panel. Accelerators used: [acgoh] ukswtbr */
|
/* The Features panel. Accelerators used: [acgoh] ukswtbrx */
|
||||||
struct ctlpos cp;
|
struct ctlpos cp;
|
||||||
ctlposinit(&cp, hwnd, 80, 3, 13);
|
ctlposinit(&cp, hwnd, 80, 3, 13);
|
||||||
bartitle(&cp, "Enabling and disabling advanced terminal features ",
|
bartitle(&cp, "Enabling and disabling advanced terminal features ",
|
||||||
@ -1361,6 +1365,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
|
|||||||
beginbox(&cp, NULL, IDC_BOX_FEATURES1);
|
beginbox(&cp, NULL, IDC_BOX_FEATURES1);
|
||||||
checkbox(&cp, "Disable application c&ursor keys mode", IDC_NOAPPLICC);
|
checkbox(&cp, "Disable application c&ursor keys mode", IDC_NOAPPLICC);
|
||||||
checkbox(&cp, "Disable application &keypad mode", IDC_NOAPPLICK);
|
checkbox(&cp, "Disable application &keypad mode", IDC_NOAPPLICK);
|
||||||
|
checkbox(&cp, "Disable &xterm-style mouse reporting", IDC_NOMOUSEREP);
|
||||||
checkbox(&cp, "Disable remote-controlled terminal re&sizing",
|
checkbox(&cp, "Disable remote-controlled terminal re&sizing",
|
||||||
IDC_NORESIZE);
|
IDC_NORESIZE);
|
||||||
checkbox(&cp, "Disable s&witching to alternate terminal screen",
|
checkbox(&cp, "Disable s&witching to alternate terminal screen",
|
||||||
@ -2315,6 +2320,12 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
|
|||||||
cfg.no_applic_k =
|
cfg.no_applic_k =
|
||||||
IsDlgButtonChecked(hwnd, IDC_NOAPPLICK);
|
IsDlgButtonChecked(hwnd, IDC_NOAPPLICK);
|
||||||
break;
|
break;
|
||||||
|
case IDC_NOMOUSEREP:
|
||||||
|
if (HIWORD(wParam) == BN_CLICKED ||
|
||||||
|
HIWORD(wParam) == BN_DOUBLECLICKED)
|
||||||
|
cfg.no_mouse_rep =
|
||||||
|
IsDlgButtonChecked(hwnd, IDC_NOMOUSEREP);
|
||||||
|
break;
|
||||||
case IDC_NORESIZE:
|
case IDC_NORESIZE:
|
||||||
if (HIWORD(wParam) == BN_CLICKED ||
|
if (HIWORD(wParam) == BN_CLICKED ||
|
||||||
HIWORD(wParam) == BN_DOUBLECLICKED)
|
HIWORD(wParam) == BN_DOUBLECLICKED)
|
||||||
|
4
window.c
4
window.c
@ -756,7 +756,8 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup_exit(msg.wParam);
|
cleanup_exit(msg.wParam); /* this doesn't return... */
|
||||||
|
return msg.wParam; /* ... but optimiser doesn't know */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -816,6 +817,7 @@ char *do_select(SOCKET skt, int startup)
|
|||||||
*/
|
*/
|
||||||
void set_raw_mouse_mode(int activate)
|
void set_raw_mouse_mode(int activate)
|
||||||
{
|
{
|
||||||
|
activate = activate && !cfg.no_mouse_rep;
|
||||||
send_raw_mouse = activate;
|
send_raw_mouse = activate;
|
||||||
SetCursor(LoadCursor(NULL, activate ? IDC_ARROW : IDC_IBEAM));
|
SetCursor(LoadCursor(NULL, activate ? IDC_ARROW : IDC_IBEAM));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user