From a6cbab6f2cfca626dc72ac7ae454bc09fd537d08 Mon Sep 17 00:00:00 2001 From: james <> Date: Thu, 6 Mar 2008 01:41:48 +0000 Subject: *** empty log message *** --- src/ansi.c | 34 +++++++++++++++++++--------------- src/keys.h | 42 +++++++++++++++++++++++++++++++++++------- src/rotate.c | 6 ++++-- src/vt102.c | 31 +++++++++++++++++++++++++++++-- 4 files changed, 87 insertions(+), 26 deletions(-) diff --git a/src/ansi.c b/src/ansi.c index 4671dc4..bcdc63e 100644 --- a/src/ansi.c +++ b/src/ansi.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.43 2008/03/06 01:41:48 james + * *** empty log message *** + * * Revision 1.42 2008/03/03 06:04:42 james * *** empty log message *** * @@ -828,22 +831,26 @@ static void ansi_parse_ansikey (ANSI * a, Context * c) { ANSI_Parser *p = &a->parser; + int l = p->escape_ptr - 1; + char *end; + int k; - if ((p->escape_buf[1] != '[') || (p->escape_buf[3] != '~')) + if ((p->escape_buf[1] != '[') || (p->escape_buf[l] != '~')) { ansi_flush_escape (a, c); return; } - if ((p->escape_buf[2] >= '0') || (p->escape_buf[2] <= '9')) - { - ansi_key (a, c, KEY_180 + (p->escape_buf[2] - '0')); - } - else + + k = strtol (&p->escape_buf[2], &end, 10); + + if (end != &p->escape_buf[l]) { ansi_flush_escape (a, c); return; } + ansi_key (a, c, KEY_180 + k); + p->in_escape = 0; p->escape_ptr = 0; } @@ -884,16 +891,13 @@ ansi_parse_escape (ANSI * a, Context * c) } break; case 4: - switch (p->escape_buf[1]) - { - case '[': - ansi_parse_ansikey (a, c); - break; - default: - ansi_flush_escape (a, c); - } - break; case 5: + case 6: + case 7: + if (p->escape_buf[p->escape_ptr - 1] == '~') + ansi_parse_ansikey (a, c); + break; + default: ansi_flush_escape (a, c); } } diff --git a/src/keys.h b/src/keys.h index 1e6c062..cfd2597 100644 --- a/src/keys.h +++ b/src/keys.h @@ -12,6 +12,9 @@ /* * $Log$ + * Revision 1.5 2008/03/06 01:41:48 james + * *** empty log message *** + * * Revision 1.4 2008/02/07 00:44:07 james * *** empty log message *** * @@ -35,10 +38,10 @@ #define KEY_ENTER 140 /*M*/ #define KEY_141 141 /*N*/ #define KEY_142 142 /*O*/ -#define KEY_PF1 143 /*P*/ -#define KEY_PF2 144 /*Q*/ -#define KEY_PF3 145 /*R*/ -#define KEY_PF4 146 /*S*/ +#define KEY_PF1 143 /*P*/ /*Also F1 */ +#define KEY_PF2 144 /*Q*/ /*Also F2 */ +#define KEY_PF3 145 /*R*/ /*Also F3 */ +#define KEY_PF4 146 /*S*/ /*Also F4 */ #define KEY_147 147 /*T*/ #define KEY_148 148 /*U*/ #define KEY_149 149 /*V*/ @@ -73,14 +76,39 @@ #define KEY_9 178 /*y */ #define KEY_179 179 /*z */ #define KEY_180 180 /*0 */ -#define KEY_181 181 /*1 */ +#define KEY_VT220_HOME 181 /*1 */ #define KEY_INSERT 182 /*2 */ #define KEY_DELETE 183 /*3 */ -#define KEY_184 184 /*4 */ +#define KEY_VT220_END 184 /*4 */ #define KEY_PGUP 185 /*5 */ #define KEY_PGDN 186 /*6 */ #define KEY_187 187 /*7 */ #define KEY_188 188 /*8 */ #define KEY_189 189 /*9 */ -#define KEY_NUM 190 +#define KEY_190 190 /*10 */ +#define KEY_F1 191 /*11 */ +#define KEY_F2 192 /*12 */ +#define KEY_F3 193 /*13 */ +#define KEY_F4 194 /*14 */ +#define KEY_F5 195 /*15 */ +#define KEY_196 196 /*16 */ +#define KEY_F6 197 /*17 */ +#define KEY_F7 198 /*18 */ +#define KEY_F8 199 /*19 */ +#define KEY_F9 200 /*20 */ +#define KEY_F10 201 /*21 */ +#define KEY_202 202 /*22 */ +#define KEY_F11 203 /*23 */ +#define KEY_F12 204 /*24 */ +#define KEY_F13 205 /*25 */ +#define KEY_F14 206 /*26 */ +#define KEY_207 207 /*27 */ +#define KEY_F15 208 /*28 */ +#define KEY_F16 209 /*29 */ +#define KEY_210 210 /*30 */ +#define KEY_F17 211 /*31 */ +#define KEY_F18 212 /*32 */ +#define KEY_F19 213 /*33 */ +#define KEY_F20 214 /*34 */ +#define KEY_NUM 215 #endif /* __KEYS_H__ */ diff --git a/src/rotate.c b/src/rotate.c index 8beee7c..b40ae1a 100644 --- a/src/rotate.c +++ b/src/rotate.c @@ -6,11 +6,13 @@ * */ -static char rcsid[] = - "$Id$"; +static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.8 2008/03/06 01:41:48 james + * *** empty log message *** + * * Revision 1.7 2008/03/03 18:16:16 james * *** empty log message *** * diff --git a/src/vt102.c b/src/vt102.c index 843295e..1b875da 100644 --- a/src/vt102.c +++ b/src/vt102.c @@ -10,6 +10,9 @@ static char rcsid[] = "$Id$"; /* * $Log$ + * Revision 1.58 2008/03/06 01:41:48 james + * *** empty log message *** + * * Revision 1.57 2008/03/03 06:20:14 james * *** empty log message *** * @@ -2042,13 +2045,37 @@ vt102_send (Context * c, uint8_t key) c->t->xmit (c->t, &buf, sizeof (buf)); } break; + case KEY_VT220_HOME: case KEY_INSERT: case KEY_DELETE: + case KEY_VT220_END: case KEY_PGUP: case KEY_PGDN: + case KEY_F1: + case KEY_F2: + case KEY_F3: + case KEY_F4: + case KEY_F5: + case KEY_F6: + case KEY_F7: + case KEY_F8: + case KEY_F9: + case KEY_F10: + case KEY_F11: + case KEY_F12: + case KEY_F13: + case KEY_F14: + case KEY_F15: + case KEY_F16: + case KEY_F17: + case KEY_F18: + case KEY_F19: + case KEY_F20: { - uint8_t buf[] = { 033, '[', '0' + (key - KEY_180), '~' }; - c->t->xmit (c->t, &buf, sizeof (buf)); + uint8_t buf[16]; + int i; + i = sprintf (buf, "\033[%d~", (key - KEY_180)); + c->t->xmit (c->t, &buf, i); } break; } -- cgit v1.2.3