同じマシンに 2 つの USB キーボードを接続しています。私はJavaアプリケーションを開発しています。JavaアプリケーションがどのUSBキーボードから来たのかを分離できるようにする方法はありますか? (つまり、 http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.htmlのようなものがありますが、USBパラメータを使用して、どのUSBデバイスから来たかを知ることができますか?)
ありがとう!
同じマシンに 2 つの USB キーボードを接続しています。私はJavaアプリケーションを開発しています。JavaアプリケーションがどのUSBキーボードから来たのかを分離できるようにする方法はありますか? (つまり、 http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.htmlのようなものがありますが、USBパラメータを使用して、どのUSBデバイスから来たかを知ることができますか?)
ありがとう!
これは、Javaだけでは不可能です。
ただし、キーボードのキーを再マップできるサードパーティのツールがあります。HIDマクロは1つのアプリケーションです。ただし、キーを押した場合にのみ機能し、キーアップおよびキーダウンイベントでは機能しません。これは有用性を制限しますが、ユースケースには十分かもしれません。
さらに深く掘り下げたい場合は、WindowsでRAW入力APIを使用して必要な処理を実行する必要があります。正しいAPIの使用法に光を当てる複数のキーボードを処理するためのC#からのRaw入力の使用というタイトルのコードプロジェクトには、すでに良い例があります。
この質問は古いものなので、ここで答えるには遅すぎるかもしれません。しかし、同じ要件を探していたときにここに誘導されたので、同じ要件の助けを求めて、将来ここに誘導される人々の助けのために、別のスレッドで見つけた解決策について言及します. @nan は java-hid-api を使用してこれに対する解決策を提供しており、彼の答えはこちらで見つけることができます。彼はまた、ブログでそれを行う方法について明確で段階的な投稿を書いています。
HIDManager
ただし、これを試したことはありますが、パスまたは ID で HID を開こうとすると null が返されるため、まだ成功していません。open()
を使ってみても同じHIDDeviceInfo
です。この問題はJava hid api ページにも記載されていますが、これまでのところ誰も実用的な解決策を提供できていないようです。したがって、この問題を回避できた人がいる場合。共有してください。