2016-07-09 61 views
6

Sto scrivendo un client VNC per HoloLens utilizzando C# e sto attraversando un periodo difficile per capire come gestire l'input da tastiera. KeyUp/KeyDown mi fornisce un oggetto Windows.System.VirtualKey, ma non sembra che ci sia un'API per mappare questi VirtualKey (insieme ai modificatori, per esempio lo spostamento) ai caratteri che rappresentano su un dato layout. Per esempio. VirtualKey.Shift + VirtualKey.F == 'F' contro 'f' quando è semplicemente VirtualKey.F. O MAIUSC + 5 per dare% su una tastiera americana.Mappatura di VirtualKey da caricare nell'app UWP, indipendente dal layout

Nelle app win32 devi utilizzare MapVirtualKey per gestire il layout della tastiera per te: come viene gestito in UWP?

risposta

6

Non è possibile ottenere il carattere tradotto negli eventi KeyUp/KeyDown. Ma è possibile quando si usa l'evento CoreWindow.CharacterReceived per ottenere il carattere tradotto.

È possibile registrare l'evento con i seguenti codici:

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived; 

E avrete una KeyCode del carattere di input tradotto (ad esempio per shift+5 diventa 37, mentre per 5 ottiene 53) attraverso il CharacterReceivedEventArgs :

private void CoreWindow_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args) 
{ 
    uint keyCode=args.KeyCode; 
} 
+2

Sì, il lato negativo di questo metodo è che non si può eventualmente ottenere eventuali chiavi non-personaggi, e non c'è modo di KeyDown/KeyUp per raccontare ciò che è e non è una norma l personaggio. Praticamente spara il tutto. Ho finito per creare il mio mappamondo per gestirlo. –

+0

Hai scritto il tuo mappatore di layout? Sono molto interessato a questo! Grazie in anticipo. – SuperJMN

+0

No, non l'ho fatto. È possibile trovare una demo del layout della tastiera personalizzata [qui] (https://code.msdn.microsoft.com/windowsapps/UWP-Custom-On-Screen-8fd8415e). –