From: Yusuke S. <abi...@hk...> - 2004-12-31 02:53:15
|
初めまして。坂井と申します。 Gentoo Linux 上でコンパイルした mlterm-2.9.0 で、 Mod+BackSpace を押し たときに M-DEL が出力されるように設定しようと思い、~/.mlterm/key に Mod+BackSpace="\xff" と書いておいたのですが、この設定が反映されません。これ以外の設定、例え ば、 Mod+Tab="\x89" Mod+Return="\x8d" などは問題なく反映されています。 他にもいくつか設定して試してみたところ、 Mod+Delete なども反映されませ ん。僕が確認した限りでは、以下の 6 つの場合に設定が反映されませんでし た。 Mod+BackSpace="\xff" Shift+BackSpace="\xff" Control+BackSpace="\xff" Mod+Delete="\xff" Shift+Delete="\xff" Control+Delete="\xff" 具体的には、 Mod+BackSpace 、 Shift+BackSpace 、 Control+BackSpace の 3 つは、BackSpace だけを押したときに出力される文字列を出力し、 Mod+Delete 、Shift+Delete 、 Control+Delete の 3 つは、 Delete だけを 押したときに出力されるはずの文字列を出力しました。 実際に出力された文字列は、 /etc/mlterm/termcap が、以下のような内容な ので、 BackSpace の場合は ^? で、 Delete のときは ^[[3~ でした。 mlterm:\ kD=\E[3~:kb=^? xterm|rxvt:\ kD=^?:kb=^H:ut *:\ kD=^?:kb=^H key ファイルの設定と termcap の設定が衝突しているのではないかと思い、 少しコードを変更してコンパイルしてみたところ、僕の環境では上手く動きま した。その場凌ぎといった感じのするものですが、以下がそのパッチです。 Index: x_screen.c =================================================================== RCS file: /cvsroot/mlterm/mlterm/xwindow/x_screen.c,v retrieving revision 1.122 diff -u -r1.122 x_screen.c --- x_screen.c 6 Dec 2004 04:19:19 -0000 1.122 +++ x_screen.c 30 Dec 2004 09:50:33 -0000 @@ -2064,7 +2064,7 @@ } } - if( ( ksym == XK_Delete && size == 1) || ksym == XK_KP_Delete) + if( ( ksym == XK_Delete && size == 1 && !event->state) || ( ksym == XK_KP_Delete && !event->state)) { buf = x_termcap_get_str_field( screen->termcap , ML_DELETE) ; } @@ -2073,7 +2073,7 @@ * In some environment, if backspace(1) -> 0-9 or space(2) pressed continuously, * ksym in (2) as well as (1) is XK_BackSpace. */ - else if( ksym == XK_BackSpace && size == 1 && seq[0] == 0x8) + else if( ksym == XK_BackSpace && size == 1 && seq[0] == 0x8 && !event->state) { buf = x_termcap_get_str_field( screen->termcap , ML_BACKSPACE) ; } -- Yusuke Sakai <abi...@hk...> |