Почему я не получаю событие CharacterReceived для неанглийских виртуальных клавиатур на Xbox One - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь обработать символы в текстовом поле для пользовательского игрового движка 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, которое позволяет мне также вызывать клавиатуру. Текстовое поле хорошо обрабатывает символы, а событие - нет.

Я мог бы обрабатывать нажатия клавиш, но я бы не стал использовать эту кроличью нору, поскольку она различна для каждой локали.

Есть идеи, почему это событие не обрабатывает символы?

...