現在、Atmelマイクロコントローラを使用しているUSB HIDキーボードで作業しています。すべて正常に動作していますが、私は通常異なるマシンで異なるキーボードレイアウトを使用します。今私はキーコードが常にすべてのマシン上の正しい文字にマッピングされるように、どのキーボードレイアウトにEN-USを使用するかをホストに伝えることができるかどうか疑問に思った。何か案は?USB HIDキーボードから言語レイアウトを送信
答えて
通常、USBキーボードには「キーボードレイアウト」という概念はありません。すべてのキーボードの同じ場所にあるキーは、レイアウト(EN、DEなど)に関係なく、同じメイク/ブレークコードを送信します。スキャンコードからchar/fuctionに正しい変換テーブル( - >キーボードドライバ)を提供するのは、ホスト内のキーボードドライバの仕事です。
マイクロで2つ以上の変換テーブルが必要な場合があります。また、マイクロに正しいテーブルを選択する方法を考えてください。
USBキーボードは、キーボード上のキーの物理的な位置を表すキーコードではなく、ASCII/Unicodeのキーデータを送信します。これはおそらくローカリゼーションの面では悪いことですが、これは90年代からのプロトコルであり、物事を単純に保ち、時間のPC/AT標準の考え方を保ちたいと考えました。
ハードウェアは、物理的なボタンに印刷されたレイアウトを実行できないという問題があります。できることは、ドライバのマッピングについてのヒントです。 USB HIDこの程度にUSBディスクリプタデータにbCountryCode
フィールドを定義(6.2.1条、P 22):ローカライズされたハードウェアの国コードを識別する
数値表現。
残念ながら、これは(同じ言語などのためのキーボードの変種の間には区別が)underspecifiedされていないので、ハードウェアメーカーはあまりこのフィールドを使用したことがない、彼らはほとんど常に、すなわちNotSupported
0x00
を置きます。ハードウェアはこれほど多くは使用されていないため、OSサポートは決して開発されませんでした。
例外は、ドライバにレイアウトを伝えるディップスイッチを持つSun/OracleキーボードのSolarisです。https://deskthority.net/wiki/Sun_Type_7#Dip_switches – jlliagre
- 1. stm32cube、usbホスト、hidマウス/キーボード
- 2. VB6からUSB HIDにアクセス
- 3. Android 2.2のHIDキーボード
- 4. HIDハンドシェイクをUSB
- 5. Android USB HIDデバイス
- 6. USB HIDマルチタッチシリアルレポート
- 7. iOS USB HIDプログラミング
- 8. キー42(USB HIDコード)
- 9. HID USBアクセスとlibusb
- 10. Eclipseキーボード言語
- 11. レポートIDを持つHIDでキーボード値を送信する方法は?
- 12. Windows USB HIDレポートの長さ
- 13. 高速なUSB HID出力
- 14. DATALOGIC USBのOEM HIDモード
- 15. 「ドライバレス」USB HIDの理解
- 16. キーボードのレイアウトが言語と入力に表示されない
- 17. MS Excelに重量を転送するHID USBスケールのプログラム
- 18. STM32f4 HID受信データ
- 19. USB HIDデバイスがキーボードをエミュレートしているときを検出する信頼できる方法
- 20. 異なるスレッド(C言語)からのUDPメッセージの送信
- 21. P/Invoke(Win32 API)と並行スレッドとのUSB HID通信
- 22. Debianの一般的なUSB HIDインタフェースからの読み込み?
- 23. USBドライブをC言語のLinuxでマウント
- 24. クライアント側のプログラミング言語でキーボード言語を変更
- 25. USB HIDデバイスへの書き込み
- 26. HID-USBデバイスとのC/C++インターフェイス
- 27. node.js USB(hid)バーコードスキャナ読み取りバッファ
- 28. LinuxのTIAM57xxのUSB HIDガジェット「g_hid」
- 29. Android USBホスト、3.2、HIDレポート取得/設定
- 30. 英語以外の言語でsmsを送信する方法
ハードウェアスイッチのような意味ですか?これについてまだ考えていない... –
2/4/8レイアウトをコード化できるハードウェアスイッチ(2-3ポートを使用するディップスイッチ)、または特別なキーの組み合わせ(Windowsでは{Left-ALT} + {あなたのソフトウェアが解釈して反応するように、Shiftキーを押してください。 – MikeD