나는 무엇을 의미하는지 더 잘 설명하려고 노력할 것이고, 나는 또한 언어에서 자유로운 질문을 유지하려고 노력할 것이다. 비록 내가 C#에서 원하는 것을 할 수있는 방법이 있다면, 아무 것도 언급하지 않고도 좋을 것이다. . 어쨌든 .Shift 키를 누른 상태에서 char을 얻으려면 어떻게해야합니까?
키보드 입력을 처리하고이를 문자열로 변환하고 있습니다. 괜찮아. 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
그리고 지금은 문제가 없습니다. 사용자가 시프트를 유지하거나 캡슐 잠금을 전환 한 상태에서 "a"를 입력하면 "A"가됩니다.
그러나 "1"대문자가 여전히 "1"이기 때문에 사용자가 "1"과 시프트를 입력하는 "!"을 입력하면 1을 얻습니다.
이 질문을하기 전에 웹에서 약간 보였지만 "지도를 직접 작성"하는 것이 전부였습니다. 그게 유일한 대답입니까? 또한 키를 매핑 한 다음 다른 키보드 레이아웃을 가진 사용자가 응용 프로그램을 사용하려고하면 어떻게됩니까? 미리 감사드립니다.
어떻게 키보드 입력을 처리합니까? 이벤트 핸들러에서 KeyCode를 사용할 수 없습니까? –
PInvoking GetKeyState와 다소 비슷하게 XNA의 입력 클래스를 구축하고 있습니다. 기본적으로, 내가 접근 할 수있는 것은 모든 가상 키와 그 상대적인 상태의 목록입니다. 예를 들어, 1을위한 KeyCode가 있지만 for가 아닙니다! (그것이 VK로 존재한다는 것을 인정합니다.) – KappaG3
그건 힘들어요.이 스레드는 도움이 될지 모르지만 근본적으로 당신이 말한 것은 당신 질문에 해당 할 것입니다. 당신은 스스로해야합니다.다른 키보드/레이아웃을 처리하는 방법을 모릅니다. http://www.gamedev.net/topic/457783-xna-getting-text-from-keyboard/#entry4040153 –