2016-07-09 4 views
6

C#を使用してHoloLens用のVNCクライアントを作成しています。キーボード入力の処理方法を理解するのに苦労しています。 KeyUp/KeyDownは私にWindows.System.VirtualKeyオブジェクトを与えますが、これらのVirtualKeysを指定されたレイアウト上に表す文字にマップするためのAPIはありません。例えば。 VirtualKey.Shift + VirtualKey.F == 'F'対 'f'のときはVirtualKey.Fです。またはShift + 5を押して、米国のキーボードに%を入力します。レイアウトとは無関係にUWPアプリケーションでVirtualKeyをcharにマッピングする

win32アプリケーションでは、キーボードレイアウトを処理するためにMapVirtualKeyを使用します。これはUWPでどのように処理されますか?

答えて

6

KeyUp/KeyDownイベントで翻訳された文字を取得することはできません。しかし、CoreWindow.CharacterReceivedイベントを使用して翻訳された文字を取得することは可能です。

あなたは、次のコードでイベントを登録することができます

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived; 

そして、あなたはCharacterReceivedEventArgsによって翻訳された入力文字(5ことが53を取得しながらshift+5のために、それは、37を取得するなど)のキーコードを取得します:

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

ええ、この方法の欠点は、文字以外のキーを取得できないことと、KeyDown/KeyUpでノーマが何であるかを示す方法がないことですl文字。全部、かなり撃つ。私はこれを処理するために私自身のレイアウトマッパーを作成することになった。 –

+0

独自のレイアウトマッパーを作成しましたか?私はそれに非常に興味があります!前もって感謝します。 – SuperJMN

+0

いいえ、私はしませんでした。カスタムキーボードレイアウトデモ[here](https://code.msdn.microsoft.com/windowsapps/UWP-Custom-On-Screen-8fd8415e)があります。 –

関連する問題