do_toplevel:
switch (c) {
case '\005': /* terminal type query */
- back->send ("\033[?1;2c", 7);
+ ldisc->send ("\033[?1;2c", 7);
break;
case '\007':
beep();
if (insert)
insch (1);
check_selection (cpos, cpos+1);
- *cpos++ = c | curr_attr |
+ *cpos++ = xlat_tty2scr((unsigned char)c) | curr_attr |
(c <= 0x7F ? cset_attr[cset] : ATTR_ASCII);
curs_x++;
if (curs_x == cols) {
must_update = TRUE;
break;
case 'Z': /* terminal type query */
- back->send ("\033[?6c", 5);
+ ldisc->send ("\033[?6c", 5);
break;
case 'c': /* restore power-on settings */
power_on();
must_update = TRUE;
break;
case 'c': /* terminal type query */
- back->send ("\033[?6c", 5);
+ ldisc->send ("\033[?6c", 5);
break;
case 'n': /* cursor position query */
if (esc_args[0] == 6) {
char buf[32];
sprintf (buf, "\033[%d;%dR", curs_y + 1, curs_x + 1);
- back->send (buf, strlen(buf));
+ ldisc->send (buf, strlen(buf));
}
break;
case 'h': /* toggle a mode to high */
}
break;
case 'r': /* set scroll margins */
- if (esc_nargs <= 2) {
+ if (!esc_query && esc_nargs <= 2) {
int top, bot;
top = def(esc_args[0], 1) - 1;
if (top < 0)
top = 0;
- bot = (esc_nargs == 1 ? rows :
+ bot = (esc_nargs <= 1 || esc_args[1] == 0 ? rows :
def(esc_args[1], rows)) - 1;
if (bot >= rows)
bot = rows-1;
if (i == 0 || i == 1) {
strcpy (buf, "\033[2;1;1;112;112;1;0x");
buf[2] += i;
- back->send (buf, 20);
+ ldisc->send (buf, 20);
}
}
break;
!(p <= data+len-sizeof(sel_nl) &&
!memcmp(p, sel_nl, sizeof(sel_nl))))
p++;
- back->send (q, p-q);
+
+ {
+ int i;
+ unsigned char c;
+ for(i=0;i<p-q;i++)
+ {
+ c=xlat_kbd2tty(q[i]);
+ ldisc->send(&c,1);
+ }
+ }
+
if (p <= data+len-sizeof(sel_nl) &&
!memcmp(p, sel_nl, sizeof(sel_nl))) {
- back->send ("\r", 1);
+ ldisc->send ("\r", 1);
p += sizeof(sel_nl);
}
q = p;