2005年10月2日の日記の1番目の記事へのコメント
■uim.elターミナルで動かしたとき
fnキーとか矢印キーとか,Emacsを-nwつけて起動したときに使えてなかったことが判明ですよorz.えーと,Emacs的には,この辺のキーは,ターミナル上だとターミナルの種類によって「M-O A」とか「M-[ 1 1 ~」とかの複数ストロークのキーにマップされて到達するようになってて,その辺の定義がfunction-key-mapというマップに設定されるようになってます.
function-key-mapに関しては,キーマップ引いて,外れたらfunction-key-mapを手で引いてフォローってのが多分正しい処理なんですが,見ての通り,「M-O」とか「M-[」という,普通使わないようなプレフィックスキーから始まる複数ストロークのキーバインドなんで,キーマップにあらかじめ「M-[ 1 1 ~」とかのエントリを用意しておかないと,「M-[」が到達した時点でイベント処理関数が呼ばれちゃうため,後に続くキーがなんだかわかりません.続いて到達しているキーを読み出す方法,きっとあると思うんですが,リファレンス見てもよくわかんないんですよね.しょうがないからEmacsのソース読むか・・・(;´Д`).
で,ひとまずこの問題に関しては,キーマップ初期化時にfunction-key-mapを見て,あらかじめファンクションキーとして呼ばれそうなキーバインドを仕掛けておく,というひどい方法で対処します・・・が,やばいっすよこれ.途中でfunction-key-mapに変更あっても追随できないし.function-key-map自体を継承してしまうという方法もあるんですが,そうると今度は,this-command-keys関数で拾えるキー列が「M-[ 1 1 ~ f1」とかになってもう何がどうなってんだか(;´Д`).
[コメントを書く]
2005年10月2日の日記の1番目の記事へのコメント
[コメントを書く]