Xbox Adaptive Controllerのアップデート
Xbox Adaptive Controllerのボタンが、キーボードのキーにマッピングできるようになるそうです。今はまだ Insider Program のユーザーのみが対象で、全ユーザー向けには追って公開になるみたいです。これは楽しみ。
個人的にはAdaptive HubのほうをXboxで使えるようにするのもやってほしい。
news.xbox.com
Xbox Controllerのふりをするスイッチインターフェース
ゲーム関連はXbox Adaptive Controllerのおかげで何不自由していませんが、あの大きさは出先に持っていくには難ありです。検査入院とかで病院でNintendo Switchをやろうと考えた時に、あれを持っていくのは少し気が引けます。そこで、ArudinoにXbox Controllerのふりをしてもらうことにしました。
回路自体は以前作ったこちらと同じで、今回はXInputライブラリを使ってArduinoにXbox 360 Controllerになってもらいます。
jagaimolog.hatenablog.jp
今回のスケッチはこんな感じ。カプセル化とかDRY (Don't Repeat Yourself) とか全無視のベタベタコードです。
XInputライブラリを使うときは、あわせてXInputに対応するボードもArduino IDEにインストールする必要があります。私が使っているArduino Microであれば、ArduinoXInput_AVRをインストールします。実はこれが曲者で、一度スケッチをアップロードすると、それ以降そのArduinoはXbox 360 Controllerのふりをするので、Arduino IDEから見えなくなってしまいます。対処方法はリンク先にも書いてあるのですが、次回以降スケッチをアップロードするときは、アップロードが始まったらすぐにArduinoのリセットボタンを2度押しします。
MAGIC-NS経由でNintendo Switchに接続して動作確認したところ、問題なく機能しているようでした。
youtu.be
Microsoft Adaptive Joystick Button
Microsoft Adaptive Hubを入手
秋にMicrosoftから発表されていたAdaptive Hubが発売されたので、さっそく調達しました。12月6日にMicrosoft Storeで注文して、翌日の7日に発送・当日着というスピード配達でした。
見た目はこんな感じです。同じシリーズのマウスやジョイスティックも接続できるみたいですが、うちはタッチセンサー一択なので、3.5mmジャックを使います。3.5mmジャックは5個ついています。
Bluetooth接続自体は、Windows/Mac/iPad/iPhone/Androidなんでもできるみたいですが、設定はWindowsを使ってやる必要があるようです。Microsoft Storeから、Microsoft Accessory Centerというアプリをダウンロードして使います。画面は下のような感じ。このアプリで、3.5mmジャックごとに処理を割り当てることができます。添付画像のケースだと、1番目と2番目に、それぞれEnter押下とSpace押下を割り当てています。一度Windowsで設定してしまえば、あとはiPad等のほかのデバイスでも使えるみたいです。
同じようなインターフェース装置をArduinoで自作していましたが、レスポンスがいいし画面からカスタマイズできるので、こちらの方が全然良いです。こういったニッチな装置を比較的廉価に提供してくれるのは本当にありがたいことです。マイクロソフトは、ナデラCEOになってから本当にアクセシビリティに力を入れてくれていますね。しかもそれを本国の米国だけでなく、グローバルに展開してくれている。感謝、感謝です。
[2023/1/15 追記]
その後、結構残念なことが判明しました涙。iPadに接続はできて、アプリで設定した通りの動作をさせられるのですが、なんとBluetoothで接続した場合、スイッチコントロールで使えないようです。こことかここでも報告があがってました。有線接続だと使えるみたいで、Youtubeで設定方法をアップしている方がいました。
ちなみにAndroidではスイッチコントロールも使えました。iPadの問題なのか、Adaptive Hubの問題なのかわかりませんが、ファームウェアのアップデート等でなんとかしてもらいたい・・。スイッチコントロールを独自に組み込んでいるアプリだとBluetooth接続でも使えるので、iOS側の問題なんでしょうか。
Xbox Adaptive Controller用のジョイスティックを試作
Xbox Adaptive Controllerは、外部のジョイスティックを接続することができます。冒頭の写真のUSB端子もその一つで、こちらは製品仕様のページやサポートページにも書いてあるし、サムスティックのシルエットでR/Lと書いてあるのですぐにわかります。でも実はもう1セット、ジョイスティック入力を受け付ける端子があります。下の画像で赤枠で囲ったX1とX2です。
このX1とX2は、普通のスイッチを接続して、A/B/X/Yなどのいずれかのボタンに割り振ることもできますが、4極の3.5mmプラグをつなげると、ジョイスティックとしての入力を受け付けます。ジョイスティックって、要は2つの可変抵抗器なのです。そしてMicrosoftが公開している Xbox Adaptive Controller Input Device Specifications という資料を読むと、どの端子に何を接続すればよいかがわかります。資料は下のリンクから入手することができます。
https://support.xbox.com/en-US/help/account-profile/accessibility/xbox-adaptive-controller-input-device-specification
息子はジョイスティックなりサムスティックなりを動かす力は残ってないので、操作はまず無理なのですが、ものは試しということで、1つ作ってみました。
作るといっても、市販のサムスティックと4極ジャックをケーブルでつなげるだけです。今回もマルツオンラインで部品を調達しました。
はんだ付けしてできたのがこちらです。
さっそくX1に接続して動作を確認したところ、きちんと左のサムスティックとして機能していました。ただ、利用したブレークアウトボード(上にリストアップした調達部品の2つめ)は、Y軸が反転しているため、通常のコントローラーについてるサムスティックと同じ操作方法を得るには、このブレークアウトボード抜きで実装したほうがよさそうでした。もしくは、XとYの接続を入れ替えて、90度回転させて使うといいかも。
新そよゲット
去年くらいに出ていた、新しいそよ、我が家もようやくゲットしました。前回の新そよがだいぶ期待外れだったので、今回は見送っていたのですが、旧そよ3台も使い込んでだいぶヘタってきたので背に腹は代えられないということで。
息子氏の身長的に、新しく出ていたミドルサイズにも心惹かれましたが、取り回しの良さを優先してハーフサイズをチョイス。届いて実物を見たら、前作の不満ポイントが改善されていてだいぶ良い感じ。ファンのパワーが増したのと、横幅が急そよに戻った、そして厚みが前作に比べてだいぶ減りました。ただ、引き続き内部の部材はスパゲッティ状のクッションで、これはほんと旧そよに戻してほしい。
スパゲッティクッションは、案の定へたりやすいみたいで、数日使ったら息子の体にあわせてへこみができていました。こうなると姿勢が悪くなって換気量に影響があるので、悩ましいところです。でもまあなんとか使えそうなので、メーカーさんに(旧そよの再販を祈念しつつ)あらためて感謝です。
atexdirect.jp
タッチセンサーのスケッチを見直し
ピエゾスイッチは動作が安定してて良いのですが、端子部分が消耗品であることと、長押しができないことから、ひきつづきタッチセンサー式も使っています。タッチセンサースイッチは主にゲーム用途です。
なのですが、タッチセンサーはどうかすると、感度が不安定なって誤動作が起きてしまう。そこでスケッチを見直して改善を図ってみました。今までは、閾値を超えたらONとみなし、その後一定回数はON/OFF判定しないとしていましたが、閾値を超えたら、その後も2回連続で閾値をこえた場合にONとみなすようにしました。OFFの判定も同様です。
今回もいちおう動いていますが、やはりどうかすると不安定になってしまいます。どうも、センサーのケーブルがループを描いていたり、電磁波を発するものや、電流の流れる/電圧のかかるケーブル類を近くに置いておくとダメみたいです。Xboxの近くは全然だめで、Nintendo Switchの近くは比較的大丈夫だったりするようです。
今後使うときは、電子機器類からなるべく遠ざけたり、ケーブルの取り回しに気を付けてみよう・・。
ということで、翌日さっそく息子氏に使ってみたところ、ケーブル取り回しや電源の取り方に気を付けた効果もあってか、すこぶる安定していました。ついでにセンサーの固定方法も見直して、クランプで固定するようにしました。