Article View: fj.editor.emacs
Article #476Re: C-,と C-. への割り当て
From: HIROSE, Masaaki
Date: Fri, 20 Feb 2004 01:54
Date: Fri, 20 Feb 2004 01:54
108 lines
5157 bytes
5157 bytes
ひろせです
on "Re: C-,と C-. への割り当て"
<c12vbb$1sd$1@ns.src.ricoh.co.jp>
at 19 Feb 2004 18:30:03 GMT
ohta@src.ricoh.co.jp (Junn Ohta) wrote:
> fj.editor.emacsの記事<qkpptcb9yij.fsf@dash.tokyo.pfu.co.jp>で
> kate@pfu.fujitsu.comさんは書きました。
> > “emacs -nw”なので、xterm か kterm でわないかと、、、、
> > ^^^
>
> Windowsからtelnetで入っている場合だってあるでしょ
> うからxterm/ktermとは限らないと思いますが、逆に、
情報が足りませんでしたが emacs -nw は xterm, kterm, rxvt での起動のつ
もりでした。
> > それでしたら、xterm/kterm の resource を使って“C-,”や“C-.”で
> > エスケープシーケンスを出すように定義して、emacs でそれを拾えばい
> > いです。
>
> Xなターミナルであればそういう手段が何かしら利用で
> きるのですね。勉強になりました。
xterm, kterm では片山さんの方法でうまくできたのですが、rxvt ではダメ
(C-.でも.が入力される) でした。
rxvt の README
<URL:http://cvs.sourceforge.net/viewcvs.py/rxvt/rxvt/doc/README.xvt?rev=HEAD&view=auto>
によれば、
Xterm features not supported
----------------------------
(snip)
- Toolkit style configurability. In particular, xvt does not allow
the user to remap the mouse or keyboard keys.
という記述があるので Translations には対応していないのではないかと思い
ます。
以下、簡単にまとめますので間違いがあったら指摘してもらえるとうれしいで
す。
//
* 目的
xterm, kterm などの中で emacs -nw で起動した Emacs で、C-. や C-, にキー
バインドしたい。
* 方法
~/.Xdefaults に以下を設定。
KTerm*VT100.Translations: #override \
Shift<Key>space: begin-conversion(JAPANESE_CONVERSION) \n\
!Ctrl<KeyPress>period: string(0x1b) string("[34~") \n\
!Ctrl<KeyPress>comma: string(0x1b) string("[33~")
XTerm*VT100.Translations: #override \
!Ctrl<KeyPress>period: string(0x1b) string("[34~") \n\
!Ctrl<KeyPress>comma: string(0x1b) string("[33~")
~/.emacs に以下を設定。
(global-set-key [f20] FUNC-FOR-CONTROL-PERIOD)
(global-set-key [f19] FUNC-FOR-CONTROL-COMMA)
* 説明
ターミナルの上で動いているアプリケーションにはターミナル経由で文字コー
ドしか渡せません。ASCII文字の制御コードは0x00~0x1fの32種類しかなく、
0x40~0x5f の文字とCtrlキーの同時押しに割り当てられています。つまり使
える組み合わせは以下のものだけです。
C-@(C-SPC), C-a ~ C-z, C-[, C-\, C-], C-^, C-_
従って
(global-set-key [?\C-.] FUNC)
などとしてもターミナルの中の Emacs は反応しない。
一方、X 上ではすべてのキーがイベントを起こすので、任意の通常キーと任意
のモディファイキーの組み合わせ (C-.とか) であまり使わないキー (F20とか)
の keysym を発生させるように Translations クラスで設定し、Emacs 側で
F20 に global-set-key すればよい。
* 参考
# 間違っているかもしれませんが参考までに。
rxvt では Translations が実装されていないようなのでこの方法は使えない。
Emacs 側でのファンクションキーと keysym の対応 ("[34~"は f20 であるな
ど) を確認するには、/usr/local/share/emacs/VERSION/lisp/term/lk201.el
を見ればよい。
//
ではでは
--
ひろせ
Technical Details
Message-ID:
<yf1vfm21poc.wl%hirose31@t3.rim.or.jp>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.media.kyoto-u.ac.jp!Q.T.Honey!nf.asahi-net.or.jp!not-for-mailReferences:
<yf1n07gedk6.wl%hirose31@t3.rim.or.jp> <c0vpgc$179$1@ns.src.ricoh.co.jp> <qkpptcb9yij.fsf@dash.tokyo.pfu.co.jp> <c12vbb$1sd$1@ns.src.ricoh.co.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: ff358,1fa89b68c55cd738 X-Google-Attributes: gidff358,public X-Google-ArrivalTime: 2004-02-19 17:54:16 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.media.kyoto-u.ac.jp!Q.T.Honey!nf.asahi-net.or.jp!not-for-mail Date: Fri, 20 Feb 2004 10:54:11 +0900 Message-ID: <yf1vfm21poc.wl%hirose31@t3.rim.or.jp> From: "HIROSE, Masaaki" <hirose31@t3.rim.or.jp> Newsgroups: fj.editor.emacs Subject: Re: C-,と C-. への割り当て In-Reply-To: <c12vbb$1sd$1@ns.src.ricoh.co.jp> References: <yf1n07gedk6.wl%hirose31@t3.rim.or.jp> <c0vpgc$179$1@ns.src.ricoh.co.jp> <qkpptcb9yij.fsf@dash.tokyo.pfu.co.jp> <c12vbb$1sd$1@ns.src.ricoh.co.jp> User-Agent: Wanderlust/2.11.24 (Wonderwall) SEMI/1.14.6 (丸岡) LIMIT/1.14.8 (土師の里) APEL/10.6 Emacs/21.3 (i686-pc-linux-gnu) MULE/5.0 (賢木) X-Prom-WL: Prom-WL 2.7.0 (procmail reader for Wanderlust) X-PGP-Pubkey: <URL:http://www.t3.rim.or.jp/~hirose31/pubkey.txt> X-Cite: MU-CITE 8.1 (yet another citation tool for GNU Emacs) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "丸岡") Content-Type: text/plain; charset=ISO-2022-JP Lines: 109 NNTP-Posting-Host: d244195.ppp.asahi-net.or.jp X-Trace: 1077242054 news2.asahi-net.or.jp 19833 210.253.244.195 X-Complaints-To: ap-net@asahi-net.or.jp