たごもりすメモ

コードとかその他の話とか。

Mac OSXにおける幸せなSKK環境を作る手順ひと通り

Macを買ってきて何をするかというと、普通はまずストレスなくSKKを使えるようにすることだと思う。SKKな人はエディタは当然Emacsも入れて設定するだろう。
ということで、そのための手順を自分の備忘録も兼ねてひと通り書いてみよう。

AquaSKKのインストールと設定

まず何はともあれAquaSKKを入れる(そしてことえりを抹殺する)。

  1. AquaSKKのサイト から最新版をダウンロードしてインストール
  2. 使用するIMをAquaSKKに変更
    • 「システム環境設定」から「言語とテキスト」を開き「入力ソース」タブを選択する
    • AquaSKK」の左のチェック欄にチェックを入れる
  3. AquaSKKの設定変更
    • メニューバーからAquaSKKのアイコンをクリックし「環境設定」を開く
    • あれこれ好きなように変更する
    • Emacs上のddskkを使う場合*1は skkserv を有効にする
      • 「その他」タブを開き「skkserv」の「有効にする」にチェックを入れる
      • localhost以外からの接続を拒否する」は大抵の場合はチェック入っていて良いはず
  4. かな入力ルールを変更したい場合
    • 自分は「!」や「?」を入力した場合は全角になってほしいので、その設定
      • 以下のパス(ユーザ名は自分のもの)に入力キーとそれに対応する文字を並べたファイルを作成する

/Users/tagomoris/Library/Application Support/AquaSKK

      • 上記パスに置いた symbol.rule など .rule という名前にしたファイルに、以下のようにEUC-JPで書くこと
?,?,?,?
!,!,!,!
    • 上記ファイルをAquaSKK上で有効にする
      • メニューバーからAquaSKKの「環境設定」を開く
      • 「かな規則」タブを開くと上記手順で作ったファイル名の項目ができているので、そこにチェックを入れて閉じる

他に辞書を追加したりあれこれあるとは思われる*2が、基本的にはこの設定で OSX 上でAquaSKKを使う分にはほとんどストレスがない状態になるはず。
お疲れさまでした!

CocoaEmacsでのskkの設定

しかしEmacsを使っている人はそうはいかない。AquaSKKをオンにした状態でEmacs上でキーを打つと、うまくいったりいかなかったりだが、ショートカットがうまく使えない状態になったりして、幸せになった例を見たことがない。
ということでCocoaEmacs上でSKKを使う場合の設定についても追記しておく。

  1. CocoaEmacsをインストールする
    • 適当にググって最新版をゲットののち、インストールする
  2. ddskkをインストールする
    • 適当にググって最新版をゲットののち、apelおよびddskkをインストールする
      • ここであんまりテキトーにやって、うっかり古いバージョンのddskkを入れると入力がうまくいかずに不幸な目に遭うので注意
      • 前に書いたが、14.1.90 もしくはそれより新しいものを入れる
    • インストール先は .emacs.d にしておく方が多分あとあと面倒がない
  3. 設定ファイル .emacs を編集
    • elispあんまよくわかってない部分があるので変なところあったら教えて!
    • load-pathに適切にddskkのパスを追加する
(setq load-path
      (append '("~/.emacs.d"
                "~/.emacs.d/elisp/apel"
                "~/.emacs.d/elisp/emu"
                "~/.emacs.d/elisp/skk"
              load-path))
    • ddskkの設定を skk-server としてAquaSKKに接続するようにして行う
(require 'skk-setup)
(require 'skk-study)

;;skk-server AquaSKK
(setq skk-server-portnum 1178)
(setq skk-server-host "localhost")

(global-set-key "\C-x\C-j" 'skk-mode)

(add-hook 'isearch-mode-hook
          (function (lambda ()
                      (and (boundp 'skk-mode) skk-mode
                           (skk-isearch-mode-setup)))))
(add-hook 'isearch-mode-end-hook
          (function (lambda ()
                      (and (boundp 'skk-mode) skk-mode (skk-isearch-mode-cleanup))
                      (and (boundp 'skk-mode-invoked) skk-mode-invoked
                           (skk-set-cursor-properly)))))
    • Emacs上でのコントロールキー入力をOSXに奪われないようにする
(setq mac-pass-control-to-system nil)

上記のように設定しておけば、Emacsでの入力内容がきちんとAquaSKKにも共有された状態で学習されるので、バラバラにやるより幸せになれるでしょう。

イマイチな点

AquaSKKがかな入力モードのままCocoaEmacsをアクティブにすると、AquaSKKが入力を奪ってしまってロクにEmacsに文字入力できなくなる。'l' を押してAquaSKKを半角英数モードにするまで非常に不幸な状態のままだ。
しかもその状態でも怪しげなコントロールコードかなにかがEmacsに渡されたままの状態になってしまって、即座に Ctrl-p などで移動しようとしてもうまくいかない。
何かアルファベットを入力するか、あるいは C-x C-u を二度繰り返すかしないと正常な状態に戻らないので注意すること。

これ、どうにかならないのかなー。

12/11(土)追記

コメントで id:tomoya に教えてもらいました! 以下の設定を行うことで、CocoaEmacs上で半角英数モードが維持されて幸せな状態になれるみたいです。

  1. システム環境設定の「言語とテキスト」を開く
  2. 「入力ソース」タブにある「入力ソースのオプション」で「書類ごとに異なるものを使用」を選択

「書類ごとに」ってアプリケーションごとって意味なのね……。
実際やってみると、メニューバーのモード表示は追随が微妙ですが、実際にはアプリケーションごとにモードの状態が維持され、他のアプリケーションでかな入力モードだった状態のままCocoaEmacsに切り替えても半角英数モードで戻れるようです。かなり幸せになれました! 感謝!

SKK Advent Calendar 2010

この記事は SKK Advent Calendar : ATND の参加記事です。前は SKKで単位の換算をする - うどん駆動開発 でした。明日は とりあえず暇だったし何となく始めたブログ に何か書かれるよ!

*1:かつ、skkservとしてAquaSKKを参照する場合

*2:自分はデフォルトのラージ辞書(.L)以外を設定することはほとんど無いので割とスルー。ていうかカスタマイズ済みの辞書が手放せないような人は多分この記事を読まない。w