我會試着更好地解釋我的意思,我也將盡力保持這個問題不受語言,如果有,雖然辦法做什麼,我想在C#中,而無需引用任何它會是不錯。不管怎麼說,如何獲得通過保持輪班獲得的字符?
我處理鍵盤輸入,並將其轉換爲字符串。一切都好。我得到了Shift和CapsLock鍵的狀態,然後EXOR它,以便我可以計算出結果字符串的外殼。
bool shift = KeyDown(SHIFT_KEY)
bool capslock = KeyToggled(CAPSLOCK)
bool stringCasing = shift^capslock //if both are true/false, the string will be lowercase. Otherwise uppercase.
foreach Key k in [list of keys passed as parameter]
char c = (char)k
if stringCasing
c = Char.ToUpper(c)
else
c = Char.ToLower(c)
end foreach
現在沒有問題。如果用戶在按住shift或切換大寫鎖定的同時鍵入「a」,則會變成「A」。
然而,如果用戶決定輸入「!」,這是「1」加shift我只得到1,因爲「1」大寫仍然是「1」。
我看着在網絡上有點問這個問題之前,但我得到的是「自己Map中的鍵」。這真的是唯一的答案嗎?而且,如果我映射鍵然後具有不同鍵盤佈局的用戶試圖使用我的應用程序會發生什麼? 在此先感謝。
你是怎麼處理鍵盤輸入的? KeyCode在事件處理程序中不可用嗎? –
我正在建立在XNA的輸入類上,它與PInvoking GetKeyState差不多。基本上,我可以訪問的是所有虛擬鍵及其相對狀態的列表。例如,我的KeyCode爲1,但不適用於! (承認它存在VK?) – KappaG3
這很難 - 這個線程可能會有所幫助,但它基本上是你說的話會在你的問題的情況下。你必須自己去做。不知道如何處理不同的鍵盤/佈局。 http://www.gamedev.net/topic/457783-xna-getting-text-from-keyboard/#entry4040153 –