📄 config.c
字号:
WIN *w; int x, y; int max = m_getmaxspd(); w = wopen(21, 3, 60, 20, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1); wtitle(w, TMID, _("Comm Parameters")); dirflush = 0; wlocate(w, 0, 3); wputs(w, _(" Speed Parity Data\n\n")); wputs(w, _(" A: 300 L: None S: 5\n")); wputs(w, _(" B: 1200 M: Even T: 6\n")); wputs(w, _(" C: 2400 N: Odd U: 7\n")); wputs(w, _(" D: 4800 O: Mark V: 8\n")); wputs(w, _(" E: 9600 P: Space\n")); if (max > 96) wputs(w, _(" F: 19200 Stopbits\n")); else wputs(w, " Stopbits\n"); if (max > 192) wputs(w, _(" G: 38400 W: 1\n")); else wputs(w, _(" W: 1\n")); if (max > 384) wputs(w, _(" H: 57600 X: 2\n")); else wputs(w, " X: 2\n"); if (max > 576) wputs(w, _(" I: 115200 Q: 8-N-1\n")); else wputs(w, _(" Q: 8-N-1\n")); if (max > 1152) wputs(w, _(" J: 230400 R: 7-E-1\n")); else wputs(w, _(" R: 7-E-1\n")); if (curr_ok) wputs(w, _(" K: Current\n")); else wputs(w, "\n"); wputs(w, _("\n Choice, or <Enter> to exit? ")); x = w->curx; y = w->cury; wredraw(w, 1); while (1) { wlocate(w, 1, 1); wprintf(w, _("Current: %5s %s%s%s "), ba, bi, pa, stopb); wlocate(w, x, y); wflush(); c = wxgetch(); switch(c) { case 27: case '\n': case '\r': dirflush = 1; wclose(w, 1); return; default: update_bbp_from_char(c, ba, bi, pa, stopb, curr_ok, max); break; } }}/* Update the baud rate variables using the given character as the menu * option selected. */int update_bbp_from_char(char c, char *ba, char *bi, char *pa, char *stopb, int curr_ok, int max_speed){ int characterRecognised = 1; bi[1] = 0; pa[1] = 0; if (c >= 'a') c -= 32; switch(c) { case 'J': if (max_speed < 2304) break; case 'I': if (max_speed < 1152) break; case 'H': if (max_speed < 576) break; case 'G': if (max_speed < 384) break; case 'F': if (max_speed < 192) break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'K': if (c == 'K' && !curr_ok) break; strcpy(ba, speeds[c - 'A']); break; case 'L': pa[0] = 'N'; break; case 'M': pa[0] = 'E'; break; case 'N': pa[0] = 'O'; break; case 'O': pa[0] = 'M'; break; case 'P': pa[0] = 'S'; break; case 'Q': pa[0] = 'N'; bi[0] = '8'; stopb[0] = '1'; break; case 'R': pa[0] = 'E'; bi[0] = '7'; stopb[0] = '1'; break; case 'S': bi[0] = '5'; break; case 'T': bi[0] = '6'; break; case 'U': bi[0] = '7'; break; case 'V': bi[0] = '8'; break; case 'W': stopb[0] = '1'; break; case 'X': stopb[0] = '2'; break; default: characterRecognised = 0; break; } return characterRecognised;}/* * fmg - part of the Macros menu, "[none]" beats (null) :-) */static void out_mac(WIN *w, char *s, char n){ wprintf(w, " %c : %.67s\n", n, s ? s : "[none]");}/* * fmg - Macros editing window */void domacros(void){ WIN *w; int clr = 1; int Jch = '1', Jm = 0; /* fmg - ok, so I was lazy.. */ char* question = _("Change which setting? (Esc to exit)"); w = wopen(3, 6, 75, 24, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1); wtitle(w, TMID, _("F1 to F10 Macros")); wprintf(w, "\n"); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); Jch = 'A'; /* fmg - ran out of single digits... */ out_mac(w,mmacs[Jm++].value, Jch++); wredraw(w, 1); while(1) { wlocate(w, 1, 14); wputs(w, _(" (LEGEND: ^M = C-M, ^L = C-L, ^G = C-G, ^R = C-R, ^~ = pause 1 second,")); wlocate(w, 1, 15); wputs(w, _(" \\u = username, \\p = password, \\\\ = \\, \\e = toggle echo, ")); wlocate(w, 1, 16); wputs(w, _(" \\l = toggle LF, \\bX1..Xn<sp> = change baud rate. Example: \"\\bfq \"")); wlocate(w, 1, 17); wputs(w, _(" = 19200 8N1. (See the \"Comm Parameters\" menu for valid values of X.))")); if (clr) { wlocate(w, 1, 12); wprintf(w, "%s ", question); wclreol(w); clr = 0; } else wlocate(w, mbslen (question) + 2, 12); switch (rwxgetch()) { case '\n': wclose(w, 1); return; case '1': mgets(w, 5, 1, P_MAC1, 72, MAC_LEN); strcpy(P_MACCHG,_("CHANGED")); /* fmg - ...I'm ashamed */ wlocate(w, 0, 1); out_mac(w,P_MAC1, '1'); break; case '2': mgets(w, 5, 2, P_MAC2, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... really, I am */ wlocate(w, 0, 2); out_mac(w,P_MAC2, '2'); break; case '3': mgets(w, 5, 3, P_MAC3, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... this is the */ wlocate(w, 0, 3); out_mac(w,P_MAC3, '3'); break; case '4': mgets(w, 5, 4, P_MAC4, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... first entry on */ wlocate(w, 0, 4); out_mac(w,P_MAC4, '4'); break; case '5': mgets(w, 5, 5, P_MAC5, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... my TODO list. */ wlocate(w, 0, 5); out_mac(w,P_MAC5, '5'); break; case '6': mgets(w, 5, 6, P_MAC6, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... and, come to think */ wlocate(w, 0, 6); out_mac(w,P_MAC6, '6'); break; case '7': mgets(w, 5, 7, P_MAC7, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... of it, I no longer */ wlocate(w, 0, 7); out_mac(w,P_MAC7, '7'); break; case '8': mgets(w, 5, 8, P_MAC8, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... even use this... */ wlocate(w, 0, 8); out_mac(w,P_MAC8, '8'); break; case '9': mgets(w, 5, 9, P_MAC9, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */ wlocate(w, 0, 9); out_mac(w,P_MAC9, '9'); break; case 'A': mgets(w, 5, 10, P_MAC10, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */ wlocate(w, 0, 10); out_mac(w,P_MAC10, 'A'); break; } }}/* is this *REALLY* a printable or non-printable character? * the isprint() function seems to consider all chars > 127d non-printable.. * jl 10.03.1998 */int prch(int c){ if (c < 32 || c == 127 || c == 155) return (' '); else return (c);}/* Edit the character conversion tables. jl 04.09.97 */void doconv(void){ WIN *w; int i, j, k, l, h, offs = 32, ymax = 22, redraw = 1; char buf[64]; char *prompt; h = 16; w = wopen (1, 1, 77, ymax, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1); wtitle(w, TMID, _("Character conversion")); while (1) { if (redraw) { winclr(w); wprintf(w, _(" char in out char in out char in out char in out\n")); for (i = offs, j = i+h, k = j+h, l = k+h; i < offs+h && i < 256; i++, j++, k++, l++) { wprintf(w, "%3d (%c) %3d %3d ", i, prch(i), (int) vt_inmap[i], (int) vt_outmap[i]); if (j < 256) wprintf(w, "%3d (%c) %3d %3d ", j, prch(j), (int) vt_inmap[j], (int) vt_outmap[j]); else wprintf(w, " "); if (k < 256) wprintf(w, "%3d (%c) %3d %3d ", k, prch(k), (int) vt_inmap[k], (int) vt_outmap[k]); else wprintf(w, " "); if (l < 256) wprintf(w, "%3d (%c) %3d %3d\n", l, prch(l), (int) vt_inmap[l], (int) vt_outmap[l]); else wprintf(w, " \n"); } wprintf(w, _("\n A - load table\tB - save table")); if (P_CONVF[0]) wprintf(w, _("\tfile:%s"),P_CONVF); wprintf(w, _("\n C - edit char\tD - next screen\tE - prev screen\n")); wprintf(w, _(" F - convert capture: %s\n"), _(P_CONVCAP)); wredraw(w, 1); redraw = 0; } wlocate(w, 1, ymax - 1); wclreol(w); wflush(); switch (toupper(rwxgetch())) { case '\n': wclose(w, 1); return; break; case 'A': strcpy(buf,P_CONVF); prompt=_("Load file: %s"); wprintf(w, prompt, buf); pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64); if (loadconv(P_CONVF) == 0) { if (strcmp(P_CONVF,buf)) markch(P_CONVF); redraw = 1; } else strcpy(P_CONVF,buf); break; case 'B': strcpy(buf,P_CONVF); prompt=_("Save as file: %s"); wprintf(w, prompt, buf); pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64); if (saveconv(P_CONVF) == 0) { if (strcmp(P_CONVF,buf)) markch(P_CONVF); redraw = 1; } else strcpy(P_CONVF,buf); break; case 'C': prompt = _("Character to be edited: "); wprintf(w, prompt); buf[0] = 0; i = -1; wlocate(w, mbslen(prompt), ymax - 1); wgets(w, buf, 4, 4); sscanf(buf, "%d", &i); if (i > 255 || i < 0) { werror(_("Input character ascii value 0-255")); break; } sprintf(buf, "%u",(unsigned int) vt_inmap[i]); wlocate(w, 30, ymax - 1); prompt=_("Change input to: %s"); wprintf(w, prompt,buf); wlocate(w, mbslen(prompt) + 28, ymax - 1); wgets(w, buf, 4, 4); sscanf(buf, "%d", &j); if (j > 255 || j < 0) { werror(_("Input character ascii value 0-255")); break; } else vt_inmap[i] = j; sprintf(buf, "%u",(unsigned int) vt_outmap[i]); wlocate(w, 54, ymax - 1); prompt = _("Change output to: %s"); wprintf(w, prompt, buf); wlocate(w, mbslen(prompt) + 52, ymax - 1); wgets(w, buf, 4, 4); sscanf(buf, "%d", &j); if (j > 255 || j < 0) { werror(_("Input character ascii value 0-255")); break; } else vt_outmap[i] = j; redraw = 1; break; case 'D': offs += 4 * h; if (offs > 255) offs = 0; redraw = 1; break; case 'E': offs -= 4 * h; if (offs < 0) offs = 0; redraw = 1; break; case 'F': strcpy(P_CONVCAP, yesno(P_CONVCAP[0] == 'N')); markch(P_CONVCAP); redraw = 1; break; } }}int loadconv(char *buf){ FILE *fp; if ((fp = sfopen(pfix_home(buf), "rb")) == (FILE *)NULL) { werror(_("Cannot open conversion table %s"), pfix_home(buf)); return 1; } fread(vt_inmap, sizeof(vt_inmap), (size_t)1, fp); fread(vt_outmap, sizeof(vt_outmap), (size_t)1, fp); fclose(fp); return 0;}int saveconv(char *buf){ FILE *fp; if ((fp = sfopen(pfix_home(buf), "wb")) == (FILE *)NULL) { werror(_("Cannot write conversion table %s"), pfix_home(buf)); return 1; } fwrite(vt_inmap, sizeof(vt_inmap), (size_t)1, fp); fwrite(vt_outmap, sizeof(vt_outmap), (size_t)1, fp); fclose(fp); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -