2012年4月2日月曜日

~XperiaとUSBホスト Part6~ USBゲームパッド編





今回は、Xperia とUSBゲームパッドを接続してみたいと思います。

Xperia の電源供給能力の都合上、振動機能の無いコントローラーが望ましいです。



さて、早速接続してみましょう。

すんなりと認識します。


ちなみに、振動機能付きコントローラーや、PS2コントローラー変換器などを接続すると、
「USBデバイスが大量の電力を消費しています」 と怒られてしまいます。
このエラーが表示された場合は、速やかにUSBケーブルを引き抜いて下さい。

キーコンフィグについては「続きを読む」から。





さて、一応このままでも使用できますが、やはりキーコンフィグ機能が無いと何かと不便です。

そこで、キー割り当てを変更してみましょう。


/system/ をいじるため、root必須です。



ESファイルエクスプローラーなどで /system/usr/keylayout/ を開き、 gamepad.gl を編集するだけです。
一度 microSD にコピーしてから編集し、そのあと system に書き戻すと良いでしょう。

gamepad.gl の中は
(キーコード)(割り当てる機能)(押した時にスリープ復帰するか)
の順番で記述してあるようです。

「WAKE_DROPPED」を消去すれば、間違えてコントローラーのボタンを押してもスリープから復帰するという事が無くなります。

「割り当てる機能」のコードについては、以下のサイトに詳しく書いてあります。
Androidでハードウェアキーを取得する方法(dispatchKeyEventとgetKeyCodeの使い方) | Tech Booster


とりあえずゲーム用にキー割り当てを変更。
# Generic game pad
key 0 BUTTON_A WAKE_DROPPED
key 1 BUTTON_B WAKE_DROPPED
key 2 BUTTON_X WAKE_DROPPED
key 3 BUTTON_Y WAKE_DROPPED
key 4 BUTTON_L1 WAKE_DROPPED
key 5 BUTTON_R1 WAKE_DROPPED
key 6 BUTTON_SELECT WAKE_DROPPED
key 7 BUTTON_START WAKE_DROPPED

以下略
それぞれのボタンに、Android 標準で用意されていたゲームパッドのコードを割り当てました。


また、以下のように書くことで、UI のほとんどの操作をゲームコントローラーで行うことができます。
# Generic game pad
key 0 DPAD_CENTER
key 1 BACK
key 2 SEARCH
key 3 CALL
key 4 VOLUME_DOWN
key 5 VOLUME_UP
key 6 HOME WAKE_DROPPED
key 7 MENU

以下略
A で決定、LR ボタンで音量調節、START でメニュー…などを割り当ててみました。
SELECT には HOME キーを割り当て、このキーだけでスリープ復帰するようにしました。
大画面テレビに接続した時などに便利かと思います。



さて、キーコンフィグも終えたので、ゲームで遊んでみましょう!
FPse for Android などのハードキー割り当て機能付きのエミュレーターがお勧めです。

初代 PlayStation の名作「チョロQ ワンダフォー!」も快適にプレイできます。
コントローラー的な意味でスーファミやれよって声も聞こえてきそうですが知りません(


というわけで、最後に一言。
Xperia PLAY とは何だったのか…

8 件のコメント:

  1. はじめまして。
    お聞きしたいのですが、エミュレーター側のハードキーの割り当てはエミュレーター起動時に毎回しなければいけませんか?それとも一度設定したゲームパッドはそのエミュレーターであれば接続後すぐに使用可能になるんですか?

    返信削除
    返信
    1. こんにちは。
      割り当ての件ですが、FPseの場合ですと
      ハードキーの割り当てを済ませてから、「MISC」→「Save config as default」を選択すれば、
      次回から同様の割り当てでゲームをプレイできると思います。
      ただ、他のエミュレータについては試したことがないのでわかりません。
      また、複数のコントローラーを差し替えて使う場合は、差し替える度にハードキーの割り当てをやり直す必要があります。

      削除
    2. 返信ありがとうございます。
      使用しているエミュレータで同様の機能があるみたいです。
      主様と機種もエミュレータも違うので動作の保障はわかりませんが、
      自己責任にてUSBゲームパッドを購入したいと思います。
      ありがとうございました。

      削除
  2. はじめまして。一つお聞きしたいです。

    microUSB-USBを変換するケーブルはaタイプbタイプがあると思うのですがどちらにすれば良いのでしょうか?

    初心者ですが宜しくお願いします。

    返信削除
    返信
    1. こんにちは。

      http://www.wakamesoba98.net/2012/03/xperiausb-part1-usb.html
      にも書きましたが、結論から言うと「micro-B」タイプを購入すれば大丈夫です。
      スマートフォンのmicroUSB端子の形状によっては、「micro-A」は刺さらない可能性があるためです。

      「micro-B」タイプのUSBホストケーブルには AD-USB18( http://amzn.to/Q1p9Wv )などがあります。

      削除
  3. こんにちは!
    この記事のような感じでマウスのキーバインドを変更することはできるのでしょうか?
    設定ファイルなど場所が分かれば教えてください!

    返信削除
    返信
    1. 返信が遅くなり申し訳ございません。

      /system/usr/keylayout/usb_mouse.kl

      を編集すれば、マウスのキー割り当てを変更することができます。
      (もちろんroot権限必須です)

      key 273 が右クリック、
      key 274 が中クリックにそれぞれ割り当てられています。

      ちなみに、左クリックとホイールへの割り当ては
      keypad.kl に書かれていないため編集することができませんでした。

      削除
    2. ありがとうございます!
      Nexus7を使っているんですが、そのklファイルがまずないんですよね。キーボードのバインドは変えれたのですがマウスのそれらしいファイルがなくて困ってます。機種によって違う感じでしょうか。現時点だとどのボタンも左クリックの動作になっていてただのポインタです笑

      削除