Я пытаюсь обработать символы в текстовом поле для пользовательского игрового движка 3D, заключенного в приложение UWP.
Для обработки этих символов на английском языке мы использовали CoreWindows
CharacterReceived
события. Это работает без проблем на Xbox One с английским языком. Мы отправляем наши захваченные символы в движок, и он правильно отображает.
Однако мы сталкиваемся с проблемой, когда меняем язык виртуальной клавиатуры (например, Французская Канада, Испанская Мексика). Событие не запускается для большинства символов, например, @
, <
и >
, что не позволяет нам распространять символы в нашем движке. Буквенно-цифровые символы по-прежнему работают.
Я создал пример приложения на C #, чтобы полностью вывести наш движок из уравнения, и я получаю точно такие же результаты. Вот соответствующий пример кода:
protected override void OnWindowCreated(WindowCreatedEventArgs args){
base.OnWindowCreated(args);
var window = args.Window;
window.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived;
}
private void CoreWindow_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args)
{
System.Diagnostics.Debug.WriteLine("Received Event KeyCode: {0}, KeyStatus: {1}", args.KeyCode, args.KeyStatus.ToString());
}
В примере приложения есть текстовое поле, определенное в Xaml, которое позволяет мне также вызывать клавиатуру. Текстовое поле хорошо обрабатывает символы, а событие - нет.
Я мог бы обрабатывать нажатия клавиш, но я бы не стал использовать эту кроличью нору, поскольку она различна для каждой локали.
Есть идеи, почему это событие не обрабатывает символы?