2

RAWINPUTには、キーの左バージョンまたは右バージョンが押されているかどうかを確認するための2つのフラグ(RI_KEY_E0および)があります。RI_KEY_E1これはCTRLには最適ですが、左右のシフトには適していません。実際、フラグは両方で同じであり、VKeyも同じです(VK_SHIFT)。どのシフトが押されたかをどのように知ることができますか?私はWindows7で作業しています。興味深いことに、フラグ/ vkeyの値は、どのShiftキーを押してもまったく同じです。

4

1 に答える 1

8

Windows 7、および私はVK_SHIFTのみを取得し、L/Rバリアントは取得しません

これは、これがあなたが思っているように機能しない理由の説明の一部です。この背後には古代の歴史があります。キーボードコントローラーは、IBM AT用に、また拡張キーボード用に再設計されました。キーボードレイアウトに追加されたキーの0xe0および0xe1プレフィックスの送信を開始しました。右のCtrlキーとAltキーのように。

しかし、キーボードには常に2つのShiftキーがありました。元のIBMPCは、それらを特別なキーとは見なしていませんでした。単に異なるスキャンコードを持っているだけです。これは後のアップデートで維持されました。したがって、それらのRI_KEY_E0またはE1フラグは取得されません。RAWKEYBOARD.MakeCode値で区別する必要があります。左のShiftキーのmakecodeは0x2a、右のShiftキーは0x36です。

左のCtrlキーとAltキーにもフラグがないことに注意してください。これらは、古いPCキーボードレイアウトの対応するキーと一致します。MSDNライブラリの記事のフラグの説明はあまり正確ではありません。

于 2011-05-07T12:01:22.600 に答える