
スティックから指を離さずに全てのボタンを操作可能なゲームパッドを作成した
アナログスティックから指を離さずに全てのボタンを操作可能なゲームパッドを自作しました。
きっかけ
PlayStationやPC/Xbox用のコントローラーのボタン配置は、サードパーティ製のコントローラーなどにも標準的に採用されていますが、これらのボタンの指への割り当ては親指に偏りすぎています。
$$
\begin{array}{|c|c|c|c|} \hline
\text{指} & \text{左キー} & \text{右キー} \\ \hline
\bold{親指} & \bold{アナログスティック/} & \bold{アナログスティック/} \\
\text{} & \bold{L3 } \text{(スティック押しこみ) /} & \bold{R3 /} \\
\text{} & \bold{十字キー 上 / 下 / 左 / 右} & \bold{A / B / X / Y} \\ \hline
\text{人差し指} & \text{L1 (バンパー)} & \text{R1} \\ \hline
\text{人差し指} & \text{L2 (トリガー)} & \text{R2} \\
\text{または中指} & & \\ \hline
\end{array}
$$
そのため、A / B / X / Y ボタンと右スティックを同時に操作することができず、十字キーを操作するには左スティックから指を離さなければなりません。
例えばアーマードコア6においてはリペアキットやスキャンが十字キーに割り当てられているため、左スティックで移動中にはそれらを行うことが出来ません。
右ボタンのジャンプと右スティックによるカメラ操作も同時にできないため、高いところの狭い足場へ上がる時などにジャンプ中にカメラを操作して足元を確認しながら着地することも困難です。
なのでアナログスティックから指を離さずに他のボタンを操作できるものが欲しいと考えました。
既存の回避方法
特異な持ち方
この問題をコントローラの持ち方で対処しようという試みが見られます。
「モンハン持ち」や「AC持ち」と呼ばれるものです。できれば無理な持ち方をせずに使いたいところ。
背面パドル
コントローラの裏側に2~4個のパドルを追加するオプションや、パドルを備えたコントローラが存在します。それでもアナログスティック以外の上面のボタンを全て代用するには至りません。
解決策
コンセプト
このコンセプトを考えた時は右側の改良のみを考えていました。右側のアナログスティックを親指で操作するのをやめ、フライトスティックのように腕(手首)で操作する形にしています。
これで右スティックを操作しつつ、右側前面ボタンが操作出来るようになります。
最終的なレイアウト
最終的には左側の十字キーもアナログスティックと同時に操作したいと考えボタン配置を変更しました。
人差し指・中指が担当するボタンが少ないので、背面のボタンを増やす方向にしました。
L3 は強い力でないと押せず使いづらいためこちらも背面に配置を変更します。R3 は右アナログスティックの構造を変更したことにより押せなくなったため同様に配置変更します。
また、アナログスティックがあるため十字キーを方向キーとして使用するゲームは少なく、これらを十字型に配置する必要性は低いと思われます。

上記が最終的な背面ボタンの配置です。従来バンパー(L1 / R1)が片側につき1つ配置されていたところを4つのボタンに変更しました。
ここに L1 / L3 / R1 / R3 / 十字キー 上 / 下 / 左 / 右 の8個を割り当てます。
横に隣り合うボタンは指の1節と2節の腹で押せるので一つの指で同時押しも可能です。
$$
\begin{array}{|c|c|c|c|} \hline
\text{指 / 手首} & \text{左キー} & \text{右キー} \\ \hline
\text{手首} & \text{-} & \text{アナログスティック} \\ \hline
\text{親指} & \text{アナログスティック} & \text{A / B / X / Y} \\ \hline
\text{人差し指} & \text{L1 / } \bold{十字キー 上} \text{ ※} & \text{R1 / } \bold{十字キー 右}\text{ ※} \\ \hline
\text{人差し指} & \bold{L3 / 十字キー 左} \text{ ※} & \bold{ R3 / 十字キー 下}\text{ ※} \\\
\text{または中指} & & \\ \hline
\text{中指または薬指} & \text{L2} & \text{R2} \\ \hline
\end{array}
$$
※:割り当て例。変更可
これで親指で操作するキーはアナログスティックかボタン4つのみとなり、他の指で操作するキーの数も指毎に最大4つ以下に抑えられます。
部品
Revive USB Advance
コントローラの中核となるモジュールには「Revice USB Advance」を使うことにしました。これによりアナログ6軸と15個のボタンをプログラム不要で実装出来ます。
REVIVE USB ADVANCE Configuration Toolソフトウェアを使うことでボタンの割り当てを任意に設定出来ます。
ボタン・センサ類
以下のボタン・センサを Revive USB Advance に接続しました。
$$
\begin{array}{|c|c|c|c|} \hline
\text{パーツ} & \text{数} & \text{} \\ \hline
\text{アナログスティック} & \text{2} & \text{} \\ \hline
\text{タクトスイッチ(12mm角)} & \text{12} & \text{右側ボタン(A/B/X/Y)/} \\
\text{\&キートップ} & \text{} & \text{バンパー(L1/L3/R1/R3/十字キー)用} \\ \hline
\text{タクトスイッチ(6mm角)} & \text{3} & \text{中央ボタン用} \\
\text{\&キートップ} & \text{} & \text{} \\ \hline
\text{ホール効果アナログセンサ} & \text{2} & \text{トリガー(L2/R2)用} \\ \hline
\text{コンデンサ} & \text{2} & \text{トリガー(L2/R2)用} \\ \hline
\end{array}
$$
トリガー用のセンサのみセンサのドキュメントの回路図に従いコンデンサを配置しています。
製作
筐体設計
ボディはBlenderで作成しました。サイズは縦幅・横幅共に既存のコントローラとほぼ同じです。

印刷
試作品を出力して強度の足りない部分やボタンの押しにくいところなどを確認し、形状を修正・再出力し干渉部分の修正などで計5回ほど出力し直しているはず。

配線
3Dプリンタで印刷した筐体にボタン・センサを取り付け全ての配線が終わった状態です。

ボタン・センサから伸びる全ての線が中央にある Revive USB Advance に繋がっています。左側のケーブルが若干長いですがなんとか筐体に収まりました。
完成
親指が担当するボタンが少なくなったことで上面はシンプルになりました。

十字キーと L3 / R3 が移動してきたことで背面のボタンは増えています。指の数を考えれば妥当な配置といえます。

使用感
ARMORED CORE VI
右側スティックはそのままカメラ操作に使用。
前述の問題が解決され、回避運動を止めずにリペアキットを使用したり、移動中にスキャンが出来るようになりました。ジャンプ中にカメラを操作して足元を確認しながら着地することも出来ます。
ボタン配置については手を自然に握った位置にボタンとトリガーが来るように配置したつもりなので、変に指を伸ばしたり曲げたりせずに複数のボタンに指が届いているように感じます。
ACE COMBAT 7
右側スティックを機体操作に割り当てて使用。
ボタンを多用するタイトルではないのでボタン配置の恩恵は特にないですが、手持ちのゲームパッド型コントローラでありながらフライトスティック的な操作感を得ることが出来ます。
まとめ
素人の手作りなので粗いところは多々ありますが、想定通りの動きが出来、なかなか良い感じに仕上がったと思います。
初めての使用感なので慣れは必要ですが、普段使いができそうです。
SIEなりMSなりがコントローラを改善してくれれば一番良いのですがね。