aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjames <>2008-03-06 01:41:48 +0000
committerjames <>2008-03-06 01:41:48 +0000
commita6cbab6f2cfca626dc72ac7ae454bc09fd537d08 (patch)
tree4ff3f46bda883ab71a3f92dfd91f5280411f8768
parente6e366454ec19f2af39bb1532e5bea3dbca77fbe (diff)
downloadsympathy-a6cbab6f2cfca626dc72ac7ae454bc09fd537d08.tar.gz
sympathy-a6cbab6f2cfca626dc72ac7ae454bc09fd537d08.tar.bz2
sympathy-a6cbab6f2cfca626dc72ac7ae454bc09fd537d08.zip
*** empty log message ***
-rw-r--r--src/ansi.c34
-rw-r--r--src/keys.h42
-rw-r--r--src/rotate.c6
-rw-r--r--src/vt102.c31
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;
}