Karabiner-Elementsでenthumble(Windows App)のような操作を実現する方法

経緯

Windowsにはenthumbleというキーボード快適化ソフトがあります。

ソフトの紹介 enthumble Readme 【説明書】 - Qiita より引用

使用頻度の高いキー操作を手もとで行えるようにする、簡単設定のカスタマイズソフト
Windows用フリーソフト | インストール不要 | 商用利用可 | 有料版はキーカスタマイズ可能
enthumbleは、無変換キーを押している間だけ、キーボードの機能が変化します。面倒な設定なしに、ソフトを起動するだけで効果を発揮します。

上記のとおり、Windowsではほとんど使わない"無変換キー"を押している間だけ、一部のキーにカーソルキーに役割を持たせたり、またはBackSpaceの機能を持たせたりするというソフトで、一度使うと手放せなくなるソフトです。ただ、Windows版しかないためMacでは使えません。Karabiner-Elementsの前身のKarabinerには、最初からenthumbleの動作を実現するための設定が用意されるほどで、WindowsとMacを使う人にとっては需要が高い設定だったと思われます。しかし、Karabiner-Elementsでは設定が用意されていないため、作ることとしました。この設定を使えば、macOS Sierraでもenthumbleライクなキーバイドを利用することができます。

実装した機能

enthumbleには、基本的な使い方として以下のようなキー変換があります。 1 これらの設定のうち、"「←, ↓, ↑, →」入力"以外は、Karabiner-Elementsの前身のKarabinerでも提供されていました。

押したキー 変換後のキー
無変換/英数 + I, J, K, L 矢印キー(←, ↓, ↑, →)
無変換/英数 + A, S, W, D 矢印キー(←, ↓, ↑, →)
無変換/英数 + B, N, P, F 矢印キー(←, ↓, ↑, →)
無変換/英数 + H, J, K, L 矢印キー(←, ↓, ↑, →)
無変換/英数 + Space/かな Enter/Escape
無変換/英数 + N, M BackSpace
無変換/英数 + ',' '.' Delete
無変換/英数 + Y, U BackSpace
無変換/英数 + I, O Delete
無変換/英数 + 矢印キー(←, ↓, ↑, →) 「←, ↓, ↑, →」入力(2017/11/25追加)

これらのキー変換は、Shift・Controlと組み合わせても動作する、言い換えれば、無変換/英数 + shift + Hを押すとshift + 左矢印に変換されるのですが、この動作も実現させる必要がありました。

実装時の工夫点

ひとまず、Karabinerが最初から用意していた設定を実現するため、以下のとおりキー変換を実装しました。また、Windows版のenthumbleで最初から使えるようになっている「thumbIME」という設定もついでに実装しました。
from -> key_code -> modifiers -> optionalanyを設定することで、ShiftやControlを一緒に押した際にそのキーが変換後のキーに引き継がれるようにしました。
つまり、"Shift + 無変換/英数 + H, J, K, L -> Shift + 矢印キー(←, ↓, ↑, →)"という動作を実現しました。
また、「←, ↓, ↑, →」の入力については、Karabiner-Elementsに文字入力の機能はないため、代わりにシェルコマンドを実行する機能を使い、AppleScriptを実行することで対応しました。具体的には、押した矢印キーに対応する「←, ↓, ↑, →」の文字をクリップボードにコピーし、それを貼り付けする方法で対応しました。

"to": [
  { "shell_command": "osascript -e 'set the clipboard to \"\"'" },
  { "shell_command": "osascript -e 'tell application \"System Events\" to keystroke \"v\" using command down'" }
]

実際のコード

設定に必要なコードは900行以上ありますので、実際のコードを見たい方は、下のリンクからGitHubにある設定ファイルを開いて確認してください。
また、下にあるもう一つのリンクから、設定済みのルールをインポートすることができるページへアクセスできます。設定をインポートするには、"enthumble(Windows App) mode"の右にある"import"ボタンをクリックしてください。インポートした後は、Karabiner-Elementsの設定画面からルールを有効にしてください。

設定ファイル(JSONファイル):KE-complex_modifications/blob/master/docs/json/enthumble_mode.json
設定のインポートページ:Karabiner-Elements complex_modifications rules by s-show


  1. 設定ファイルを見れば、"無変換/英数 + 数字 -> Functionキー"のような設定なども多数あるのですが、ReadMeなどで紹介されているものはこれだけです。 

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.