version 1.117, 2020/01/12 20:20:20 |
version 1.118, 2020/01/12 21:07:07 |
|
|
tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, |
tty_keys_device_attributes(struct tty *tty, const char *buf, size_t len, |
size_t *size) |
size_t *size) |
{ |
{ |
struct client *c = tty->client; |
struct client *c = tty->client; |
u_int i, n = 0; |
u_int i, n = 0; |
char tmp[64], *endptr, p[32] = { 0 }, *cp, *next; |
char tmp[64], *endptr, p[32] = { 0 }, *cp, *next; |
static const char *types[] = TTY_TYPES; |
int flags = 0; |
int type; |
|
|
|
*size = 0; |
*size = 0; |
|
|
|
|
n++; |
n++; |
} |
} |
|
|
/* Store terminal type. */ |
/* Set terminal flags. */ |
type = TTY_UNKNOWN; |
|
switch (p[0]) { |
switch (p[0]) { |
case 1: |
case 64: /* VT420 */ |
if (p[1] == 2) |
flags |= (TERM_DECFRA|TERM_DECSLRM); |
type = TTY_VT100; |
|
else if (p[1] == 0) |
|
type = TTY_VT101; |
|
break; |
break; |
case 6: |
|
type = TTY_VT102; |
|
break; |
|
case 62: |
|
type = TTY_VT220; |
|
break; |
|
case 63: |
|
type = TTY_VT320; |
|
break; |
|
case 64: |
|
type = TTY_VT420; |
|
break; |
|
case 65: |
|
type = TTY_VT520; |
|
break; |
|
} |
} |
for (i = 1; i < n; i++) |
for (i = 1; i < n; i++) |
log_debug("%s: DA feature: %d", c->name, p[i]); |
log_debug("%s: DA feature: %d", c->name, p[i]); |
tty_set_type(tty, type); |
log_debug("%s: received DA %.*s", c->name, (int)*size, buf); |
|
tty_set_flags(tty, flags); |
log_debug("%s: received DA %.*s (%s)", c->name, (int)*size, buf, |
|
types[type]); |
|
return (0); |
return (0); |
} |
} |