From: Araki K. <j00...@ip...> - 2002-01-11 14:55:00
|
荒木です:-) Subject: Re: [Mlterm-dev-ja] image escape sqeuence From: MINAMI Hirokazu <mi...@ch...> Message-ID: <200...@ch...> Date: Fri, 11 Jan 2002 23:38:07 +0900 > 標準入力から普通に読み込み... だと思っていたのですが > > perl -e "printf qq/\e[c/;read STDIN,\$res,8;print qq/\$res/;" > > とかしてみても(当然)ブロックされて(LF を手で一つたたいて追加するまでは) > よみこまれないですよね。 > > 端末をrawで制御するのも面倒そうなので 返りの書式を > # <key> = <value> LF > にするというのはどうでしょう? > > 適当に扱いやすくて、かつシェルは無視してくれていいような気がしてます。 そうですね。その方がいい気がします。 わたしも、さきほど perl でスクリプト書いてみたのですが、raw で制御するの はやってられん、と思いました。 一応、raw で制御する場合の perl スクリプトを添付してみます。 では -- kiken j00...@ip... #!/usr/local/bin/perl sub __mlconf_get_value($) { my $key = shift ; my $value = "" ; printf "\x1b]5380;${key}\x07" ; my $ret ; read STDIN , $ret , 7 ; if( $ret ne "\x1b]5381;") { warn "prefix of return value is illegal.\n" ; return $value ; } read STDIN , $ret , length($key) + 1 ; if( $ret ne "${key}=") { warn "key of return value is illegal.\n" ; return $value ; } while(1) { read STDIN , $ret , 1 ; if( $ret eq "\x07") { return $value ; } else { $value = "${value}${ret}" ; } } } sub mlconf_get_value($) { my $value ; system( "stty raw") ; $value = __mlconf_get_value(shift) ; system( "stty -raw") ; return $value ; } printf "xim=%s\n" , mlconf_get_value( "xim") ; printf "xim=%s\n" , mlconf_get_value( "fg_color") ; |