2016-11-28 3 views
1

Da CoreWindow.KeyDown in den letzten paar Builds (6 Monate) von Windows 10 gebrochen ist, brauche ich eine alternative Möglichkeit, Tastatureingabe zu erhalten. Es gibt 3 Möglichkeiten, die Mauseingabe zu erhalten, aber ich kann keine alternativen Möglichkeiten für die Tastatureingabe finden.So erhalten Sie globale Tastatureingabe in UWP App ohne CoreWindow.KeyDown

Gibt es andere Methoden für die Tastatureingabe in einem UWP-Programm? Wenn ja, was sind sie?

Das Problem ist, dass CoreWindow.KeyDown Ereignisse um bis zu 30 Sekunden verzögert werden können!

+1

Sind Sie sicher, dass sie überall kaputt sind? CoreWindow.KeyDown funktioniert gut für mich ... –

+0

Was ist Ihre Betriebssystemversion und Ihre Projektzielversion? Haben Sie versucht, Ihre App auf einem anderen Gerät zu testen? –

+1

@ grace-feng-msft Wir haben mehrere Computer und Betriebssystemversionen ausprobiert, es ist ein bekanntes Problem unter den Monogame- und Sharpdx-Communities. Es bricht nur, wenn Sie eine Menge Mausereignisse und unter mittlerer oder höherer CPU-Belastung erhalten. So wirkt es sich auf die meisten Spiele aus. Sie würden es nicht in einer App passieren. Siehe hier für weitere Informationen. https://github.com/MonoGame/MonoGame/pull/5333 Es ist ein Problem in der UWP-Framework, ich habe noch jemanden von Microsoft zu bekommen, um es zu bestätigen, damit es behoben werden kann. Das Problem ist, dass CoreWindow.KeyDown-Ereignisse um bis zu 30 Sekunden verzögert werden können! –

Antwort

1

Daniel, gibt es eine alternative Art und Weise: CoreWindow.Dispatcher.AcceleratorKeyActivated

Aber Vorsicht: Es Fehlalarme gibt z.B. Wenn ich die Menütaste (Alt) drücke, wird auch angezeigt, dass ich die Steuertaste drücke. Es macht auch einen Unterschied zwischen KeyDown und SystemKeyDown (Ich konnte keine Definition des Unterschieds zwischen den beiden finden), aber wenn Sie versuchen, die mit KeyUp und SystemKeyUp zu paaren, sind Sie auch für eine Überraschung, da sie nicht immer übereinstimmen . :/

Wie auch immer, wenn Sie es für Sie arbeiten, dann ist CoreWindow.Dispatcher.AcceleratorKeyActivated die Antwort auf Ihre Frage.

Verwandte Themen