mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-23 05:55:04 -05:00
We can now configure the terminal's answerback string when it receives ^E.
[originally from svn r1031]
This commit is contained in:
parent
0d419ab966
commit
8e91c62bfa
1
putty.h
1
putty.h
@ -227,6 +227,7 @@ typedef struct {
|
|||||||
char logfilename[FILENAME_MAX];
|
char logfilename[FILENAME_MAX];
|
||||||
int logtype;
|
int logtype;
|
||||||
int hide_mouseptr;
|
int hide_mouseptr;
|
||||||
|
char answerback[256];
|
||||||
/* Colour options */
|
/* Colour options */
|
||||||
int try_palette;
|
int try_palette;
|
||||||
int bold_colour;
|
int bold_colour;
|
||||||
|
@ -97,6 +97,7 @@ void save_settings (char *section, int do_host, Config *cfg) {
|
|||||||
write_setting_i (sesskey, "ComposeKey", cfg->compose_key);
|
write_setting_i (sesskey, "ComposeKey", cfg->compose_key);
|
||||||
write_setting_i (sesskey, "LocalEcho", cfg->localecho);
|
write_setting_i (sesskey, "LocalEcho", cfg->localecho);
|
||||||
write_setting_i (sesskey, "LocalEdit", cfg->localedit);
|
write_setting_i (sesskey, "LocalEdit", cfg->localedit);
|
||||||
|
write_setting_s (sesskey, "Answerback", cfg->answerback);
|
||||||
write_setting_i (sesskey, "AlwaysOnTop", cfg->alwaysontop);
|
write_setting_i (sesskey, "AlwaysOnTop", cfg->alwaysontop);
|
||||||
write_setting_i (sesskey, "HideMousePtr", cfg->hide_mouseptr);
|
write_setting_i (sesskey, "HideMousePtr", cfg->hide_mouseptr);
|
||||||
write_setting_i (sesskey, "CurType", cfg->cursor_type);
|
write_setting_i (sesskey, "CurType", cfg->cursor_type);
|
||||||
@ -247,6 +248,7 @@ void load_settings (char *section, int do_host, Config *cfg) {
|
|||||||
gppi (sesskey, "ComposeKey", 0, &cfg->compose_key);
|
gppi (sesskey, "ComposeKey", 0, &cfg->compose_key);
|
||||||
gppi (sesskey, "LocalEcho", LD_BACKEND, &cfg->localecho);
|
gppi (sesskey, "LocalEcho", LD_BACKEND, &cfg->localecho);
|
||||||
gppi (sesskey, "LocalEdit", LD_BACKEND, &cfg->localedit);
|
gppi (sesskey, "LocalEdit", LD_BACKEND, &cfg->localedit);
|
||||||
|
gpps (sesskey, "Answerback", "PuTTY", cfg->answerback, sizeof(cfg->answerback));
|
||||||
gppi (sesskey, "AlwaysOnTop", 0, &cfg->alwaysontop);
|
gppi (sesskey, "AlwaysOnTop", 0, &cfg->alwaysontop);
|
||||||
gppi (sesskey, "HideMousePtr", 0, &cfg->hide_mouseptr);
|
gppi (sesskey, "HideMousePtr", 0, &cfg->hide_mouseptr);
|
||||||
gppi (sesskey, "CurType", 0, &cfg->cursor_type);
|
gppi (sesskey, "CurType", 0, &cfg->cursor_type);
|
||||||
|
26
terminal.c
26
terminal.c
@ -803,8 +803,30 @@ static int beep_overload = 0;
|
|||||||
*
|
*
|
||||||
* An xterm returns "xterm" (5 characters)
|
* An xterm returns "xterm" (5 characters)
|
||||||
*/
|
*/
|
||||||
compatibility(OTHER);
|
compatibility(ANSIMIN);
|
||||||
ldisc_send ("PuTTY", 5);
|
{
|
||||||
|
char abuf[256], *s, *d;
|
||||||
|
int state=0;
|
||||||
|
for(s=cfg.answerback, d=abuf; *s; s++) {
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
if (*s >= 'a' && *s <= 'z')
|
||||||
|
*d++ = (*s - ('a'-1));
|
||||||
|
else if ((*s >='@' && *s<='_') ||
|
||||||
|
*s == '?' || (*s&0x80))
|
||||||
|
*d++ = ('@'^*s);
|
||||||
|
else if (*s == '~')
|
||||||
|
*d++ = '^';
|
||||||
|
state = 0;
|
||||||
|
}
|
||||||
|
else if (*s == '^') {
|
||||||
|
state = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*d++ = xlat_kbd2tty((unsigned char)*s);
|
||||||
|
}
|
||||||
|
ldisc_send (abuf, d-abuf);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case '\007':
|
case '\007':
|
||||||
beep_count++;
|
beep_count++;
|
||||||
|
13
windlg.c
13
windlg.c
@ -271,6 +271,8 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue,
|
|||||||
IDC_BEEP,
|
IDC_BEEP,
|
||||||
IDC_BCE,
|
IDC_BCE,
|
||||||
IDC_BLINKTEXT,
|
IDC_BLINKTEXT,
|
||||||
|
IDC_ANSWERBACK,
|
||||||
|
IDC_ANSWEREDIT,
|
||||||
IDC_ECHOSTATIC,
|
IDC_ECHOSTATIC,
|
||||||
IDC_ECHOBACKEND,
|
IDC_ECHOBACKEND,
|
||||||
IDC_ECHOYES,
|
IDC_ECHOYES,
|
||||||
@ -530,6 +532,7 @@ static void init_dlg_ctrls(HWND hwnd) {
|
|||||||
CheckRadioButton (hwnd, IDC_EDITBACKEND, IDC_EDITNO,
|
CheckRadioButton (hwnd, IDC_EDITBACKEND, IDC_EDITNO,
|
||||||
cfg.localedit == LD_BACKEND ? IDC_EDITBACKEND:
|
cfg.localedit == LD_BACKEND ? IDC_EDITBACKEND:
|
||||||
cfg.localedit == LD_YES ? IDC_EDITYES : IDC_EDITNO);
|
cfg.localedit == LD_YES ? IDC_EDITYES : IDC_EDITNO);
|
||||||
|
SetDlgItemText (hwnd, IDC_ANSWEREDIT, cfg.answerback);
|
||||||
CheckDlgButton (hwnd, IDC_ALWAYSONTOP, cfg.alwaysontop);
|
CheckDlgButton (hwnd, IDC_ALWAYSONTOP, cfg.alwaysontop);
|
||||||
CheckDlgButton (hwnd, IDC_SCROLLKEY, cfg.scroll_on_key);
|
CheckDlgButton (hwnd, IDC_SCROLLKEY, cfg.scroll_on_key);
|
||||||
CheckDlgButton (hwnd, IDC_SCROLLDISP, cfg.scroll_on_disp);
|
CheckDlgButton (hwnd, IDC_SCROLLDISP, cfg.scroll_on_disp);
|
||||||
@ -747,7 +750,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (panel == terminalpanelstart) {
|
if (panel == terminalpanelstart) {
|
||||||
/* The Terminal panel. Accelerators used: [acgo] wdlben ht */
|
/* The Terminal panel. Accelerators used: [acgo] wdlben hts */
|
||||||
struct ctlpos cp;
|
struct ctlpos cp;
|
||||||
ctlposinit(&cp, hwnd, 80, 3, 13);
|
ctlposinit(&cp, hwnd, 80, 3, 13);
|
||||||
bartitle(&cp, "Options controlling the terminal emulation",
|
bartitle(&cp, "Options controlling the terminal emulation",
|
||||||
@ -760,6 +763,9 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) {
|
|||||||
checkbox(&cp, "&Beep enabled", IDC_BEEP);
|
checkbox(&cp, "&Beep enabled", IDC_BEEP);
|
||||||
checkbox(&cp, "Use background colour to &erase screen", IDC_BCE);
|
checkbox(&cp, "Use background colour to &erase screen", IDC_BCE);
|
||||||
checkbox(&cp, "Enable bli&nking text", IDC_BLINKTEXT);
|
checkbox(&cp, "Enable bli&nking text", IDC_BLINKTEXT);
|
||||||
|
multiedit(&cp,
|
||||||
|
"An&swerback to ^E:", IDC_ANSWERBACK,
|
||||||
|
IDC_ANSWEREDIT, 100, NULL);
|
||||||
endbox(&cp);
|
endbox(&cp);
|
||||||
|
|
||||||
beginbox(&cp, "Line discipline options",
|
beginbox(&cp, "Line discipline options",
|
||||||
@ -1492,6 +1498,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg,
|
|||||||
if (LOWORD(wParam)==IDC_EDITNO) cfg.localedit=LD_NO;
|
if (LOWORD(wParam)==IDC_EDITNO) cfg.localedit=LD_NO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case IDC_ANSWEREDIT:
|
||||||
|
if (HIWORD(wParam) == EN_CHANGE)
|
||||||
|
GetDlgItemText (hwnd, IDC_ANSWEREDIT, cfg.answerback,
|
||||||
|
sizeof(cfg.answerback)-1);
|
||||||
|
break;
|
||||||
case IDC_ALWAYSONTOP:
|
case IDC_ALWAYSONTOP:
|
||||||
if (HIWORD(wParam) == BN_CLICKED ||
|
if (HIWORD(wParam) == BN_CLICKED ||
|
||||||
HIWORD(wParam) == BN_DOUBLECLICKED)
|
HIWORD(wParam) == BN_DOUBLECLICKED)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user