LoginSignup
2
3

More than 1 year has passed since last update.

Karabiner-Elementsでwindows-likeとemacs-likeの2つのキーバインドを使い分ける

Last updated at Posted at 2020-07-07

MacのKarabiner-Elementsでwindows-likeとemacs-likeの2つのキーバインドを使い分けるにはどうするのかに関するメモ。

やりたいこと:普段のWEBブラウザ等ではwindows-likeなキーバインド(Ctrl-c,Ctrl-vでコピーペーストCtrl-fで検索)を使い、terminalやEmacsではそのキーバインドをやめたい(Ctrl-w,Ctrl-yでコピーペースト、Ctrl-sで検索)。

手順1: Karabiner-Elementsをインストールする

Karabiner-Elementsをインストールする。
https://karabiner-elements.pqrs.org/
上記のURLからダウンロードしてくる。

手順2: Karabiner-Elementsの使い方を理解する

まず、Karabiner-Elementsを起動してComplex modificationsタブを選択する。

スクリーンショット 2020-07-08 06.21.54.png

次にAdd ruleボタンを押したのちImport more rules form the Internet(open a web browser)ボタンを押すとキーバインドのサンプル集が見つかる。この中から目的のものをImportする。今回は Windows shortcuts on macOSを選択。

スクリーンショット 2020-07-08 06.24.12.png

これでルール集を取り込めるが、まだそのルール集の中のどのルールを実際に使うのかを決めていない。実際に使うルールをEnableする。例えばCtrl+C, Ctrl+P, Ctrl+X => Cmd+C (Copy), Cmd+v (Paste), Cmd+X (Cut)をEnableにするとその瞬間からばCtrl+CがCmd+Cに変換されて、ブラウザ等のテキストがコピーできるようになる。まずはそこまで確認すること。

そして、この設定でEmacsを開いて編集しようとするとおかしなことになることに気づくはず。例えばCtrl-x Ctrl-fでファイルを開こうとすると最初のCtrl-xがCmd-xに変換されてしまうのでうまく開けなくなる。

手順3: アプリケーションごとにキーバインドを変えるためルールを編集する

先ほども開いたキーバインドのサンプル集のページにいく。
https://ke-complex-modifications.pqrs.org/

今回はWindows shortcuts on macOSのImportでEdit JSONを選択する。
スクリーンショット 2020-07-08 06.44.28.png

ここでタブを開いて見ていくと、Rule Conditions, Frontmost application unlessという項が見つかる。これはこのキーバインドのルールを適用しないアプリケーション一覧が書かれている。ここにEmacs等を加えれば良い。実は^com.apple.Terminal$という項目がすでにありterminalはこのキーバインドから除外されていることがわかる。このようにアプリケーションの名前はアプリケーションのBundle Identifierを調べてその名前を書く必要がある。

スクリーンショット 2020-07-08 06.28.01.png

アプリケーションのBundle Identifierを調べるには、Karabiner-Elementsをインストールしたときに同時にインストールされるKarabiner-EventViewerを使用する。このアプリケーションを起動し、Frontmost applicationタブを選べばクリックしたアプリケーションのBundle Identifierを教えてくれる。Emacsはorg.gnu.Emacsであり、Xquartzは org.xquartz.X11である(前のヴァージョンではorg.macosforge.xquartz.X11)。
スクリーンショット 2020-07-08 06.33.43.png

これを先ほどのWindows shortcuts on macOSの編集ページでBundle Identifierに加えれば良い。他の例を真似て以下のように書く。

^org\.gnu\.Emacs$
^org\.xquartz\.X11$

なかなかの手作業だが、使用するキーバインドの全てでこのBundle Identifierを追加する。最初の項Ctrl+C, Ctrl+P, Ctrl+X => Cmd+C (Copy), Cmd+v (Paste), Cmd+X (Cut)のように複数のキーバインドがまとめて書かれている場合にはキーバインドごとにBundle Identifierを追加する必要がある。この場合は3箇所に書く。

一通り編集が終わったら、あとで間違いがあったとき直せるようにSHARE!ボタンを押し、URLを保存しておく。

スクリーンショット 2020-07-08 06.30.59.png

手順4: 編集したルールを適用する

最後にINSTALL!を押して Karabiner-Elementsに登録し、実際にルールをEnableすれば完了である。具体的なやり方は手順2を参照のこと。何回もやっている場合は前のルールを消すのを忘れないこと。つまりComplex modificationsからRemoveしておく。

TIPS C-gが効かない

上記の設定で,命令を中断するC-gがうまく効かないことがある。
その場合にはC-]かEsc-Esc-Escを使うと良い(the emacs edigor)

リファレンス

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3