#include <windows.h>
#include <imm.h>
#include <commctrl.h>
+#include <mmsystem.h>
#ifndef AUTO_WINSOCK
#ifdef WINSOCK_TWO
#include <winsock2.h>
#define IDM_SAVEDSESS 0x0150
#define IDM_COPYALL 0x0160
+#define IDM_SESSLGP 0x0250 /* log type printable */
+#define IDM_SESSLGA 0x0260 /* log type all chars */
+#define IDM_SESSLGE 0x0270 /* log end */
#define IDM_SAVED_MIN 0x1000
#define IDM_SAVED_MAX 0x2000
error = back->init (cfg.host, cfg.port, &realhost);
if (error) {
- sprintf(msg, "Unable to open connection:\n%s", error);
+ sprintf(msg, "Unable to open connection to\n"
+ "%.800s\n"
+ "%s", cfg.host, error);
MessageBox(NULL, msg, "PuTTY Error", MB_ICONERROR | MB_OK);
return 0;
}
* have one.)
*/
void sys_cursor(int x, int y) {
- SetCaretPos(x * font_width, y * font_height);
+ if (has_focus)
+ SetCaretPos(x * font_width, y * font_height);
}
/*
/* Reorder edit keys to physical order */
if (cfg.funky_type == 3 && code <= 6 ) code = "\0\2\1\4\5\3\6"[code];
+ if (vt52_mode && code > 0 && code <= 6) {
+ p += sprintf((char *)p, "\x1B%c", " HLMEIG"[code]);
+ return p - output;
+ }
+
+ if (cfg.funky_type == 5 && code >= 11 && code <= 24) {
+ p += sprintf((char *)p, "\x1B[%c", code + 'M' - 11);
+ return p - output;
+ }
+ if ((vt52_mode || cfg.funky_type == 4) && code >= 11 && code <= 24) {
+ int offt = 0;
+ if (code>15) offt++; if (code>21) offt++;
+ if (vt52_mode)
+ p += sprintf((char *)p, "\x1B%c", code + 'P' - 11 - offt);
+ else
+ p += sprintf((char *)p, "\x1BO%c", code + 'P' - 11 - offt);
+ return p - output;
+ }
if (cfg.funky_type == 1 && code >= 11 && code <= 15) {
p += sprintf((char *)p, "\x1B[[%c", code + 'A' - 11);
return p - output;
*/
void beep(int mode) {
if (mode == BELL_DEFAULT) {
+ /*
+ * For MessageBeep style bells, we want to be careful of
+ * timing, because they don't have the nice property of
+ * PlaySound bells that each one cancels the previous
+ * active one. So we limit the rate to one per 50ms or so.
+ */
+ static long lastbeep = 0;
+ long now, beepdiff;
+
+ now = GetTickCount();
+ beepdiff = now - lastbeep;
+ if (beepdiff >= 0 && beepdiff < 50)
+ return;
MessageBeep(MB_OK);
+ lastbeep = now;
} else if (mode == BELL_WAVEFILE) {
if (!PlaySound(cfg.bell_wavefile, NULL, SND_ASYNC | SND_FILENAME)) {
char buf[sizeof(cfg.bell_wavefile)+80];