Я попытаюсь объяснить, что я имею в виду, и я также попытаюсь оставить вопрос свободным от языка, хотя, если есть способ сделать то, что я хочу на 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
И никаких проблем пока нет. Если пользователь набирает «a», удерживая сдвиг или с помощью переключателя «капот», он становится «A».
Однако, если пользователь решит ввести «!», Что равно «1» плюс сдвиг, я получаю только 1, потому что «1» в верхнем регистре по-прежнему «1».
Я немного поглядел в Интернете, прежде чем задавать этот вопрос, но все, что у меня было, это «Карта ключей самостоятельно». Это действительно единственный ответ? А также, что произойдет, если я сопоставил ключи, а затем пользователь с другой раскладкой клавиатуры попытался использовать мое приложение? Спасибо заранее.
как вы обрабатываете входной сигнал клавиатуры? Является ли KeyCode недоступным в обработчике событий? –
Я строию класс ввода XNA, который более или менее такой же, как PInvoking GetKeyState. В принципе, у меня есть доступ к списку всех виртуальных ключей и их относительного состояния. Например, у меня есть KeyCode для 1, но не для! (признал, что существует как VK?) – KappaG3
Это сложно - эта тема может быть полезна, но в основном вы сказали бы, что это было бы в вашем вопросе. Вы как будто должны сделать это сами.Не знаете, как обращаться с другой клавиатурой/макетом. http://www.gamedev.net/topic/457783-xna-getting-text-from-keyboard/#entry4040153 –