- Karabiner で「かな」配列を月配列俺式にしていた
- Sierra にアップデートしたら Karabiner が使用できなくなって悲しい
- Karabiner-Elements が 2017/07 のアップデートで変数が使えるようになった
CONTENTS
SOURCE
全体像
- 日本語 IME が有効な場合のみ、月配列用のキー置き換えを行う
- シフトキーを押している場合はキー置き換えを行わない
設定ファイルの概要
以下のような設定ファイルを作成すると、 Karabiner-Elements の設定画面の「Complex Manipulators」タブで「Add rule」できるようになる。
- 設置するパスは
~/.config/karabiner/assets/complex_modifications/
{ "title": "Personal rules (@shun-fix9)", "rules": [ { "description": "月配列俺式改二", "manipulators": [ { "type": "basic", "from": {"key_code": "japanese_eisuu","modifiers": {"optional": ["any"]}}, "to": [{"key_code": "japanese_eisuu"}], "to_after_key_up": [ {"set_variable": {"name": "is_japanese_kana", "value": 0}}, {"set_variable": {"name": "is_passthrough", "value": 0}} ] }, (other manipulators...) ] } ] }
rules
には「Add rule」でまとめて有効/無効を切り替えたい粒度でルールを記述していく。
manipulators
でキーを押した時の挙動を記述する。
この後、 manipulators
の内容を例示する。
IME の状態の保存
「かな」配列のカスタマイズなので、日本語 IME が有効になっている場合のみ、キーの置き換えをしたい。
「かな」を押した時にフラグを立てて、「英数」を押した時にフラグを下げることにする。
{ "type": "basic", "from": {"key_code": "japanese_eisuu","modifiers": {"optional": ["any"]}}, "to": [{"key_code": "japanese_eisuu"}], "to_after_key_up": [ {"set_variable": {"name": "is_japanese_kana", "value": 0}}, {"set_variable": {"name": "is_passthrough", "value": 0}} ] }, { "type": "basic", "from": {"key_code": "japanese_kana","modifiers": {"optional": ["any"]}}, "to": [{"key_code": "japanese_kana"}], "to_after_key_up": [ {"set_variable": {"name": "is_japanese_kana", "value": 1}}, {"set_variable": {"name": "is_passthrough", "value": 0}} ] }, { "type": "basic", "from": {"key_code": "left_control","modifiers": {"optional": ["any"]}}, "to": [{"key_code": "left_control"}], "to_after_key_up": [{"set_variable": {"name": "is_passthrough", "value": 1}}] },
フラグの名前は is_japanese_kana
を使用する。
また、キーの置き換えを無効にしたい場合もある。
そこで、コントロールキーで is_passthrough
フラグを立てて、キーの置き換えを無効にできるようにしておく。
各シフト状態の保存
月配列俺式改二では、 t
d
k
l
/
をシフトキーとして使用する。
それぞれ、押している間、 is_japanese_<key>
フラグを設定するようにする。
{ "type": "basic", "conditions": [ {"type": "variable_if", "name": "is_passthrough", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana", "value": 1}, {"type": "variable_if", "name": "is_japanese_kana_d", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_k", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_l", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_slash", "value": 0} ], "from": {"key_code": "t"}, "to": [{"set_variable": {"name": "is_japanese_kana_t", "value": 1}}], "to_after_key_up": [{"set_variable": {"name": "is_japanese_kana_t", "value": 0}}] },
他のシフトキーが有効でない場合に、各シフトキーによるシフトフラグを有効にする。
キーの置き換え
通常キーの置き換えは、各シフト状態によって設定を行う。
{ "type": "basic", "conditions": [ {"type": "variable_if", "name": "is_passthrough", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana", "value": 1}, {"type": "variable_if", "name": "is_japanese_kana_t", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_d", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_k", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_l", "value": 0}, {"type": "variable_if", "name": "is_japanese_kana_slash", "value": 0} ], "from": {"key_code": "q"}, "to": [{"key_code": "s"},{"key_code": "o"}] },
このような設定を、シフトなし、 t
d
k
l
/
の6面分行う。
まとめ
Karabiner-Elements を使用して、 Mac で「かな」配列をカスタマイズして月配列俺式改二でタイプできるようになった。
Karabiner-Elements を使用する理由
「かな」配列をカスタマイズする方法として、以下のものが考えられる。
- 入力ソースの設定で独自の入力配列を定義する
- Google IME でローマ字変換表をカスタマイズする
しかし、これらの方法では入力ソースの変更が必要になる。
Mac の日本語変換をちょっと気に入っているので、入力ソースの変更をしないで済む方法が欲しかった。
Karabiner が使用できなくなった時、「かな」配列のカスタマイズか、ローマ字変換かという選択をしなければならなかった。 この時はローマ字変換を選んだわけだ。
だから、「かな」配列のカスタマイズの優先順位はそれほどの高くはないが、今はカスタマイズされた「かな」配列で快適にタイピングしている。