Carbon EmacsでCtrl+Spaceが使えない問題の解決

こんにちは、hnwです。会社用のノートPCとして買ってもらったMacBookが今日届きました。私はMac初心者なので、しばらくインストールに苦しむ予定です。

さて、Mac OS X上では大半のアプリケーションでCtrl+aなどのEmacsバインディングが利用できます。素晴らしいですね。その一方で、Emacsユーザーを無視しているようなデフォルト設定も複数存在します。例えば、Spotlightと「ことえり」がCtrl+Spaceを奪ってしまう問題もその一つです。Emacs使いでCtrl+Spaceが使えなかったらストレスで死にそうになると思うのですが、Spotlightと「ことえり」の開発陣にEmacs使いはいなかったのでしょうか。愚痴を言っていても始まらないので、今回はこれを解決します。

まずSpotlightですが、これは簡単です。「システム環境設定」を起動して、「キーボードとマウス」-「キーボードショートカット」で「Spotlight検索フィールドを表示する」のチェックを外すなり、別のキーに割り当てるだけです。私はまだSpotlightの便利さがわかっていないのかもしれませんが、どんなに便利だろうとEmacsにCtrl+Spaceを渡す方が重要なのは言うまでもありません。

次に「ことえり」ですが、何が問題なのか気づいていない人がいるかもしれませんので簡単に説明します。「ことえり」が半角英字入力モードのときにはCtrl+SpaceがEmacsに渡ってくるので問題ないのですが、ローマ字入力モードの時はCtrl+Spaceで全角スペースの意味になってしまい、EmacsなどのアプリケーションにCtrl+Spaceが渡ってこないという問題があります。設定で「Windows風のキー操作」を選んだ場合は未確定の半角スペースの意味に変わりますが、アプリケーションにCtrl+Spaceが渡らないという意味では同じ問題を抱えています。

この問題に対して「ことえでぃ4」というアプリケーションを試してみました。下記の設定でローマ字入力モードでもCtrl+SpaceがEmacsで受け取れるようになりました。

「ことえでぃ4」画面キャプチャ

やり方ですが、「新規キーバインドセット」を「最小セット」から作ってCtrl+Spaceの「(この文字を)直接入力」の設定を追加し、「このキーバインドセットをシステムに適用する」を選択します。次に「ことえり環境設定」で「Windows風のキー操作」にチェックすれば完了です。

そんなわけで、無事に不満が解消できました!「ことえでぃ4」の作者の方、ありがとうございます。このツールがあればことえりの全てをEmacs風にすることさえ可能かもしれませんが、それはまだ実現できていません。他の不満を全て解消したら取り組んでみたいと思います。

最近はソフトウェア開発者のMacユーザーが急激に増えている印象ですので、このあたりは既に苦労した方も多いのかもしれません。先人の方々のツッコミをお待ちしております。

コメント / トラックバック 6 件

#1 すずき 2007/10/10 13:39

Carbon Emacs パッケージならコレで同じ事ができませんか?
(mac-add-ignore-shortcut ‘(ctl ? ))

# “?”の後ろには半角スペースがあります

#2 hnw 2007/10/10 21:51

試してみたところ、確かに私の環境でも期待通りの動作です!ググってみるとCarbon Emacs独自の設定が他にもあるみたいですね。教えていただいてありがとうございます。

つまり、こんなに頑張る必要があるのはターミナルソフト経由でリモートのEmacs上で作業をしているときだけ、ということになりますね。リモートのEmacsでは滅多に日本語を打たない気がしますので、この記事が役に立つ場面はあまり無いのかもしれません。

#3 artn 2008/09/23 21:47

(mac-add-ignore-shortcut ‘(ctl ? ))
を.emacsに書くとターミナル内でemacsを起動したときにエラーとなってしまいます。
どうしたら解決できるんでしょうか?

#4 hnw 2008/09/24 14:28

MacOSXのターミナルで起動するEmacsはCarbon Emacsとは別物ですから、そんな関数は無いんですよね。だからエラーになるわけです。

私は下記のような手段で逃げています。

(when (fboundp ‘mac-add-ignore-shortcut) (mac-add-ignore-shortcut ‘(control ? )))

関数が存在したら実行する、という書き方ですね。かなり汎用的に使えるので、覚えておいて損は無い方法だと思います。ご参考まで。

#5 artn 2008/10/07 03:29

アドバイスありがとうございます。

その後色々やってみていたのですが、動かず困った困ったしてたのですが、原因が分かりました orz

ブログからのコピペだとシングルクオートが変換されてしまっているのでエラーが出ていました。
wordpressの仕様なんでしょうけどなんだかなぁって感じですね。

#6 hnw 2008/10/07 14:47

そういえばそうでした。被害に合われた方、ごめんなさい。今更ですが、コピペする場合はご注意ください。

本末転倒ですが、WordPressでLispコードを貼りたい場合、quoteを使うとコピペ可能なコードを書けます。

(when (fboundp (quote mac-add-ignore-shortcut)) (mac-add-ignore-shortcut (quote (control ? ))))

ちょっと設定してみようかな、という方は上記コードを試してみてください。冗長で格好悪いので、あまりオススメしませんけど。

コメントする