Karabiner-Elementsで1キーでかなと英数をトグルする

※追記(2017/11/10)

11.2から、inputsourceifやinputsourceunlessというパラメータが増えて、もっとスマートにトグル切り替えできるようになりました。

https://github.com/pqrs-org/KE-complexmodifications/blob/master/docs/json/exampleinput_source.json


長らくWindowsでは右AltでIMEを切り替えていたので、Macを使うようになってからはKarabinerでも同じような設定にしてましたが、Sierraになってからは使えなくなり、「英かな」とか「前の入力ソース」のショートカットを組み合わせたりとかしてしのいでいたんですが、これが微妙にレスポンスがよくなかったりしたので若干ストレスになってました。

最近、Karabiner-ElementsのComplex Modificationsで設定がサクッとダウンロードできるようになってたので、ちょっと日本語入力の切り替え癖を矯正してみようかと、Macの日本語キーボード的な英数とかなキーの設定にしてました。

が、なんかたまたま、Karabiner-Elementsのリリースノートを見ていたら、Version 0.91.9のところに”variable_if”とか”set-variable”などというものを発見。 (英語だしちゃんと見てなかった)

これ、切り替えたステータスを保持しておいたら、ToggleIME的なことができるんじゃないのかと思って英数・かなキーのjsonを書き換えてやってみましたら、びっくりしたことになんかそれっぽく動いてます。

Karabiner-Elementsで1キーでかなと英数をトグルするサンプル

{
"title": "For Japanese (日本語環境向けの設定)",
"rules": [
{
"description": "RightOption to ToggleIME",
"manipulators": [
{
"type": "basic",
"conditions": [
{
"type": "variable_if",
"name": "imemode",
"value": 0
}
],
"from": {
"key_code": "right_option",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "japanese_eisuu"
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "imemode",
"value": 1
}
}
]
},
{
"type": "basic",
"conditions": [
{
"type": "variable_if",
"name": "imemode",
"value": 1
}
],
"from": {
"key_code": "right_option",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "japanese_kana"
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "imemode",
"value": 0
}
}
]
}
]
}
]
}
view raw ToggleIme.json hosted with ❤ by GitHub

見たらわかるとおり、imemodeが0か1かでjapaneseeisuuを送り出すか、japanesekanaを送り出すかだけ。 サンプル見て真似して書いただけなので、ちゃんとした書き方なのかとかシチュエーションによってはだめなケースがあるのかよくわかりませんけど、なんかまあ一応それっぽい感じ。