【US キーボード Mac】Emacs(ddskk, azik)でカギカッコを入力したい

2021年2月24日

US配列キーボードにおける Emacs, ddskk, azik

以下は 2021 年 2 月の状況。

skk と azik は相性のいい組み合わせに見えるが、気まずい瞬間がないわけではない。
 丁寧な解説がマニュアルに書いてある。

AZIK では、撥音「ん」を入力するには q を使うこととされていますが、 skk では既に q に関数 skk-toggle-kana を割り当てています。
7. ローマ字入力以外の入力方式 — ddskk 17.1 ドキュメント

q キーで、skk と azik の重要な機能同士がぶつかるのだ。
 もっともこの衝突は skk が譲っている。skk で azik を使う場合、q を押すと「ん」が入力される。
 では、azik で、ひらがな・カタカナのトグル変換をする時はどうするのか。
 以下のキーがトグル変換のキーとして置き代わる。
 

  • 日本語キーボードの場合、「 @ 」キー
  • 英語キーボードの場合、「 [ 」キー

カギカッコを入力したい

Mac の US 配列のキーボードで、上記のデフォルトの設定で日本語入力する。
 と、カギカッコを入力するつもりで、つい「 [ 」キーに指がのびてしまう。思いがけずカタカナモードになってしまい、ちょっとだけイラっとくるのだ。
 US キーボード、ddskk、azik という状況下で 「 を入力するには、

  • x[

という具合に、x を前置する。
 この、ひらがな・カタカナのトグル変換とカギカッコの入力の設定を入れ替えたい。
 x[ でトグル変換、[ でカギカッコの入力にしたいのである。

いや、ひらがな・カタカナのトグルは、カギカッコと同じくらい多用するだろ。
 という話はあるかと思う。
 しかし筆者はすでに、ひらがな・カタカナ変換を[ control ] + [ k ]に割り当てている。このキーの組み合わせは、ことえり以来の伝統を持つ Mac のカタカナ変換である。そのかわり、それこそ Emacs 以来の伝統を持つ、「カーソルから右を文末まで切り取り」というショートカットは使えなくなるが。

[ control ] + [ k ]でトグル変換するのに、筆者はHammerspoonを用いた。init.el や .skk でなんとかしようとしたが、出来なかったのである。Hammerspoon のスクリプトは、この記事の最後のほうに掲載する。

skk-azik.el

azik での入力は skk-azik.el で定義されている。
 筆者は elpa でインストールしたので、ファイルは「~/.emacs.d/elpa/ddskk-20210112.2013/」というフォルダに入っていた。ひとによってはアプリのパッケージ内とかにインストールされてるかもしれない。.emacs.d は隠しフォルダなので、[ command ] + [ shift ] + [ . ]で表示させるか、ターミナルを使うのが良いだろう。

open ~/.emacs.d/elpa/

などとやれば、Finder で開いてくれる。
 ddskk フォルダ内にある「skk-azik.el」と「skk-azik.elc」というファイルをコピーして、どこかのフォルダにバックアップしておく。

バックアップをとる

ddskk フォルダの skk-azik.el を書き換える。
 Emacs や CotEditor で開くと、最後のほうに以下のような部分があるはず。

      (setq skk-azik-keyboard-specific-additional-rom-kana-rule-list
            '(("\'" nil "ー")
              ("x\'" nil "'")
              ("[" nil skk-toggle-characters)
              ("{" nil skk-set-henkan-point-subr)
              ("x[" nil "「"))))))

上記の
 ("[" nil skk-toggle-characters)
 ("x[" nil skk-toggle-characters)に変更。

("x[" nil "「"))))))
 ("[" nil "「"))))))と変更する。

これを保存する。
 この el ファイルに、さらにバイトコンパイルという処理をほどこして elc ファイルを作成する。
 elc ファイルにすると読みこみが速くなるらしい。el ファイルと elc ファイルがある場合、elc ファイルが優先される。その場合は el ファイルを編集しただけでは設定が反映されないので注意。

Emacs で以下を実行する。

M-x byte-compile-file

ファイルの場所を訊ねられるので、編集した skk-azik.el ファイルを指定する。

~/.emacs.d/elpa/ddskk-20210112.2013/skk-azik.el

筆者の環境ならこういうことになる。指定すると処理がはじまり、elc ファイルが上書きされる。
 Emacs を再起動して [ キーを押し、 「 が入力されれば成功だ。
 作成した skk-azik.elc はコピーを取って、どこかに保存しておくといいと思う。ddskk のアップデートで、編集した skk-azik.el が元に戻ってしまう可能性があるからだ。

バイトコンパイルについては、下記のブログさまの記事で勉強させていただいた。

🔗 Emacs のバイトコンパイル | プログラマーズ雑記帳

Hammerspoon スクリプト

ひらがな・カタカナのトグル変換をトグルの変更は、前述の通り Hammerspoon でおこなった。

Hammerspoon は Mac のユーティリティアプリである。インストールすると、ホームフォルダに「.hammerspoon」という隠しフォルダが生成される。その隠しフォルダの中にある init.lua というファイルに lua スクリプトを記述し、Mac を便利にしていこう、という趣旨のものである。

今回の場合は、スクリプトは以下のようなものが考えられると思う。

emacsMode = hs.hotkey.modal.new()
emacsMode:bind('ctrl', 'k', function()
    hs.eventtap.keyStrokes('x[')
end)

function emacsWatch(name, event, app)
    if event == hs.application.watcher.activated then
        if name == 'Emacs' then
            emacsMode:enter()
        else
            emacsMode:exit()
        end
    end
end

emacsWatcher = hs.application.watcher.new(emacsWatch)
emacsWatcher:start()

だいたいこれで、筆者の満足する環境になった。

ちなみに AquaSKK で同じことをする場合は簡単だ。
 ~/Library/Application Support/AquaSKK 内の keymap.conf を編集すれば [ control ] + [ k ] をトグル変換に設定できる。編集する項目は「ToggleKana」だ。
 文法は以下のリンク先にある。

🔗 keymap.confの文法 – AquaSKK Wiki – AquaSKK – OSDN

また、[ キーで 「 を入力する場合は、上記と同じフォルダに rule ファイルを作る必要がある。
 詳しくは下記のリンクの通り。非常に簡単に設定できる。

🔗 AquaSKK プロジェクト::かな変換のカスタマイズ