複数キーボード対応 UnitID切り替えのタイミング変更
複数キーボードを接続した場合、WM_INPUT(raw_input)で、異なるキーボードデバイスからのキー入力情報であることが判明することを利用して、複数キーボード対応している。 しかし、のどかの場合には、デバイスドライバのレイヤ、LL Hookのレイヤのいずれでキー入力をフックして取り込んでも、WM_INPUTの情報では、Downのタイミングでは切り替わったことが判らず、結果的にUpのタイミングで入力されたキーボードが切り替わったになる。
従って、Key Downが入力されても、デバイス情報が取れるまで、Key Down出力を待たせるモードを実装することが考えられる。 なお、これを実装すると間違いなく、キー入力は遅延するだろう。
待っている間に、同じキーのUp/Downが有ったならば(Down/Downではリピート)、モディファイヤーを変えることは可能だろう。D- ダブルクリックとか。 ちなみに、4.20リリース前に、Window Messageのフックを用いて、WM_INPUTのレイヤーでもフックを試みたが、キー入力をうまく握りつぶすことが出来なかった。
4.22にて、ダミーのキーのDown/Upをデバイスドライバに送る def option FakeUp を実装した。 まだ、環境によっては、うまく行かないケースがある様子だが、OKな環境もある。 アプリによっては、E1-0x16を送ると、Uキーだと判断するものも存在する。
複数キーボードを接続した場合、WM_INPUT(raw_input)で、異なるキーボードデバイスからのキー入力情報であることが判明することを利用して、複数キーボード対応している。 しかし、のどかの場合には、デバイスドライバのレイヤ、LL Hookのレイヤのいずれでキー入力をフックして取り込んでも、WM_INPUTの情報では、Downのタイミングでは切り替わったことが判らず、結果的にUpのタイミングで入力されたキーボードが切り替わったになる。
従って、Key Downが入力されても、デバイス情報が取れるまで、Key Down出力を待たせるモードを実装することが考えられる。 なお、これを実装すると間違いなく、キー入力は遅延するだろう。
待っている間に、同じキーのUp/Downが有ったならば(Down/Downではリピート)、モディファイヤーを変えることは可能だろう。D- ダブルクリックとか。 ちなみに、4.20リリース前に、Window Messageのフックを用いて、WM_INPUTのレイヤーでもフックを試みたが、キー入力をうまく握りつぶすことが出来なかった。