Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: MacOSX 10.4 Tiger, xterm with Kanji

14 views
Skip to first unread message

Yasushi Shinjo

unread,
Aug 17, 2005, 12:20:17 PM8/17/05
to
新城@筑波大学情報です。こんにちは。

今日は、一歩前進。~/.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回目
にはやっと通じたんだけど。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\

Yasushi Shinjo

unread,
Aug 23, 2005, 8:04:14 AM8/23/05
to
新城@筑波大学情報です。こんにちは。

おかげさまで、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 以外にもうまく通らないコードがあるか
もしれせんね。今日は気が付かなかったけれど。

あとキーのリピートが始まるタイミングが遅い気がするけど、気の
せいかもしれません。人間技で計れないし。

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Aug 23, 2005, 10:30:48 PM8/23/05
to
久野です。

y...@is.tsukuba.ac.jpさん:


> 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に切替えてくれてないわけかな。

役に立たない記事ですいません。 久野

Yasushi Shinjo

unread,
Aug 24, 2005, 1:24:15 AM8/24/05
to
新城@筑波大学情報です。こんにちは。

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 を何とかするのが筋でしょう。

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Aug 24, 2005, 1:34:10 AM8/24/05
to

久野です。

y...@is.tsukuba.ac.jpさん:


> 次のように打ってみましたが、結果は同じで、Control-O や
> Control-V が通りませんでした。

あとsttyで^Oや^Vに割り当てられているものを「なくす」って
いうのが思い浮かびますがどうですかね?

なくするにはどうするんだっけな… 久野

OOTANI TAKASHI

unread,
Aug 24, 2005, 9:39:43 AM8/24/05
to
In article <0508241434...@sma.gssm.otsuka.tsukuba.ac.jp>

ku...@gssm.otsuka.tsukuba.ac.jp writes:
> あとsttyで^Oや^Vに割り当てられているものを「なくす」って
> いうのが思い浮かびますがどうですかね?
>
> なくするにはどうするんだっけな… 久野

MacOSXは知らないので多少キーワードが違うかもしれませんが、
stty lnext '' flush ''
でいいのでは。
--
tksotn

Yasushi Shinjo

unread,
Aug 25, 2005, 2:51:45 AM8/25/05
to
新城@筑波大学情報です。こんにちは。

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 など使えますか?

Yasushi Shinjo

unread,
Aug 25, 2005, 1:29:46 PM8/25/05
to
新城@筑波大学情報です。

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 です。

0 new messages