この記事は、ゆめみ Advent Calendar 2021 の1日目の記事です。本当は Firestore で何か書きたかったんですが、何もネタが思いつかなかったのでストックを消費することにしました。
Macbook と HHKB (どちらも US 配列) のキーボードで、同じ IME 切り替え体験を実現するための Karabiner-Elements 設定方法です。
TL; DR
達成したい要件
- CapsLock としての機能は使わない
- Control キーの単押しで英数・かなの IME 切り替えをしたい
- Control キー + 他のキー入力の際は、 IME 切り替えをしない
設定手順
Complex modification rules を書く
以下の JSON を ~/.config/karabiner/assets/complex_modifications/
配下に適当なファイル名で作る
{
"title": "Left Control キーを単体で押したときに、英数・かなをトグルで切り替える",
"rules": [
{
"description": "Left Control キーを単体で押したときに、英数・かなをトグルで切り替える",
"manipulators": [
{
"type": "basic",
"conditions": [
{
"input_sources": [
{
"language": "ja"
}
],
"type": "input_source_if"
}
],
"from": {
"key_code": "left_control",
"modifiers": {
"optional": [
"any"
]
}
},
"parameters": {
"basic.to_if_held_down_threshold_milliseconds": 100
},
"to": [
{
"key_code": "left_control",
"lazy": true
}
],
"to_if_held_down": [
{
"key_code": "left_control"
}
],
"to_if_alone": [
{
"key_code": "japanese_eisuu"
}
]
},
{
"type": "basic",
"conditions": [
{
"input_sources": [
{
"language": "en"
}
],
"type": "input_source_if"
}
],
"from": {
"key_code": "left_control",
"modifiers": {
"optional": [
"any"
]
}
},
"parameters": {
"basic.to_if_held_down_threshold_milliseconds": 100
},
"to": [
{
"key_code": "left_control",
"lazy": true
}
],
"to_if_held_down": [
{
"key_code": "left_control"
}
],
"to_if_alone": [
{
"key_code": "japanese_kana"
}
]
}
]
}
]
}
Complex modifications rule をプロファイルに追加
- Karabiner-Elements Preferences を開く
-
Complex modifications
タブを開く - 左下の
Add rule
をクリック - 先ほど書いた Rules が見れるので、
Enable
を押す
Simple modifications で CapsLock を Control に上書き
Macbook のビルトインキーボードの CapsLock を Control として認識させつつ、単押しで英数・かな IME 切り替えをするなら必須です
キーボード設定の修飾キーカスタマイズだけでは、 CapsLock → Control はできても、それを英数・かな IME 変換にはできませんでした
動機
Macbook を使い始めてしばらく、ビルトインキーボード(US配列)だけでタイピングしていました。
英数・かな IME 切り替えは、 CapsLock 切り替えを使っていました。1
HHKB 導入
そのうち、据え置き時は HHKB(US配列)を使うようになりましたが、ここで問題発生。
HHKB は CapsLock のところに Control があるんですよね。
「Control を英数・かな IME 切り替えに使いたいな〜」
「でも Controlは他のキーと組み合わせたバインドでも使うしなあ」
「外出時に Macbook 単体で使うこともあるから、ビルトインキーボードと同じようなタイピングができる設定に揃えられるといいなあ」
救世主、公式 Complex modification rules
そんな悩みでモヤモヤしながら、公式 Complex modifications を見てみると、日本語向けで良さそうなのを見つけました。
「なるほど、修飾キーを単体で押して機能させることってほぼないから、これを IME 切り替えにあてるのはアリだ」
「CapsLock で切り替えてたときと同じ体験にできる」
「オプションキーやコマンドキー単体の英数・かなトグルはあるけど、なぜか Control だけはない」
「無いなら自分で作るか」
で、今に至る
参考
コマンドキー(左右どちらでも)を単体で押したときに、英数・かなをトグルで切り替える。 (rev 2) を参考にました。
こういう感じで、 left_command
を left_control
に置き換えていくだけの単純なお仕事です。
"to": [
{
- "key_code": "left_command",
+ "key_code": "left_control",
"lazy": true
}
],
"to_if_held_down": [
{
- "key_code": "left_command",
+ "key_code": "left_control",
}
],
"to_if_alone": [
{
"key_code": "japanese_eisuu"
}
]
需要があれば、すぐインポートできるよう、個人のリポジトリで Publish したり、あるいは本家に Pull Request でも送ってみようと思います。
どうでもいい話
一年以上あたためてしまった
-
Ctrl-Space は、 IDE の補完とかぶるので避けたかった ↩