

PCやPS4などUSBキーボードをサポートしている機器をwindows10とUSBケーブルで接続して操作するプログラムを作ろうと考えています。  
raspberry piやandroidで実現する記事は見つかるのですが、windows10で実現可能なのか否か書いておらず判断できない状態です。  
<https://superuser.com/questions/1128365/simulate-usb-keyboard-from-machine>

本家のドキュメントを読んだのですが、結局可能なのか判断できませんでした。  
<https://docs.microsoft.com/ja-jp/windows-hardware/drivers/usbcon/windows-10--
what-s-new-for-usb>

表題のアプリは作成可能なのでしょうか？  
参考になる記事やキーワードがあればご教示お願いします。


CC BY-SA 4.0
2020-08-30T06:27:38.917
69985
2022-05-29T10:56:35.787
2022-05-29T10:27:47.293
4236
38130
question
windows usb
windowsプログラミングでusbキーボードとして認識するアプリを作りたい


結果からいえばWindowsプログラミングでも努力次第で可能です。

仮想であれデバイスをPCで動作させるとなると少なくともドライバ開発が必要になります。  
それをPS4にキーボードとして認識させたいならUSBTypeCを使用しての仮想キーボードの実装となります。  
Windowsプログラミングの一種とも言えるような気がしますが全くの別世界であると認識するべきでしょう。  
主流な方法だとKMDFもしくはUMDFというフレームワークを使用し実装します。使用する言語はC言語/C++です（最近は改善されたかも知れませんが）。  
USBTypeCをどう実装するかはすみませんが私は知りません。

ドライバ開発は結構闇が深いです。教えてくれるブログも無く簡単に積みます。ドキュメントもさほど充実していないので本気でやるなら覚悟が必要でしょう。

参考：  
UMDF： <https://docs.microsoft.com/ja-jp/windows-
hardware/drivers/wdf/advantages-of-writing-umdf-drivers>  
USBTypeC： <https://docs.microsoft.com/ja-jp/previous-
versions/windows/hardware/drivers/mt805826(v=vs.85)>


CC BY-SA 4.0
2020-08-30T07:26:02.413
69986
2022-05-29T10:56:35.787
2022-05-29T10:56:35.787
3060
38351
69985
answer


USB は Host と Function で行うことが全く違う非対称システムです。 PC は原則ホストにしかならないので、キーボード
(=Function)
の役をやらせようとすると考えなければならないことが一気に増えます。それはすなわち必要とする前提知識が一気に増える＝技術的困難が増す、ってことになります。お試しで作ろうとするにはいささかハードルが高い（高すぎる）でしょう。

更に、技術的でないが障壁の高いところとしては、今の Windows 10 x64 (64bit windows)
においては「デバイスドライバ」にはデジタル署名が必須（＝購入しなければならない、つまり有償）であって、個人レベルで実用的なドライバ開発するのはいろいろと困難が伴います。

PS4 から見てキーボードとして振る舞う何かが欲しいのなら、オイラなら実際に USB Function
要するに「キーボードとして振る舞う装置」を作っちゃうでしょう。で、その装置は PC からの制御を受け入れる、すなわち PC
から見るとキーボードではない何かってことで。まあでも HID として実装してしまえば先ほど書いたデバイスドライバ開発が不要になり少し楽できます。 PC
から見ても PS4 から見てもどちらも USB Function として振る舞う装置を作るには USB Function の口が2系統あるマイコンを使えば
USB だけでいけますし、１系統しかなければ PC からの制御を受け入れる口は COM: ポートで作ることになりそうです。

物理装置を作るにあたってはその物理装置の知識だけあれば可能ですが、それを何か別のもの（まあこの例では PC
ですね）でシミュレート・エミュレートさせようとすると別の知識が必要になりもっとハードルが上がります。意欲は買いますが技術的にとても高いことにチャレンジしようとしているのだ、とだけは知っておいてください（オイラなら、業務ならやりますけど趣味なら手を付けません）


CC BY-SA 4.0
2020-08-30T08:35:17.023
69990
2020-08-30T08:35:17.023
8589
69985
answer