From: Araki K. <j00...@ip...> - 2002-03-04 06:54:56
|
荒木です:-) Subject: [Mlterm-dev-ja] [PATCH] superfluous ESC before meta key From: Nobuyoshi Nakada <nob...@so...> Message-ID: <200...@sh...> Date: Sun, 03 Mar 2002 14:54:52 +0900 > INSERT_SELECTIONなどにModモディファイア付きのキーを指定している > と、余分なESCが入力されます。 そうですね。ありがとうございます。 > Meta+特殊キーでのESCは、kterm、gnome-terminalなどでは一つ、rxvt、Etermなどでは > 二つ入力されるのですが、どちらに合わせたものやら。 Mod キー押下している時点で、0x1b を入力したいと思っているわけですから、 二つ入力されたほうがよいように思います。 ので、以下のような形にしました。 では -- kiken j00...@ip... -- ml_term_screen.c l.1748 else { char * buf ; if( termscr->use_vertical_cursor) { if( termscr->vertical_mode & VERT_RTL) { if( ksym == XK_Up) { ksym = XK_Left ; } else if( ksym == XK_Down) { ksym = XK_Right ; } else if( ksym == XK_Left) { ksym = XK_Down ; } else if( ksym == XK_Right) { ksym = XK_Up ; } } else if( termscr->vertical_mode & VERT_LTR) { if( ksym == XK_Up) { ksym = XK_Left ; } else if( ksym == XK_Down) { ksym = XK_Right ; } else if( ksym == XK_Left) { ksym = XK_Up ; } else if( ksym == XK_Right) { ksym = XK_Down ; } } } if( termscr->mod_meta_mask & event->state) { if( termscr->mod_meta_mode == MOD_META_OUTPUT_ESC) { write_to_pty( termscr , "\x1b" , 1 , NULL) ; } else if( termscr->mod_meta_mode == MOD_META_SET_MSB) { if( 0x20 <= *seq && *seq <= 0x7e) { (*seq) |= 0x80 ; } } } if( ksym == XK_Delete && size == 1) { buf = ml_termcap_get_sequence( termscr->termcap , MLT_DELETE) ; } else if( ksym == XK_BackSpace && size == 1) { buf = ml_termcap_get_sequence( termscr->termcap , MLT_BACKSPACE) ; } else if( size > 0) { if( termscr->iscii_state) { size = ml_convert_ascii_to_iscii( termscr->iscii_state , seq , size , seq , size) ; } write_to_pty( termscr , seq , size , parser) ; return ; } |