RealForceがドライバーエラーで認識しないので自作スクリプトで認識させた

RealForce(SJ08B0)キーボードをPCに接続して起動するとドライバーエラー(デバイスマネージャーで黄色三角の警告マーク)が発生し、キーボードが認識しませんでした。

この問題の解決方法は2つあります。

1. 「デバイスマネージャーからドライバーの無効化を行った後、再度有効化する」
2. 「USB2.0のハブを使用する」
この記事では1. の方法を紹介します。なお、この方法には管理者権限が必要です。

1.バッチファイルを作成

「ドライバーの無効化→再度有効化」を自動化するためのバッチファイルを新しく作成します。

メモ帳など任意のエディタで以下をコピー&ペーストし、「usb.bat」というファイル名で保存してください。なおペースト時、ダブルクォーテーションが半角になっているか確認してください。全角に変わる時があります。

@set DEVCON="C:\batch\activate\devcon.exe"
%DEVCON% disable "USB\VID_0853&PID_011D&REV_0001"
%DEVCON% enable "USB\VID_0853&PID_011D&REV_0001"

このバッチファイルを「C:\batch\activate」に移動します。C:\に新しく「batch」フォルダを、batchフォルダの中に「activate」フォルダを作ってください。

バッチファイルの説明ですが、DevKitというツール?から、RealForceのハードウェアIDに紐づけられたドライバーを2行目で無効化にして3行目で再度有効化しています。
"USB\VID_0853&PID_011D&REV_0001"がRealForceのハードウェアIDになります。私と同じRealForceの型番(SJ08B0)の場合は同じだと思います。違う型番の場合は、デバイスマネージャーからハードウェアIDの確認をして、"USB\VID_0853&PID_011D&REV_0001"の部分を自分が使っているキーボードのハードウェアIDに書き換えてください。

2.WDK, Visual Studioのインストール 

WDKをダウンロードし必要なファイルを抜き出して、1. で作成したバッチファイルと同じフォルダ内に置きます。

Visual Studioのインストールがされていない方はここでVisual Studioのインストールもします。Visual StudioWindowsのバージョンによって必要なものが異なるので、以下のページを参考にVisual Studioのインストールを進めて下さい。

learn.microsoft.com

WDKをダウンロードして、必要なファイルを抜き出します。

上記URLからWindowsのバージョンにあったWDKをダウンロードし「wdksetup.exe」を実行します。チェックボックス「Download the Windows Driver Kit~~」を選択し、適当なフォルダを指定します。

インストールが完了したら、上で指定した適当なフォルダの中の「10」→「WDK」→「Installers」の中にcabファイルがたくさんあります。この中の「787bee96dbd26371076b37b13c405890.cab」をコピーして、「C:\batch\activate」(1.のバッチファイルを置いているフォルダ)にペーストします。

ペーストしたファイル名を「787bee96dbd26371076b37b13c405890.cab」から「devcon.exe」に変更します。これでファイルの準備は完了です。

このファイル以外は使わないため削除してOKです。

 

以前にWDKをインストールしてdevcon.exeの場所も分かる方はこの手順を飛ばし、1.のバッチファイルの1行目の

@set DEVCON="C:\batch\activate\devcon.exe"

の部分をdevcon.exeが配置してある場所に変更してください。

3.バッチファイルを管理者権限で実行

1.のファイルを管理者権限で実行するためのスクリプトを作成します。任意のエディタで以下をコピー&ペーストし「psusb.bat」というファイル名で 1. で作成したusb.batと同じフォルダに保存してください。 

powershell start-process .\usb.bat -verb runas

「psusb.bat」をダブルクリックで起動するとRealForceが認識するようになれば、正常に動作しています。

できない場合は

- パスの確認

- バッチファイルのプログラムに余計なスペースが入っていないか

- バッチファイルのダブルクォーテーションが半角ではなく全角になっていないか

などを確認してください。

 

4.タスクスケジューラの設定

毎回psusb.batを起動させるのは面倒なので、PC起動時にpsusb.batを起動させる設定をします。Windowsの「タスクスケジューラ」を起動し、左ペインの「タスクスケジューラ ライブラリ」→ タスクバーの「操作(A)」→「基本タスクの生成(B)...」で基本タスクの作成ウィザードを開きます。

適当なタスク名、説明を入れて、次へ。

「コンピュータの起動時」を選択して次へ。

「プログラムの開始」を選択して次へ。

「参照...」から3.で作った「C:\batch\activate\psusb.bat」を選択して次へ。

「完了」を押すとタスクスケジューラに登録されます。

 

ですがこのままだと自分の環境だと動かなかったので、いくつか設定をします。

登録したタスクを右クリックして「プロパティ(P)」をクリック、ウィンドウが開きます。

「全般」タブの「セキュリティオプション」欄の「ユーザーまたはグループの変更」ボタンをクリック。

「選択するオブジェクト名を入力してください」の欄に自分のアカウント名を入力して、「名前の確認」押すと「自分のアカウント名」だけだったのが、「自分のPC名\アカウント名」に代わるので、この状態でOKを押します。

同じくセキュリティオプションの「ユーザーがログオンしているかどうかにかかわらず実行する」、「最上位の特権で実行する」にチェック。最終的には以下のような設定になれば全般タブはオッケーです。

f:id:take_matsu:20200729193255p:plain

「全般」タブ最終設定画面

次に同じウィンドウの「操作」タブにいき、登録されてる項目をダブルクリックしてウィンドウ開き、開始(オプション)にそのバッチファイルのパスを入力する(C:\batch\activate\psusb.batなら、C:\batch\activate\)。以下のような画面になるはず。

f:id:take_matsu:20200729193709p:plain

「操作の編集」ウィンドウ最終設定画面

最後に「条件」タブの「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックを外して、「OK」。パスワードを入力して、設定完了です。

 

 

参考URL:

https://i-think-it.net/windows-taskschd-error-6/

https://ameblo.jp/kazupon43/entry-12441089047.html

 

これですべて完了です。
動作確認のため再起動をすると、ログイン画面が開いた後15秒~1分経つとRealForceが認識するはずです。

 

 

2020/7/29 参考サイトが403になってる & WDKのバージョンが変わってたので訂正したりちょっと丁寧にしました。
2022/12/27 文章を全体的に直しました
2022/5/14 文章を全体的に直しました