summaryrefslogtreecommitdiffstats
path: root/mbbsd
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2007-12-04 03:41:02 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2007-12-04 03:41:02 +0800
commit1264b9a7758e79ad94f46b0d47749f38a97e72ab (patch)
tree192b57f185fc73936ec209c55dbf0e17b292d47a /mbbsd
parentea5f148819c3986ef751dce5d83d9314f920b10c (diff)
downloadpttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.tar
pttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.tar.gz
pttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.tar.bz2
pttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.tar.lz
pttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.tar.xz
pttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.tar.zst
pttbbs-1264b9a7758e79ad94f46b0d47749f38a97e72ab.zip
- pmore interactive: support both BS (0x7f, ^H) and 6 function nav keys
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3626 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r--mbbsd/pmore.c49
1 files changed, 32 insertions, 17 deletions
diff --git a/mbbsd/pmore.c b/mbbsd/pmore.c
index 5a5e71fe..5b5f424a 100644
--- a/mbbsd/pmore.c
+++ b/mbbsd/pmore.c
@@ -414,6 +414,10 @@ void mf_float2tv(float f, struct timeval *ptv);
// some magic value that your igetch() will never return
#define MOVIE_KEY_ANY (0x4d464b41)
+#ifndef MOVIE_KEY_BS2
+#define MOVIE_KEY_BS2 (0x7f)
+#endif
+
#endif
// --------------------------------------------- </Optional Modules>
@@ -2621,9 +2625,13 @@ mf_moviePromptOptions(
else if (key == KEY_LEFT) outs("¡ö");
else if (key == KEY_DOWN) outs("¡õ");
else if (key == KEY_RIGHT) outs("¡÷");
+ else if (key == KEY_PGUP) { outs("PgUp"); printlen += 2; }
+ else if (key == KEY_PGDN) { outs("PgDn"); printlen += 2; }
else if (key == KEY_HOME) { outs("Home"); printlen += 2; }
else if (key == KEY_END) { outs("End"); printlen ++; }
- else if (key == '\b') outs("BS");
+ else if (key == KEY_INS) { outs("Ins"); printlen ++; }
+ else if (key == KEY_DEL) { outs("Del"); printlen ++; }
+ else if (key == '\b') { outs("¡öBS"); printlen += 2; }
// else if (key == MOVIE_KEY_ANY) // same as default
else printlen -= 2;
}
@@ -2668,22 +2676,21 @@ mf_movieNamedKey(int c)
{
switch (c)
{
- case 'u':
- return KEY_UP;
- case 'd':
- return KEY_DOWN;
- case 'l':
- return KEY_LEFT;
- case 'r':
- return KEY_RIGHT;
- case 'b':
- return '\b';
- case 'h':
- return KEY_HOME;
- case 'e':
- return KEY_END;
- case 'a':
- return MOVIE_KEY_ANY;
+ case 'u': return KEY_UP;
+ case 'd': return KEY_DOWN;
+ case 'l': return KEY_LEFT;
+ case 'r': return KEY_RIGHT;
+
+ case 'b': return '\b';
+
+ case 'H': return KEY_HOME;
+ case 'E': return KEY_END;
+ case 'I': return KEY_INS;
+ case 'D': return KEY_DEL;
+ case 'P': return KEY_PGUP;
+ case 'N': return KEY_PGDN;
+
+ case 'a': return MOVIE_KEY_ANY;
default:
break;
}
@@ -2702,6 +2709,10 @@ mf_movieMaskedInput(int c)
if (c == 'q' || c == 'Q' || c == Ctrl('C'))
return 0;
+ // treat BS and DEL as same one
+ if (c == MOVIE_KEY_BS2)
+ c = '\b';
+
// general look up
while (p < mf.end && *p && *p != '\n' && *p != '#')
{
@@ -3150,6 +3161,10 @@ mf_movieOptionHandler(unsigned char *opt, unsigned char *end)
return 0;
}
+ // treat BS and DEL as same one
+ if (c == MOVIE_KEY_BS2)
+ c = '\b';
+
// standard navigation keys.
if (mf_movieMaskedInput(c))
continue;