1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-10 15:48:06 -05:00

We can now configure the terminal's answerback string when it receives ^E.

[originally from svn r1031]
This commit is contained in:
Simon Tatham 2001-04-09 12:43:46 +00:00
parent 0d419ab966
commit 8e91c62bfa
4 changed files with 39 additions and 3 deletions

View File

@ -227,6 +227,7 @@ typedef struct {
char logfilename[FILENAME_MAX];
int logtype;
int hide_mouseptr;
char answerback[256];
/* Colour options */
int try_palette;
int bold_colour;

View File

@ -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, "LocalEcho", cfg->localecho);
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, "HideMousePtr", cfg->hide_mouseptr);
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, "LocalEcho", LD_BACKEND, &cfg->localecho);
gppi (sesskey, "LocalEdit", LD_BACKEND, &cfg->localedit);
gpps (sesskey, "Answerback", "PuTTY", cfg->answerback, sizeof(cfg->answerback));
gppi (sesskey, "AlwaysOnTop", 0, &cfg->alwaysontop);
gppi (sesskey, "HideMousePtr", 0, &cfg->hide_mouseptr);
gppi (sesskey, "CurType", 0, &cfg->cursor_type);

View File

@ -803,8 +803,30 @@ static int beep_overload = 0;
*
* An xterm returns "xterm" (5 characters)
*/
compatibility(OTHER);
ldisc_send ("PuTTY", 5);
compatibility(ANSIMIN);
{
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;
case '\007':
beep_count++;

View File

@ -271,6 +271,8 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue,
IDC_BEEP,
IDC_BCE,
IDC_BLINKTEXT,
IDC_ANSWERBACK,
IDC_ANSWEREDIT,
IDC_ECHOSTATIC,
IDC_ECHOBACKEND,
IDC_ECHOYES,
@ -530,6 +532,7 @@ static void init_dlg_ctrls(HWND hwnd) {
CheckRadioButton (hwnd, IDC_EDITBACKEND, IDC_EDITNO,
cfg.localedit == LD_BACKEND ? IDC_EDITBACKEND:
cfg.localedit == LD_YES ? IDC_EDITYES : IDC_EDITNO);
SetDlgItemText (hwnd, IDC_ANSWEREDIT, cfg.answerback);
CheckDlgButton (hwnd, IDC_ALWAYSONTOP, cfg.alwaysontop);
CheckDlgButton (hwnd, IDC_SCROLLKEY, cfg.scroll_on_key);
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) {
/* The Terminal panel. Accelerators used: [acgo] wdlben ht */
/* The Terminal panel. Accelerators used: [acgo] wdlben hts */
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
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, "Use background colour to &erase screen", IDC_BCE);
checkbox(&cp, "Enable bli&nking text", IDC_BLINKTEXT);
multiedit(&cp,
"An&swerback to ^E:", IDC_ANSWERBACK,
IDC_ANSWEREDIT, 100, NULL);
endbox(&cp);
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;
}
break;
case IDC_ANSWEREDIT:
if (HIWORD(wParam) == EN_CHANGE)
GetDlgItemText (hwnd, IDC_ANSWEREDIT, cfg.answerback,
sizeof(cfg.answerback)-1);
break;
case IDC_ALWAYSONTOP:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED)