問題点
Karabiner-ElementsはComplex-Rulesで左commandを押したときに英数キー、右commandを押したときにかなキーを送信するという設定が用意されている。
IMEの切り替えとして機能するのは単体で押したときのみでcommand+cのように組み合わせたときはちゃんとcommandキーとして動作する。
ただ一つ問題があって、command単体で押した際にcommandが送信されることはないのでcommandを押しながらマウスのクリックをするという動作がうまくできなくなる。
解決策
Karabiner-Elementsの設定ファイルである~/.config/karabiner/karabiner.json
内の左commandを押したときの設定、右commandを押したときの設定それぞれにto_if_held_down
を設定する。
to_if_held_down
とはそのキーが一定時間押されたときの動作なので、key_code
を使い元のキーの入力が送られるようにすればいい。
karabiner.json
"rules": [
{
"description": "コマンドキーを単体で押したときに、英数・かなキーを送信する。(左コマンドキーは英数、右コマンドキーはかな) (rev 2)",
"manipulators": [
{
"from": {
"key_code": "left_command",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "left_command",
"lazy": true
}
],
"to_if_alone": [
{
"key_code": "japanese_eisuu"
}
],
"to_if_held_down": [{ "key_code": "left_command" }],
"type": "basic"
},
{
"from": {
"key_code": "right_command",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_command",
"lazy": true
}
],
"to_if_alone": [
{
"key_code": "japanese_kana"
}
],
"to_if_held_down": [{ "key_code": "right_command" }],
"type": "basic"
}
]
}
]