[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:11325] Re: kemacs on plamo 2.2.1
-
From:Minoru Kimura
-
Date:Mon, 17 Sep 2001 06:53:30 +0900
- Subject: [plamo:11325] Re: kemacs on plamo 2.2.1
- From: Minoru Kimura <mk@xxxxxxxxxxxxx>
- Date: Mon, 17 Sep 2001 06:53:30 +0900
- Posted: Mon, 17 Sep 2001 06:53:28 +0900
木村です。
> 例えば上移動キーの場合、kemacs では ^[OA というシーケンスを
> 期待しているようです (実際旧マシンではそのようになっています) が、
> plamo 2.2.1 では ^[[A というシーケンスを返しているようです。
これは「カーソルキーモード」の設定という端末の属性を扱うエスケープ
シーケンスの仕事です。
カーソルキーモードが「アプリケーションカーソルキーモード」の場合は
ESC O Aなどを返し、「カーソルキーモード」の場合は ESC [ A などを返
します。
この切替えは端末に対してエスケープシーケンスを送ることで行います。
ESC [ ? 1 h を送るとアプリケーションモードになり、
ESC [ ? 1 l を送るとカーソルキーモードになります(最後は小文字のL)。
実際のコマンドでは echo '^[[?1h'; cat と入力し、カーソルキーを押し
てみると動作の違いがわかります。ESC(^[)の入力は、C-v ESC です。
> # 今試して気付いたのですが、単に"cat"として、上移動キーを押してみると、
> # 新マシン旧マシンともに ^[[A を返すのですね…ますますわけわかめです(~^;)
今まで、kemacsのときだけアプリケーションカーソルキーになっていると
すれば、kemacsが起動/復帰の際に自動的にアプリケーションカーソルモ
ードへの変更シーケンスを送っている可能性があります。
kemacsは使ったことがないのでわかりませんが、GNU Emacsの系列であれ
ばsuspend-emacsに対応するhookがあったと思いますから(xemacsでは、
suspend-hooksとresume-suspend-hookというのがありました)、これに端
末への文字列送信コマンド(send-string-to-terminalとか)を割り当てる
ことで対処ができるかも知れません。
その他に、もっと泥臭い方法として
「Emacs-lispライブラリ/term/lk201.el」を読むという方法もあります。
これには具体的にキーシーケンスの割当て方法が書いてあります。
> こういうものは termcap の設定か、と思ったのですが、
> どちらも term の値は vt100 ですし、 termcap も
> (流し読みした限りでは) 関係するところは同じに見えます。
こういうのは、たぶんANSIの規格とか、VT端末のマニュアルを読まないと
わからないでしょう。
/木村
- Follow-Ups
-
- [plamo:11350] Re: kemacs on plamo 2.2.1, argrath
- References
-
- [plamo:11324] kemacs on plamo 2.2.1, argrath
[検索ページ]
[メール一覧]
Plamo ML 公開システム