Nozomu Ando
nand****@mac*****
2006年 6月 29日 (木) 11:37:52 JST
irodo****@irodo***** writes: > 2006/04 版では yen キーを押すとバックスラッシュが入力されるので、その > 後の本体の変更によるものと思われます。現在は TextEdit 等と同様に Opt + > yen でバックスラッシュが入力できます。 > > (define-key global-map [?¥] "\\") ;; ¥は半角にしてください > > を実行すれば yen キーでバックスラッシュを入力できますが、\C-yen は > \C-\\ としては機能しない等の問題があります。より良い解決方法をご存知の > 方がいらっしゃいましたら、補足お願いします。 私なら、Mac OS X のキーマップの方を変更して、yen キーでバックスラッシュ が入力されるようにします。今は JIS キーボード使ってないので、具体的な方 法は忘れてしまいましたが、Ukelele でしたっけ。 Emacs だけの問題と考えるのであれば、ちょっと力押しですが、 (define-key global-map [?円記号] [?\\]) (define-key global-map [?\C-円記号] [?\C-\\]) (define-key global-map [?\M-円記号] [?\M-\\]) (define-key global-map [?\C-\M-円記号] [?\C-\M-\\]) ではダメでしょうか。(おなじく、「円記号」は円記号に置き換えてください) なお、円記号の「半角」には、少なくとも latin-iso8859-1 のものと latin-jisx0201 のものがあって、Emacs 内部コードが異なりますので注意して ください。システムの Input Menu が U.S ならば前者が入力されますし、 ことえりの英数ならば後者が入力されるようです。 前者のコードは 2213 で、後者は 3420 です。 (C-u C-x = (what-cursor-position) すればわかります) 円記号を .emacs に書くと、ファイルの encoding に気を使わなければいけな くなるので、直接 Emacs のコードを書くことにして (これはこれで問題ありそ うですが)、 さらに、global-map で定義すると、キーボードマクロになって、 describe-key でどの関数に割り当てられているか一発で判らないので、 function-key-map を使うことにすると、 つぎのようになるかと思います。いかがでしょう。 (define-key global-map [2213] nil) (define-key global-map [67111077] nil) (define-key global-map [134219941] nil) (define-key global-map [201328805] nil) (define-key function-key-map [2213] [?\\]) (define-key function-key-map [67111077] [?\C-\\]) (define-key function-key-map [134219941] [?\M-\\]) (define-key function-key-map [201328805] [?\C-\M-\\]) (define-key global-map [3420] nil) (define-key global-map [67112284] nil) (define-key global-map [134221148] nil) (define-key global-map [201330012] nil) (define-key function-key-map [3420] [?\\]) (define-key function-key-map [67112284] [?\C-\\]) (define-key function-key-map [134221148] [?\M-\\]) (define-key function-key-map [201330012] [?\C-\M-\\]) Nozomu Ando P.S. この文面、バックスラッシュを円記号で表示する環境の人には何がなんだかわ からないかもしれませんね。すみません。文中の \ は全て ASCII の 0x5c の つもりです。 keyboard-translate が円記号に使えないのは、通常のキーボード入力とは異る ためだろうと思います (たとえば、(recent-keys) に残らない) が、 よく知りません。