summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-09-29 11:35:53 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-09-29 11:35:53 +0800
commitdf49b12193e74f5e2316b10ed06a1121de1ea465 (patch)
treea5aad6ac057e32b96a9efffadcf88812c6ced4b1
parent7cae17f7a8dfa1731b2252738aafe0e90cfaf97d (diff)
downloadpttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.tar
pttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.tar.gz
pttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.tar.bz2
pttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.tar.lz
pttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.tar.xz
pttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.tar.zst
pttbbs-df49b12193e74f5e2316b10ed06a1121de1ea465.zip
* vtkbd: add support of rxvt style HOME/END
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4892 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--common/sys/vtkbd.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/common/sys/vtkbd.c b/common/sys/vtkbd.c
index c6b0a3f5..58b78419 100644
--- a/common/sys/vtkbd.c
+++ b/common/sys/vtkbd.c
@@ -35,6 +35,7 @@
* http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
* http://invisible-island.net/xterm/xterm.faq.html
* http://www.vim.org/htmldoc/term.html
+ * http://wiki.archlinux.org/index.php/Why_don%27t_my_Home_and_End_keys_work_in_terminals%3F
* http://yz.kiev.ua/www/etc/putty/Section3.5.html
* PuTTY Source < terminal.c, term_key() >
* Termcap
@@ -80,6 +81,7 @@
* - (SCO) End/PgDn/Home/PgUp/Ins <Esc> [ <FGHIL>
* - (SCO) Del <0x7F>
* - (Xterm) HOME/END <Esc> <[O> <HF>
+ - (rxvt) HOME/END <Esc> [ <78> ~
* - (putty-rxvt) HOME <Esc> [ H
* - (putty-rxvt) END <Esc> O w
* - (Old Term?) Home/Ins/Del/End/PgUp/PgDn: <Esc> [ <214536> ~ // not supported
@@ -260,6 +262,15 @@ vtkbd_process(int c, VtkbdCtx *ctx)
ctx->esc_arg = KEY_DEL + (c - '3');
return KEY_INCOMPLETE;
+ case '7':
+ ctx->state = VKSTATE_TLIDE;
+ ctx->esc_arg = KEY_HOME;
+ return KEY_INCOMPLETE;
+ case '8':
+ ctx->state = VKSTATE_TLIDE;
+ ctx->esc_arg = KEY_END;
+ return KEY_INCOMPLETE;
+
case 'Z':
ctx->state = VKSTATE_NORMAL;
return KEY_STAB;