今日は、一歩前進。~/.Xdefaults を切ったら、xterm の default
でも、表示できるようになりました。ただ、default ではフォント
が小さすぎだし、Large では大きすぎです。
In article <3992290...@rananim.ie.u-ryukyu.ac.jp>
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> > env LANG=ja_JP.eucJP xterm -fn 8x16 -fw kanji16 &
> なんだっけか。LANGではだめだと思う。
LANG は、C では表示できないので、LANG が必要なのはその通りで
す。で、今の問題は、
xterm の EUC で k14 (7x7の漢字フォント) が使いたい
というものに変りました。EUC ではなくて、JIS/Shift_JIS でも
いいんだけど。
で、xterm の default が何を使っているか、Large で何を使って
いるのか、k14 と何が違うのかが比較できれば解決出きると思います。
> > 前に X サーバの方を gdb で、OpenFont か何かを追っ掛けていた
> > ら、フォントのタイプごとに動的リンク・ライブラリを呼び出され
> > て参りました。動的リンク・ライブラリ出されると解析しにくいん
> > ですよね。
> 一旦、linkされた後のルーチンに引っかければOkです。
いえいえ。X サーバの場合、独自にやっているので、libc のよう
にはいきません。オブジェクト指向で、フォントのタイプに合わせ
てクラスをロードするのはいいけど、そのロードしたクラスをgdb
でデバッグできないという話です。
うちの若いものが、X じゃないのですが、その手の拡張モジュール
を入れるのに、動的リンクをかっこいいと思ったみたいで、デバッ
グも済んでないモジュールを動的リンクにして、開発効率落として
いるんだよね。3回くらいもやめろと言っても聞かないし。4回目
にはやっと通じたんだけど。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
おかげさまで、xterm で k14 が使えるようになりました。コツと
しては、
Unicode でエンコーディングされた k14 を使う、たとえ
LANG=ja_JP.eucJP でも。
ということでした。xterm 本体は、UTF-8 対応で、
LANG=ja_JP.eucJP の時には、luit という別プログラムで変換して
います。
xterm を使ってみると、1つ問題がでてきました。それは、
Control-O やControl-V が通らないことです。Control-V は、エス
ケープに食われていて、Control-V Control-V と2回打つと
Control-V 1回になります。Control-O は、Control-V Control-O
です。
Control-O なんてどこで使うんだという話はありますが、Emacs で
多用していることがわかりました。
それで、xterm で、Control-O や Control-V を普通に通すには、
どうすればいいでしょうか。
こちらの環境は、MacOSX Tiger 10.4.2, xterm -version XFree86
4.3.99.903(184) です。ネットニュースですので、当らずとも遠か
らずの情報も歓迎されます。
Control-O や Control-V 以外にもうまく通らないコードがあるか
もしれせんね。今日は気が付かなかったけれど。
あとキーのリピートが始まるタイミングが遅い気がするけど、気の
せいかもしれません。人間技で計れないし。
> xterm を使ってみると、1つ問題がでてきました。それは、
> Control-O やControl-V が通らないことです。Control-V は、エス
> ケープに食われていて、Control-V Control-V と2回打つと
> Control-V 1回になります。Control-O は、Control-V Control-O
> です。
それってsttyがrawモードになってないような。Emacs動かしてもそう
なってるってことはEmacsがrawに切替えてくれてないわけかな。
役に立たない記事ですいません。 久野
In article <0508241130...@utogw.gssm.otsuka.tsukuba.ac.jp>
ku...@gssm.otsuka.tsukuba.ac.jp writes:
> > xterm を使ってみると、1つ問題がでてきました。それは、
> > Control-O やControl-V が通らないことです。Control-V は、エス
> それってsttyがrawモードになってないような。Emacs動かしてもそう
> なってるってことはEmacsがrawに切替えてくれてないわけかな。
次のように打ってみましたが、結果は同じで、Control-O や
Control-V が通りませんでした。
stty raw; emacs -nw
この stty raw; ですが、結構怖くて、stty raw; cat とでもする
と、Control-C も効かなくなって、端末から止められなくなります。
試す時には、端末2枚で試してください。
端末2枚というと、ssh でログインして使う時には、だいたい端末
2枚なので、
kterm &
で、Control-O/V 問題は、解決しているとも言えます。ただ、
kterm だと、コピー&ペーストが今一つ。あ、でも、xterm と
kterm の間だと、漢字もコピー&ペーストできますね。つまり、
・コピー&ペースト用に xterm を1枚だけ開いておく
ということでも、用はだいたい足りているとも言えます。といいつ
つ、普通の人(大学の新入生含む)には薦められない話ではあります。
xterm を何とかするのが筋でしょう。
> 次のように打ってみましたが、結果は同じで、Control-O や
> Control-V が通りませんでした。
あとsttyで^Oや^Vに割り当てられているものを「なくす」って
いうのが思い浮かびますがどうですかね?
なくするにはどうするんだっけな… 久野
MacOSXは知らないので多少キーワードが違うかもしれませんが、
stty lnext '' flush ''
でいいのでは。
--
tksotn
fjに記事を書いているうちに、解決策が見つかりました。ありがと
うございます。
結論としては、xterm の問題というよりは、例の luit の問題で、
luit を起動した段階で stty してももう遅くて、xterm が luit
を起動する前に stty する必要があるということでした。xterm も
疑似端末(pseudo tty)を使うし、さらに luit も疑似端末を使いま
す。luit が起動した後に stty しても、luit 側は変りますが、
xterm 側は変らないということでした。疑似端末2個というのは気
が付きませんでした。
In article <uacj7m...@anet.ne.jp>
OOTANI TAKASHI <tks...@anet.ne.jp> writes:
> MacOSXは知らないので多少キーワードが違うかもしれませんが、
> stty lnext '' flush ''
MacOSX では、discard = ^O; lnext = ^V だったので
stty discard undef lnext undef
としたら、解除できました。(''だと ^@ と解釈されました。)しか
し、結果は、stty raw; と同じでした。
それで、xterm を env LANG=C で実行してみたら、問題ありません。
env LANG=ja_JP.UTF-8 でも。つまり、xterm の問題というよりは、
例の luit の問題です。実際に、まず xterm を
env LANG=ja_JP.UTF-8 xterm
で実行し、その中で
env LANG=ja_JP.eucJP luit
とすると、この段階で ^O や ^V が食われています。luit を起動
した後で、その中で stty raw; や stty discard undef lnext
undef; でも食われます。
でも、luit を起動する前に stty discard undef lnext undef す
れば大丈夫でした。手順としては、こうなります。
(1) env LANG=ja_JP.UTF-8 xterm で xterm を起動する。
(2) stty discard undef lnext undef として ^O や ^V のキーを
<undef> にする。
(3) env LANG=ja_JP.eucJP luit で、luit を起動する。
まとめるとこうなります。
env LANG=ja_JP.UTF-8 xterm -e "stty discard undef lnext undef; env LANG=ja_JP.eucJP luit"
毎回これだと疲れるので、シェル・スクリプトを作ってみました。
------------------------------------------------------------
#!/bin/sh
xterm=/usr/X11R6/bin/xterm
exec=${SHELL:-/bin/sh}
opt=""
while [ $# != 0 ]; do
if [ "$1" == "-e" ]; then
shift
if [ $# != 0 ]; then
exec="$1"
shift
fi
else
opt="$opt $1"
shift
fi
done
LANG=ja_JP.UTF-8
export LANG
exec $xterm $opt -e "stty discard undef lnext undef; env LANG=ja_JP.eucJP luit $exec"
------------------------------------------------------------
これに、適当に名前をつけてウインドウ・マネジャのメニューに入
れるといいでしょう。
この問題は、どちらかというと luit の問題ですかね。疑似端末で
stty した時には、伝播させるか、そもそも luit が起動された段
階で stty raw すべきなのでしょう。(疑似端末って stty も取れ
ますよね。やったことないですけど。)
あと、luit/xterm って、漢字変換はどうなっているのでしょうか?
kinput2 など使えますか?
In article <YAS.05Au...@kirk.is.tsukuba.ac.jp>
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> env LANG=ja_JP.UTF-8 xterm -e "stty discard undef lnext undef; env LANG=ja_JP.eucJP luit"
> 毎回これだと疲れるので、シェル・スクリプトを作ってみました。
これですが、X11 のメニューに登録して使うとうまくない情況があ
りました。-e の後は、全部 luit に渡した方がいです。
----------------------------------------------------------------------
#!/bin/sh
xterm=/usr/X11R6/bin/xterm
exec=${SHELL:-/bin/sh}
opt=""
while [ $# != 0 ]; do
if [ "$1" == "-e" ]; then
shift
if [ $# != 0 ]; then
exec=$@
break
fi
else
opt="$opt $1"
shift
fi
done
LANG=ja_JP.UTF-8
export LANG
exec $xterm $opt -e "stty discard undef lnext undef; env LANG=ja_JP.eucJP luit $exec"
----------------------------------------------------------------------
> #!/bin/sh
>
> xterm=/usr/X11R6/bin/xterm
> exec=${SHELL:-/bin/sh}
> opt=""
> while [ $# != 0 ]; do
> if [ "$1" == "-e" ]; then
> shift
> if [ $# != 0 ]; then
> exec="$1"
> shift
ここ shift して continue というよりは、全部とって break です。