Re: xterm Control-O and Control-V
新城@筑波大学情報です。こんにちは。
fjに記事を書いているうちに、解決策が見つかりました。ありがと
うございます。
結論としては、xterm の問題というよりは、例の luit の問題で、
luit を起動した段階で stty してももう遅くて、xterm が luit
を起動する前に stty する必要があるということでした。xterm も
疑似端末(pseudo tty)を使うし、さらに luit も疑似端末を使いま
す。luit が起動した後に stty しても、luit 側は変りますが、
xterm 側は変らないということでした。疑似端末2個というのは気
が付きませんでした。
In article <uacj7mp28.fsf@anet.ne.jp>
OOTANI TAKASHI <tksotn@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 など使えますか?
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735