USBキーボードは信号を送信するだけですか、それともコンピューターからも受信しますか?


83

キーボードはコンピューターからの信号を必要とせず、電源を入れるだけですよね?または、信号を受信すると同時に送信する必要がありますか?

編集:私はこの質問がこれほどの関心を生み出すとは思っていませんでした!キーボードが同じ文字を2台のコンピューターに一度に送信できるように、信号を複製するdoohickeyを作成するという夢の夢を持っていたからです。(答えでわかることから)コンピューターは他のデバイスのようにキーボードを積極的に制御するため、これは明らかに不可能です。とにかくそれを構築するスキルがなかったので、大したことではありません!


40
たとえば、ロックキーのステータスを受け取る場合があります。多くのキーボードには、ロックキーの状態を示すLEDがあります。Caps Lockをオンにしてからキーボードを交換してみてください。おそらく状態はロックされたままです。この情報はPCから取得する必要があります。
マテユハス

8
PS / 2キーボードでさえPCから信号を受信します。それ以外の場合、どのようにLEDをオン/オフできますか?
phuclv

8
@Devsmanではできません。そうしないと、ソフトウェアで変更できるため、ロック状態が同期しなくなります。たとえば、2つのキーボードを接続し、これでnumlockを押すと、もう一方のLEDが切り替わります。オンスクリーンキーボードでも同じことが実現できます
-phuclv


7
USBデバイスには、特定のデバイスクラスを有効にするための初期ハンドシェイクの要件のために、双方向データが必要です。
スティーブ

回答:


101

ヒューマンインターフェイスデバイス(HID)のデバイスクラス定義」バージョン11.1仕様から:

LEDの状態とCAPS LOCK、NUM LOCK、SCROLL LOCK、COMPOSE、およびKANAイベント間の同期は、キーボードではなくホストによって維持されます。付録Bのキーボード記述子を使用する場合、LEDの状態は、Set_Report(Output)要求を介してキーボードに5ビットの絶対レポートを送信することにより設定されます。

キーボードのLEDを変更するには、キーボードでコマンドを受け入れます。したがって、「入力専用」デバイスではありません(つまり、ホストにデータを出力するだけです)。

そうは言っても、ホストとデバイス間のやり取りを必要とするすべてのUSBデバイスとのネゴシエーションと列挙プロセスがあります。「読み取り専用」USBデバイスは使用できません。

USBの前でさえ、PCキーボードコントローラーは、キーボードの読み取り以外にもいくつかのことを行っていたため、コマンドを受け入れます(参照)。

キーボードが独立した周辺システムユニットである場合(最新のデスクトップコンピューターなど)、キーボードコントローラーはキーに直接接続されていませんが、何らかのシリアルインターフェイスを介してキーボードに埋め込まれたマイクロコントローラーからスキャンコードを受信します。この場合、コントローラーは通常、ワイヤーを介してキーボードにデータを送り返すことにより、キーボードのLEDも制御します。

IBM PC ATは、Intel 8042チップを使用してキーボードに接続しました。このコンピューターは、Intel 80286のチップバグの回避策を実装するために、A20ラインへのアクセスも制御しました。1キーボードコントローラーは、CPUがプロテクトモードからリアルモードに移行できるように、ソフトウェアCPUリセットを開始するためにも使用されました。モード1 CPUはリセットされない限り、286はCPUがリアルモードにプロテクトモードから行くことができませんでしたので。BIOSとオペレーティングシステムサービスは、リアルモードのプログラムからしか呼び出せないため、これは問題でした。

これらの動作は、この動作を期待する多くのソフトウェアで使用されているため、キーボードコントローラーを介したリセットの必要性がIntel 80386の切り替え機能によって不要になった場合でも、キーボードコントローラーはA20ラインの制御とソフトウェアCPUリセットの実行を継続しましたCPUリセットなしの保護モードからのリアルモード。


15
列挙やLEDを忘れたとしても、「信号」レベルのことを話している場合、USB入力はポーリングに基づいています。ホストが要求しない限り、デバイスはホストに積極的にデータを送信できません。入力デバイスは非常に頻繁にポーリングされ、レポートする新しいものがあるかどうかを確認します。
マティバークネン

「出力のみ」という意味ですか?
ダニエル

キーボードは「入力」デバイスであり、「入力専用」とは、ホストにデータを送信するだけで、受信しないことを意味します。視点がキーボードかホストかによって異なります。
ローレンス

1
@Danielほとんどの人は、キーボードを「出力」デバイスとは呼びません。周辺機器は外部に接続されているため、PCの観点から見て、入力または出力と呼びます。それは、キーボード、マウス、またはその他の周辺機器ではなく、使用したいPCです
-phuclv

@LưuVĩnhPhúc私は知ってSo it is not an "input-only" device (meaning it only outputs data to the host)いますが、彼は私を混乱させると書いています
ダニエル

56

クラスに関係なく、USBデバイスが機能するには双方向通信が必要です。すべてのUSBデバイス(またはUSB仕様に関する機能)は、データを受信または受信するバッファーと考えることができるエンドポイントのセットとして表されます。ただし、データのみを送信できるエンドポイントでも、トークンと呼ばれる特別なパケットを待ってから応答できますここに画像の説明を入力してください

ここからの画像、灰色のボックスはUSBホストを表し、白いボックスはUSB機能を表します)

USBホストがトークンパケットを使用して接続デバイスをポーリングする、いわゆる割り込み転送もこの方法で行われます。通常の(バルク)転送と割り込み転送の違いは、ポーリング時間が短く、後者の場合に保証されることです。それでも、すべての転送はホストによって開始されます。


18

この質問は、キーが押された(またはマウスが移動した)ときにUSBデバイスが自分で何かをPCに「送信」するという一般的な誤解を反映しているため、非常に注目されています。実際、USBデバイスは、ホストからの対応する要求を受信するまで何も送信しません。1つの例外は、中断されたデバイスからのウェイクアッププロセスです。

USBは一見シンプルに見えますが、実際にはその機能は非常に複雑です。新しいUSBデバイスは、機能を開始する前に「列挙」する必要があります。シーケンスは次のとおりです。

  1. キーボードが差し込まれた後、ホストポートは「接続ステータス」信号を受信します(LS信号の場合、D-はキーボードによってHIGHにプルされます)。

  2. 次に、ホストはポートを「ポートリセット」モードに設定し、USB PHY(物理層ドライバー)は「USB_RESET」をD + / D-ラインに送信します(両方のラインが所定の時間ローに駆動されます)。FS / HSデバイスの「ポートリセット」に関する情報は、こちらにあります

  3. その後、ホストは1ms間隔でフレーム境界パケットの出力を開始します。通常の有線キーボードとしての低速(LS)デバイスの場合、これらは単なる「キープアライブ」パルスですが、FSの場合は特別なSOF-フレーム開始パケットが生成されます。これらのパケットは、デバイスをアクティブモードに維持し、低電力のサスペンド状態になることを防ぎます。

  4. その後、「列挙」が始まります。ホストは、デバイス記述子を取得する要求を送信します。要求は、デバイスアドレス「0」で「デフォルトパイプ」に送信されます。[現時点でこのようなデバイスは1つだけです-キーボード-バス上の他のすべてのデバイスには、個別に割り当てられたUSBアドレスが既にあるはずです]

  5. キーボードは要求された情報を返すため、ホストはどの種類のドライバーをロードするかを決定できます。

  6. ホストは、デバイスがデフォルトアドレスを新しい割り当てアドレスに変更することを要求するトランザクションを送信します。

  7. 次に、ホストは、新しい割り当てられたアドレスで、デバイスとの新しい通信ラウンドを開始します。他のすべてのデバイスは、この通信がそれらに宛てられていないため、この通信を無視します。

  8. ホストは、他のいくつかの記述子からより多くの情報を読み取り、最終的に「デバイス構成」を選択します。これで、列挙プロセスが終了します。

  9. USBデバイスクラスに応じて、ホストはデバイスとの通信を開始します。キーボードの場合、ホストは本質的に「IN」リクエストを定期的に送信し、本質的にデバイスをポーリングします(この定期的なパイプが「割り込み」パイプと呼ばれる場合でも)。キーボードのキーが押されている/押されていない場合、キーボードはこの情報を返します。そうでない場合、データはデバイスドライバーに返されません。

つまり、すべてのUSBデバイスはUSBホストから一意のアドレスを受け取る必要があり、2つのUSBホストはデバイスとの通信が困難になります。バスの衝突、アドレスの不一致、キープレスデータのランダムなインターセプトなどです。 2つのUSBホスト間のデバイス。


If keyboard has any key pressed/depressed, the keyboard will return this information-ゴーストキーはどのように発生しますか?私は...キーボードは、キーアップイベントを見逃してしまった場合は、ゴーストキーを持っているでしょう理由を説明するだろう、キーアップおよびキーダウンイベントを、送信しなければならないという印象の下にあった
シャドウ

2
@shadow、あなたは何について尋ねているのかわかりません。思い出すと、キーボードのポーリングレートは8ミリ秒です。キーを非同期で押しているため、一部のイベント(メイクまたはブレーク)が異なるポーリングフレームに入る可能性があり、一部のイベントはINリクエストの進行中に発生します。優れたキーボードコントローラーは、すべてのイベントクロッシングを適切に処理し、欠落しているイベントがないようにする必要があります。キーボードが「ゴーストキー」を生成する理由はわかりませんが、USBプロトコルとは関係ありません。
Ale..chenski

4
ゴーストキーは、物理キーの配線方法に関連しています。安価なキーボードコントローラーは、キーごとにピンが1つではなく、コントローラーが列線をアサートし、行線の信号を探す行や列などのアドレス指定のグリッドシステムを備えています。このシナリオでは、2つのキー、たとえばEとSを同時に押すことは、タイミングを除き、WとDを押すことと区別できない場合があります。
ベン

2

他の回答で説明したように、USBは動作する方法の一部として双方向通信を必要とします。PS / 2は、双方向通信を可能にしますが、コンピューターにキーを送信するためにそれを必要としませんが、キーボードLEDを設定するためにそれを必要とします。

理論的には、PS / 2信号を複製して2台目のコンピューターに送信するデバイスを構築し、コンピューターからのコマンドを破棄することができます。そのため、キープレスを複数のコンピューターに送信できますが、キーボードのLEDは送信されませんnumロック、capsロック、およびスクロールロック状態に応答します(または、LinuxでのLED状態のその他の変更。たとえば、キーボードLEDは代替の目的で使用されることがあります)。

このようなプロジェクトがどれほど複雑になるかはわかりません。PS / 2で作業してからしばらく経ちました。そのため、単純に2本のワイヤ/コネクタをブリッジできるのか、それとも一方向にコマンドを渡して破棄するのにアクティブなデバイス(マイクロコントローラなど)が必要なのかわかりません他の。マイクロコントローラをお持ちの場合は、キーボードLEDコマンドを解釈して表示用に「組み合わせる」ことができるようにデバイスを作成することもできます(たとえば、コンピュータ1でオンになっているがコンピュータ2でオフになっている場合はLEDを長く点滅させ、短いフラッシュを点滅させます)コンピューター2で点灯し、コンピューター1で消灯している場合はLED、両方のコンピューターで点灯している場合はLEDが点灯し、両方のコンピューターで消灯している場合はLEDが消灯します)。しかし、それはより高度になります。

また、目的が1台のコンピューターを別のコンピューターから、または2台のコンピューターを同じデスクから、または何でも制御できるようにすることである場合、以下を調べてください。

  • VNC(ネットワークを介して、あるコンピューターを別のコンピューターから制御できるようにします)
  • RDP(Microsoft Windowsに組み込まれているネットワーク経由で1台のコンピューターを別のコンピューターから制御することもできますが、Professionalバージョンが必要です)
  • KVM(1台の周辺機器を2台のコンピューター間で切り替えることができるハードウェア)

1

USBキーボードの前は、PS / 2キーボードははるかに単純なプロトコルを使用しており、1つのキーボードを2つのデバイスに接続して動作させることができました。必要なのは、単純なY接続だけです。

古いUSBキーボードには、引き続きPS / 2エミュレーションモードが組み込まれています。これらの紫色のコネクタアダプタのいずれかを使用すると、コンピュータの背面にあるPS / 2ポートに接続できます。したがって、2台のコンピューターでUSBからPS / 2へのブレイクアウトケーブルを使用してから、紫色のアダプターをUSBキーボードに戻すとうまく機能する場合があります。

新しいUSBキーボードはレガシーPS / 2モードを削除したため、この場合は機能しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.