2010-08-19 87 views
5

我正在使用RawInput來處理按鍵。我發現很難確定換檔是否與鑰匙一起按下。我如何知道使用RawInput是否按下了班次?

RawInputStructure - >RawKeyboard,我可以檢索被按下的鍵,但是我不確定如果同時按下鍵,怎麼辦。

RI.Data.keyboard.VKey(獲得的鍵碼)

我想爲每個用戶/鍵盤Shift鍵分開,因爲在那一刻,當一個用戶/鍵盤轉換所有的人都這樣做,同樣用大寫鎖定。同時打字變得非常麻煩。

如何知道換檔是否與另一個鍵一起按下?我是否正在尋找它在正確的結構或我應該看看其他地方?

回答

6

沒有這樣的事情,因爲兩個鍵被「同時按下」。一個人倒下,然後是另一個人。你應該分別得到每一個的通知。當按下或釋放移位鍵時,在程序中設置或清除標記以記住其當前狀態。

這實際上是操作系統已經爲普通的鍵盤輸入做了什麼。它保存一個鍵狀態映射並用每個鍵盤消息更新它。使用GetKeyState檢查最近要處理的消息的密鑰狀態,或使用GetAsyncKeyState在您調用該函數時檢查密鑰的狀態。 (如果鍵盤狀態發生了變化,但兩者可能會有所不同,但您尚未處理這些鍵盤消息,例如用戶輸入的速度比您的程序能夠處理的速度快。)

+0

但是,當我使用GetKeyState時,很難知道Shift來自哪裏(來自哪個鍵盤)。 :(我會考慮GetAsyncKeyState我還沒有使用過那個 – Dian 2010-08-19 04:08:37

+0

對不起,我不是故意建議你應該使用這些函數,我只是提到它們作爲操作系統已經提供的例子*普通* (非原始的)鍵盤輸入,但是你自己在做所有的輸入,所以你可以自己跟蹤事情的進展情況 – 2010-08-19 04:36:16

+0

好吧,謝謝你的澄清,我會試着實現這個標誌。 – Dian 2010-08-19 04:55:02

相關問題