Mac版BlueStacksでキーマッピングとスクリプトを使う


環境 : macOS Catalina 10.15.7、BlueStacks 4.270.1

Mac版のBlueStacksにはメニュー項目からキーマッピングスクリプトを追加することができませんが、設定ファイルを直接編集ことによりこれらの機能を使うことができます。

キーマッピング

設定ファイルはJSON形式になっているようです。単純なものだと以下の構造になります。

{
  "MetaData": {
    "ParserVersion": "14"
  },
  "ControlSchemes": [
    {
      "Name": "Default",
      "BuiltIn": true,
      "Selected": true,
      "IsBookMarked": false,
      "KeyboardLayout": "Japanese",
      "GameControls": [
        {
          "$type": "Tap, Bluestacks",
          "Type": "Tap",
          "GuidanceCategory": "カテゴリ 1",
          "Guidance": {
            "Key": "中央をタップ"
          },
          "Key": "Ctrl + K",
          "IsVisibleInOverlay": true,
          "ShowOnOverlay": true,
          "X": 50.0,
          "Y": 50.0
        }
      ]
    }
  ]
}

このファイルを「<アプリケーションID>.cfg」という名前で以下のフォルダに保存すれば、キーマッピングを使えるようになります。
「/Users/<ユーザ名>/Library/BlueStacks/InputMapper」

上記の例だと、「command + K」に画面中央部のタップを割り当てています。
"Key"に修飾キーを設定する場合は、以下の書き方になります。

キー 書き方
command Ctrl
shift Shift
control LCtrl
option LAlt
マウス右ボタン MouseRButton

"ShowOnOverlay"にtrueを設定すると、 BlueStacksのメニューバーの「Actions」 > 「Toggle controls on game」でタップ位置の確認ができます。
また、設定ファイルを作ると、「Actions」 > 「Open keyboard controls UI」が有効になり、このウインドウからショートカットキーの編集を行えます。

ズーム

キーマッピングのもう一つの例として、ズーム操作(ピンチイン/ピンチアウト)を挙げてみます。

{
    "$type": "Zoom, Bluestacks", 
    "Type": "Zoom", 
    "GuidanceCategory": "ズーム", 
    "Guidance": {
        "KeyIn": "ズームイン", 
        "KeyOut": "ズームアウト"
    }, 
    "KeyIn": "Up", 
    "KeyOut": "Down", 
    "ShowOnOverlay": true,
    "IsVisibleInOverlay": true,
    "X1": 50, 
    "Y1": 40, 
    "X2": 50, 
    "Y2": 60, 
    "Speed": 10, 
    "Amplitude": 10, 
    "Acceleration": 10, 
    "Mode": 0, 
    "Override": true
}

この例では、矢印キーの上と下に拡大/縮小を割り当てています。
ただし、この方法ではズームの速度や距離の調整はできませんでした。"Speed"、"Amplitude"、"Acceleration"の値を変更しても、動作には変化がありませんでした。
そこで、もう少し細かくズームできるようにしたのが以下のコマンドです。

{
    "$type": "Swipe, Bluestacks",
    "Type": "Swipe",
    "GuidanceCategory": "ズーム",
    "Guidance": {
        "Key": "細かくズームインA"
    },
    "Key": "Left",
    "ShowOnOverlay": true, 
    "IsVisibleInOverlay": true,
    "X1": 50,
    "Y1": 40,
    "X2": 50,
    "Y2": 39,
    "Speed": 60,
    "Hold": false
},
{
    "$type": "Swipe, Bluestacks",
    "Type": "Swipe",
    "GuidanceCategory": "ズーム",
    "Guidance": {
        "Key": "細かくズームインB"
    },
    "Key": "Left",
    "ShowOnOverlay": true, 
    "IsVisibleInOverlay": true,
    "X1": 50,
    "Y1": 60,
    "X2": 50,
    "Y2": 61,
    "Speed": 60,
    "Hold": false
},
{
    "$type": "Swipe, Bluestacks",
    "Type": "Swipe",
    "GuidanceCategory": "ズーム",
    "Guidance": {
        "Key": "細かくズームアウトA"
    },
    "Key": "Right",
    "ShowOnOverlay": true, 
    "IsVisibleInOverlay": true,
    "X1": 50,
    "Y1": 39,
    "X2": 50,
    "Y2": 40,
    "Speed": 60,
    "Hold": false
},
{
    "$type": "Swipe, Bluestacks",
    "Type": "Swipe",
    "GuidanceCategory": "ズーム",
    "Guidance": {
        "Key": "細かくズームアウトB"
    },
    "Key": "Right",
    "ShowOnOverlay": true, 
    "IsVisibleInOverlay": true,
    "X1": 50,
    "Y1": 61,
    "X2": 50,
    "Y2": 60,
    "Speed": 60,
    "Hold": false
}

キーマッピングでは、複数のコマンドに同じキーを設定すると、それらは並列に動作します。この特徴を使い、2方向へのスワイプを同時に行うことにより、ズームを再現しています。

スクリプト

スクリプトを使う場合の書き方は以下になります。

{
    "$type": "Script, Bluestacks", 
    "Type": "Script", 
    "GuidanceCategory": "移動",
    "Guidance": {
        "Key": "キャラ移動"
    },
    "Key": "MouseRButton", 
    "IsVisibleInOverlay": true,
    "ShowOnOverlay": true, 
    "X": 20, 
    "Y": 20, 
    "Commands": [
        "onMouseMove",
        "dtouch x y x y+10",
        "onRelease",
        "abort"
    ] 
}

この例では、マウスの右ボタンを押しながらマウスを動かすことで、2本指スワイプを再現しています。

参考資料

キーマッピングスクリプトに関する公式の資料は以下がありました。
MacOS版-BlueStacksのキーマッピングメニューについて
BlueStacks 5 - 操作方法を作成/編集する方法
Bluestacks 5 - キーマッピングの詳細設定
BlueStacks 5 - スクリプトの使用方法

このほかにも、「/Users/<ユーザ名>/Library/BlueStacks/InputMapper」フォルダには様々なキーマッピングが保存されているので、これらも参考になりました。