-\versionid $Id: config.but,v 1.22 2001/12/15 12:15:24 simon Exp $
+\versionid $Id: config.but,v 1.23 2001/12/29 17:21:26 simon Exp $
\C{config} Configuring PuTTY
Telnet special interrupt code. You probably shouldn't enable this
unless you know what you're doing.
+\S{config-telnetkey} \q{Return key sends telnet New Line instead of ^M}
+
+\cfg{winhelp-topic}{telnet.newline}
+
+Unlike most other remote login protocols, the Telnet protocol has a
+special \Q{new line} code that is not the same as the usual line
+endings of Control-M or Control-J. By default, PuTTY sends the
+Telnet New Line code when you press Return, instead of sending
+Control-M as it does in most other protocols.
+
+Most Unix-style Telnet servers don't mind whether they receive
+Telnet New Line or Control-M; some servers do expect New Line, and
+some servers prefer to see ^M. If you are seeing surprising
+behaviour when you press Return in a Telnet session, you might try
+turning this option off to see if it helps.
+
\H{config-rlogin} The Rlogin panel
The Rlogin panel allows you to configure options that only apply to
back->send(term_buf, term_buflen);
if (cfg.protocol == PROT_RAW)
back->send("\r\n", 2);
- else if (cfg.protocol == PROT_TELNET)
+ else if (cfg.protocol == PROT_TELNET && cfg.telnet_newline)
back->special(TS_EOL);
else
back->send("\r", 1);
if (keyflag && cfg.protocol == PROT_TELNET && len == 1) {
switch (buf[0]) {
case CTRL('M'):
- back->special(TS_EOL);
+ if (cfg.protocol == PROT_TELNET && cfg.telnet_newline)
+ back->special(TS_EOL);
+ else
+ back->send("\r", 1);
break;
case CTRL('?'):
case CTRL('H'):
int app_keypad;
int nethack_keypad;
int telnet_keyboard;
+ int telnet_newline;
int alt_f4; /* is it special? */
int alt_space; /* is it special? */
int alt_only; /* is it special? */
write_setting_i(sesskey, "ComposeKey", cfg->compose_key);
write_setting_i(sesskey, "CtrlAltKeys", cfg->ctrlaltkeys);
write_setting_i(sesskey, "TelnetKey", cfg->telnet_keyboard);
+ write_setting_i(sesskey, "TelnetRet", cfg->telnet_newline);
write_setting_i(sesskey, "LocalEcho", cfg->localecho);
write_setting_i(sesskey, "LocalEdit", cfg->localedit);
write_setting_s(sesskey, "Answerback", cfg->answerback);
gppi(sesskey, "ComposeKey", 0, &cfg->compose_key);
gppi(sesskey, "CtrlAltKeys", 1, &cfg->ctrlaltkeys);
gppi(sesskey, "TelnetKey", 0, &cfg->telnet_keyboard);
+ gppi(sesskey, "TelnetRet", 1, &cfg->telnet_newline);
gppi(sesskey, "LocalEcho", LD_BACKEND, &cfg->localecho);
gppi(sesskey, "LocalEdit", LD_BACKEND, &cfg->localedit);
gpps(sesskey, "Answerback", "PuTTY", cfg->answerback,
IDC_TPASSIVE,
IDC_TACTIVE,
IDC_TELNETKEY,
+ IDC_TELNETRET,
telnetpanelend,
rloginpanelstart,
case IDC_TACTIVE:
return "JI(`',`telnet.passive')";
case IDC_TELNETKEY:
+ case IDC_TELNETRET:
return "JI(`',`telnet.specialkeys')";
case IDC_R_TSSTATIC:
CheckDlgButton(hwnd, IDC_COMPOSEKEY, cfg.compose_key);
CheckDlgButton(hwnd, IDC_CTRLALTKEYS, cfg.ctrlaltkeys);
CheckDlgButton(hwnd, IDC_TELNETKEY, cfg.telnet_keyboard);
+ CheckDlgButton(hwnd, IDC_TELNETRET, cfg.telnet_newline);
CheckRadioButton(hwnd, IDC_ECHOBACKEND, IDC_ECHONO,
cfg.localecho == LD_BACKEND ? IDC_ECHOBACKEND :
cfg.localecho == LD_YES ? IDC_ECHOYES : IDC_ECHONO);
beginbox(&cp, "Adjust telnet session.", IDC_BOX_CONNECTION1);
checkbox(&cp, "Keyboard sends telnet Backspace and Interrupt",
IDC_TELNETKEY);
+ checkbox(&cp, "Return key sends telnet New Line instead of ^M",
+ IDC_TELNETRET);
endbox(&cp);
}
beginbox(&cp, "Sending of null packets to keep session active",
IDC_TACTIVE, NULL);
checkbox(&cp, "&Keyboard sends telnet Backspace and Interrupt",
IDC_TELNETKEY);
+ checkbox(&cp, "Return key sends telnet New Line instead of ^M",
+ IDC_TELNETRET);
endbox(&cp);
}
}
cfg.telnet_keyboard =
IsDlgButtonChecked(hwnd, IDC_TELNETKEY);
break;
+ case IDC_TELNETRET:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.telnet_newline =
+ IsDlgButtonChecked(hwnd, IDC_TELNETRET);
+ break;
case IDC_WRAPMODE:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED)