実車レバーを取り付け後にFFBプラグインで問題が発生

どうも、け~えすです。

都合6回に渡った実車レバー取付記事ですが、何とか形になりました。
「やっとETS2で遊べるぜええええ!!!」 と思ったんですが、実際に使ってみるとなんか調子が悪いのです。

今回の問題はG27+FFBプラグインをお使いで、ETS2にG27以外で2つ以上のコントローラーと登録している人が対象になるかと思います。
FFBプラグインをお使いでない方や、G27+FFBプラグインで、コントローラーを1つのみ追加している人は発生しないと思います。

今回はハンコン改造後に出てきたFFBプラグインのトラブルと、その対処方法を書いていきます。



実際に何が起きたのか

私がETS2で遊ぶ時の環境ですが、まずハンコンでG27を使います。
それとETS2専用にスイッチボックスを以前作っており(記事リンク 一番下のおまけの部分)、今もそれを使っております。
これに今回のレバー取付でArduino ProMicroを使ってましたが、この組み合わせでFFBプラグインが正常に動かなくなりました。
この記事(記事へのリンク)を参照して下さると解りやすいと思います。
 
上記記事と同じ状況になってしまったと考えられます。 記事では追加コントローラーをXinputにすることで回避しましたが、今回はその方法がとれません。

スイッチボックスに使っている基盤が問題と仮定し、スイッチボックスにProMicroを使うことで回避しようと考えました。


次に問題となったのは、ProMicroを2個同時使用する事になったので、ETS2側で同じ名前のコントローラーが2個表示されてしまい、どっちがどっちのコントローラーかわからなくなってしまう事でした。

コントローラー名はWindowsのドライバで決められてしまうので、新たなドライバーを自分で作るしか方法がないみたいです。(何かいい方法があれば教えてください。)

この時はこの問題で頭がいっぱいでして、FFBの動作確認を行っておりません。

「しゃーない、別のコントローラーを使うか。」って結論に達し、Arduino Leonardoを追加購入し、そちらをレバー改造用に使うことにしました。

前回までの記事の通りに完成し、G27・ProMicro・LeonardoでETS2を遊ぼうとしたところ、FFBプラグインが正常に働かない問題が再発しました。

前のUSBコントローラーの問題じゃなかったのかよorz

確認不足でいらん手間とパーツを浪費した結果となりましたw

状況の再確認と対応策を考える

とりあえず現状を再確認してみます。

・G27+ProMicro+Leonardo FFBプラグインが異常動作する。
・G27+ProMicro        問題なし
・G27+Leonardo      問題なし

G27にUSBコントローラーを2個繋げるとダメっぽいです。
ProMicro+Leonardoでも普通に動くので、この2つ自体には問題はなさそう。
結局FFBプラグイン側の制御の問題っぽいので、現状ではUSBコントローラーを2個使わない方法を模索するか、FFBプラグインをあきらめるかの2択になりました。

ここで正直悩んで、FFBプラグインを諦める方向で考え始めました。
その時にふと思い出したのが、レバー取付でお世話になったNekさんのワイパーレバー動作の動画でした。

テキストエディタを起動し、レバーを動かすとUとDの文字を出力してました。
つまりUSBキーボードとして動作させていたわけです。

「コントローラーからキーボードへの変更はそんなに手間が掛からないから試してみるか」と思い、スケッチの手直しをすることにしました。

Leonardoをキーボードにしてみる

キーボード化は結構簡単に出来ました。 ArduinoIDEに元からついているキーボードライブラリを使用し、ボタン制御からキーボード制御に命令を書き換えるだけです。

その時にETS2のキー&ボタンを一旦初期化し、ウインカーとワイパーレバーで使うボタンをすべて割り出し、それに対応するキーコードも取得しました。
割り当ては以下の通り

ウインカー右 ] 0x5d
ウインカー左 [ 0x5b
ライトモード L 0x6c
パッシング  J 0x6a
リターダー 増やす ; 0x3b
リターダー 減らす : 0x3a (元はアポストロフィだったが変更)
エンジンブレーキ トグル . 0x2e(割り当てなしだったのでピリオドを割り当て)

下の2つ以外はETS2の初期割り当てのままにしております。 キーの後ろの0xはキーコードになります。

これをすべてスケッチで割り当てて、テキストエディタで文字を出力させてみたのですが、設定どおりに文字が出てきません。

ウインカー右をONにすると「[」が出力され、左をONにすると「+」が出力されます。
最初はキーコードの記述ミスとかを疑ったんですが、何度確認しても問題はありません。
レバーのほかの部分も試しましたが、すべてのキーが予定の文字を出力しません。

他にキーコードがあるのかと思って色々調べたいたんですが、「そういやAdruinoでエミュレーションしているキーボードの種類ってなんだ?」って疑問が出てきたのでそっちを調べたところ、101キーボードで動作する事が解りました。

ETS2はWindowsの設定されているキーボードの種類を判定して動作しているので、私の環境だと日本語109キーボードとして動作させないとダメみたいです。

さらに調べていると、日本語109キーボードのライブラリを公開しているところを見つけました。 メガギガテラスさんのこちらの記事になります。
ファイルではなくソースコードをそのまま公開されてますが、ソースをテキストエディタでコピーして保存すればそのまま使えます。
使い方などはメガギガテラスさんの記事を参照してください。

後はArduino標準のキーボードライブラリから日本語対応キーボードライブラリに変更するだけです。
キーコードはそのままで、日本語キーボードライブラリに変更した結果、こちらの予定していた文字を出力する事が出来ました。

完成したスケッチのダウンロードはこちら
(メガギガテラスさんの日本語キーボードライブラリは同梱されておりません。)
※19/04/07 20:30追記 スケッチに若干の記述ミスが見つかったので訂正した物をUPし直しました。それまでにDLされた方は再度ダウンロードをお願いします。

とりあえずテスト、そして使ってみる

スケッチを書きこんだら最初にシリアルモニタで動作確認をし、その後テキストエディタで文字入力を再確認してみましたが、特に問題はありません。
G27とProMicroとLeonardoをすべて動作させた状態でも、テキストエディタでは問題は出ませんでした。

最後に上記3つを動作した状態でETS2を起動してみましたが、FFBプラグインは正常に動作する事を確認できました。

その後知り合いのETS2配信にお邪魔して合計1000kmほど走ってみましたが、特に大きなトラブルはありませんでした。
これでトラブル対策も完了と致します。

最後に

きちんと使えるまでにすごく時間が掛かりましたが、何とか無事に終わらせることが出来ました。
FFBプラグインの問題は、USBコントローラーの追加で発生する事がほぼ間違えないと思いますが、最近はプラグインの更新も無いのでこの問題の対策がされるかどうかが解らない状態です。
FFBプラグインなしでのETS2はちょっと考えたくないって思うほど気に入っているソフトなんで、出来ればこのまま使い続けたいところです。

最後になりましたが、日本語キーボードライブラリを公開して下さっているメガギガテラスさんに改めてお礼申し上げます。 これが無かったらFFBプラグインを諦めるところでした。 本当にありがとうございました。


スポンサーリンク