結論
- Karabiner-Elementsで特定デバイスのテンキーごとに設定を分けたいなら、`device_if` を入れればよかった
こういう形にすればよかった
| 項目 |
内容 |
| 対象キー |
`keypad_5` |
| 動作 |
`Command + Shift + R` |
| アプリ条件 |
Chrome が最前面のとき |
| デバイス条件 |
`vendor_id: 1256`, `product_id: 28705` |
{
"description": "iClever Tenkey: 5 to Hard Reload, 6 to Custom Action",
"manipulators": [
{
"type": "basic",
"description": "5: Chrome Hard Reload (Cmd+Shift+R)",
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": ["^com\\.google\\.Chrome$"]
},
{
"type": "device_if",
"identifiers": [
{
"vendor_id": 1256,
"product_id": 28705
}
]
}
],
"from": {
"key_code": "keypad_5",
"modifiers": { "optional": ["any"] }
},
"to": [
{
"key_code": "r",
"modifiers": ["left_command", "left_shift"]
}
]
}
]
}
何をしたかったか
- 無線テンキーとフルキーボードのテンキー、テンキーが2つある環境で、片方にだけ別のキー割り当てを入れたかった
- 無線テンキーの5 は Chrome のハードリロードにしたかった
- フルキーボードは半角数字を入力したい
分かったこと
- 既存ルールにデバイス条件が入っていないせいで、2つのテンキー両方に適用されていたこと
- 特定デバイス限定にしたいなら `device_if` に `vendor_id` と `product_id` を書けばよかった
- 今回の対象デバイスは `iClever IC-KP08` で、`vendor_id: 1256`、`product_id: 28705` だった
- Chrome のときだけ効かせたいなら `frontmost_application_if` と `device_if` を併用すればよかった
試したこと
- 最初は `Simple Modifications` 前提の説明を読んだけど、3ボタン押しショートカットの話になるとそこでは足りなかった
- すでにインポート済みのルールがある前提で、既存JSONに `device_if` を足す方向に整理した
- いま使っていた `Chrome: Tenkey 5 to Hard Reload` のルールに、iClever のデバイス条件を追加する形にした
起きた問題
- `To key` に存在しない設定を前提にされたり、インポート済みなのに公式ルールライブラリの話に戻ったりして、欲しい答えまで少し遠回りだった
- ただ、最終的に `device_if` でデバイス限定すればいいところまでは辿り着けたので、収穫はそこ