結論

  • 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` でデバイス限定すればいいところまでは辿り着けたので、収穫はそこ