こんにちは。月藤もりです。
Sun Havenというゲームを始めたものの、コントローラー対応がいまいちしっかりしておらずストレスだったので解決しました。
ほかのゲームでも、「公式でコントローラーに対応しているが対応具合がいまいちで、ヘタに対応してある分単純にキー割り当てができない」という場合には有用な内容になるかと思います。
コントローラー非対応のゲームならJoyToKeyのみで対応できます。
「JoyToKey」と「HidHide」というソフトを使います。
自分の環境がWindows11なのでその前提で書いていきます。
JoyToKey公式ページ:JoyToKey 公式ホームページ - 最新版をダウンロード
HidHide公式ページ(GitHub):リリース · nefarius/HidHide
一応、SunHavenにはコントローラー認識を無効化するMod(HidHideと同じ機能)があるのですが、日本語化の影響かわかりませんがうまく動作しなかったのでHidHideに頼った次第です。
ただこのModの存在そのものと、ModページのHidHideに言及するコメントから本記事の方法を知れたので感謝です。
Sun Haven Nexus のコントローラー ディアクティベーター - Mods とコミュニティ
余談ですがSun Havenはファンタジー版のスタデュみたいでよさげ(プレイ時間浅い)なのでぜひ。
レビューにある翻訳ガバ問題はアプデでほぼ気にならなくなっています。
Sun Haven販売ページ:Steam:Sun Haven
仕組みと各アプリの説明
まず、本記事の手順で何ができるのか、どうやって実現するのかについてです。
やりたいのは以下。
- コントローラーでまともに遊べるように、コントローラーのキー割り当てを設定する(JoyToKey)
- そのままだとゲーム側で公式のしょぼコントローラー操作が優先されてしまうので、コントローラーを認識しないようにする(HidHide)
ここからそれぞれ詳しく解説していきます。
JoyToKeyでキー割り当て
JoyToKeyはかなり有名なソフトでもあるので、ググると詳しい情報がたくさん出てきます。
どんなソフトかというと、コントローラーの操作をキーボード操作に変換してくれます。
つまり、コントローラーのAボタンを押したらPCはキーボードのスペースキーが押されたと認識する、みたいな設定ができます。
インストール~基本的な使い方
まずはインストールしてください。
JoyToKey 公式ホームページ - 最新版をダウンロード
インストールできたら、使いたいコントローラーを接続したうえで、JoyToKeyのウィンドウを開きます。
↓設定画面
おそらくゲームごとに設定を作るのがいいと思うので、まず左下の「新規作成」から設定ファイルを新規作成します。
画像で言う左側にある「最初の設定」とか「sun haven」のような設定ファイルを作成でき、設定したキー割り当てを瞬時に、あるいは自動でまるごと切り替えられるので便利です。
次にキー割り当て。
コントローラーを操作してみると押したボタンやスティックに該当する項目が黄色でハイライトされます。
Aボタンを押してみて、Button1が光ったから、Aボタンに割り当てたいspaceキーをButton1に割り当てる。
これを繰り返します。
マウスの移動やスクロールも設定可。
「ボタン割り当ての変更」機能
あと地味に有用なのが「ボタン割り当ての変更」です。
これはコントローラーのボタン同時押しで全く別のキーを呼び出せるというもの。
ボタンの少ないコントローラーの救世主。
↓「Options」タブから「ボタン割り当ての変更」を選択。
左側の一覧で使っていない(コントローラーに存在しない)ボタンを選び、右側で同時押ししたいボタンを選択する。
その後他と同じようにキーを割り当てる。
上記画像の例でいうと、使っていないButton17に、Button5(LBボタン)とButton7(Xボタン)を割り当てており、その後Button17にキーボードのLキーを割り当てています。
これでLBとXの同時押しでLキーの判定になります。
「アプリケーションとの関連付け」で自動切換え
これを設定しておくことで、JoyToKeyの起動中なら自動でゲームにあわせた設定ファイルを適用してくれます。
上部リボンの「設定」から「アプリケーションとの関連付け」を選択。
「追加」からちょちょいと設定するだけです。
これでJoyToKeyでのキー割り当ては完了!
HidHideでコントローラー無効化
ここからはHidHideの設定に移ります。
そんなに難しいことはないのですが日本語の情報がほとんど皆無なので、このセクションを書くためにこの記事を書いているような感じです。
まず、JoyToKeyの設定だけした状態でゲームを起動すると、(コントローラー対応のゲームなら)公式のコントローラー認識が優先されるのでJoyToKeyの設定は全く反映されてくれません。
そこでHidHideを使って、コントローラーをゲームに認識させないようにして、JoyToKeyからの信号だけを受け取ってもらうようにします。
まずはインストール。
HidHide公式ページ(GitHub):リリース · nefarius/HidHide
インストール後にPC再起動までしたら、インストールした「HidHide Configuration Client」を起動します。
めちゃくちゃ簡素な画面。
Applicationsのタブで、適用する/しないアプリを設定。右下の+と-からアプリを追加・削除できます。
Devicesのタブで、無効化するコントローラーを選択。
Applications
Applicationsタブはデフォルトだとホワイトリストになっているので、リストにあるアプリには無効化が適用されず、それ以外のすべてのアプリに適用されます。
ただ、私のように「ほとんどのゲームは普通にコントローラー使うけど一部のアプリだけJoyToKeyにしたい」みたいな場合は「Inverse application cloak」にチェックを入れます。
そうすると逆転してブラックリスト扱いになり、リストにあるアプリにだけ適用するようになります。
ホワイトリストで使う場合:
リストにないアプリにはすべてコントローラーが効かなくなってしまうので、HidHide自身とJoyToKeyは絶対にリストに入れておいてください。ブラックリストで使う場合:
JoyToKey経由で操作したいゲームをリストに入れてください。
HidHideやJoyToKeyはリストに入れないでください。(もともと入っていたりしたら削除)
Devices
接続しているコントローラー一覧が表示されます。
設定したいコントローラーを接続しておいてください。
デバイスにチェックを入れると、鍵アイコンが赤くなり、無効化するデバイスの対象になります。
- 「Filter-out disconnected」は、接続解除されているデバイスを表示するかどうからしいです。特に変更しなくてもよし。
- 「Gaming devices only」をオフにすると、コントローラー類だけでなくキーボードやマウスも一覧に出ます。今回の用途では不要。
- 「Enable device hiding」にチェックを入れると、コントローラーの無効化がオンになります。
対象のアプリやデバイスを設定出来たらチェックしてください。
動作がおかしかったり設定を見直すときはオフ。
これで設定完了です。