2016-07-09 56 views
6

'dan bağımsız olarak UWP uygulamasında char için VirtualKey eşleme C# kullanarak HoloLens için bir VNC istemcisi yazıyorum ve klavye girişinin nasıl işleneceğini anlamak için zor bir zaman yaşıyorum. KeyUp/KeyDown bana bir Windows.System.VirtualKey nesnesi verir, ancak bu VirtualKey'leri (değiştiricilerle birlikte vardiya ile birlikte) belirli bir düzende temsil ettikleri karakterlerle eşlemek için bir API görünmez. Örneğin. VirtualKey.Shift + VirtualKey.F == 'F' ise 'f' iken sadece VirtualKey.F. Ya da ABD klavyesinde% vermek için ÜstKrktr + 5.Düzenleme

win32 uygulamalarında, klavye düzenini sizin yerinize taşımak için MapVirtualKey kullanacaksınız - bu işlem UWP'de nasıl ele alınır?

cevap

6

Çevrilen karakteri KeyUp/KeyDown olaylarında almak mümkün değildir. Ancak çevrilmiş karakteri almak için CoreWindow.CharacterReceived olayını kullanırken mümkündür.

Aşağıdaki kodları ile olay kayıt olabilirsiniz:

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived; 

Ve CharacterReceivedEventArgs aracılığıyla (5 için 53 alırken, bu 37 alır shift+5 örneğin) Çevirisini giriş karakterinin bir KeyCode alacak :

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

Evet, bu yöntemle olumsuz muhtemelen olmayan herhangi bir karakter tuşları alamayan olması ve ve bir norma ne olmadığını anlatmak için KeyDown/KeyUp hiçbir yolu yoktur l karakteri. Hemen hemen her şeyi vuruyor. Bunu halletmek için kendi harita eşleyicimi oluşturmayı bitirdim. –

+0

Kendi harita eşleyicinizi yazdınız mı? Ben onunla çok ilgileniyorum! Şimdiden teşekkürler. – SuperJMN

+0

Hayır, yapmadım. Özel bir klavye düzeni demosu bulabilirsiniz [burada] (https://code.msdn.microsoft.com/windowsapps/UWP-Custom-On-Screen-8fd8415e). –