diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-12-04 03:41:02 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-12-04 03:41:02 +0800 |
commit | 1264b9a7758e79ad94f46b0d47749f38a97e72ab (patch) | |
tree | 192b57f185fc73936ec209c55dbf0e17b292d47a | |
parent | ea5f148819c3986ef751dce5d83d9314f920b10c (diff) | |
download | pttbbs-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
-rw-r--r-- | mbbsd/pmore.c | 49 |
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; |