diff --git a/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI.csproj b/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI.csproj index 19203af6..3e930510 100644 --- a/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI.csproj +++ b/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI.csproj @@ -109,10 +109,10 @@ - ..\..\lib\SharpDX\Bin\Win8Metro\SharpDX.dll + ..\..\lib\SharpDX\Bin\Standard-net20\SharpDX.dll - ..\..\lib\SharpDX\Bin\Win8Metro\SharpDX.XInput.dll + ..\..\lib\SharpDX\Bin\Standard-net20\SharpDX.XInput.dll diff --git a/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI_WindowsMetro.csproj b/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI_WindowsMetro.csproj index 36836d11..bd42e8db 100644 --- a/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI_WindowsMetro.csproj +++ b/InputSystems/ANX.InputDevices.Windows.ModernUI/ANX.InputDevices.Windows.ModernUI_WindowsMetro.csproj @@ -111,10 +111,10 @@ - ..\..\lib\SharpDX\Bin\Win8Metro\SharpDX.dll + ..\..\lib\sharpdx\bin\standard-winrt\sharpdx.dll - ..\..\lib\SharpDX\Bin\Win8Metro\SharpDX.XInput.dll + ..\..\lib\sharpdx\bin\standard-winrt\sharpdx.xinput.dll diff --git a/InputSystems/ANX.InputDevices.Windows.ModernUI/FormatConverter.cs b/InputSystems/ANX.InputDevices.Windows.ModernUI/FormatConverter.cs index 4211d633..7e89a9bc 100644 --- a/InputSystems/ANX.InputDevices.Windows.ModernUI/FormatConverter.cs +++ b/InputSystems/ANX.InputDevices.Windows.ModernUI/FormatConverter.cs @@ -2,6 +2,7 @@ using ANX.Framework.Input; using ANX.Framework.NonXNA.Development; using SharpDX.XInput; +using Windows.System; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. @@ -14,10 +15,12 @@ namespace ANX.InputDevices.Windows.ModernUI internal static class FormatConverter { private static Dictionary gamePadButtonsMap; + private static Dictionary keyboardKeyMap; static FormatConverter() { CreateGamePadButtonMap(); + CreateKeyboardKeyMap(); } #region CreateGamePadButtonMap @@ -77,6 +80,151 @@ namespace ANX.InputDevices.Windows.ModernUI } #endregion + #region CreateKeyboardKeyMap + private static void CreateKeyboardKeyMap() + { + keyboardKeyMap = new Dictionary(); + keyboardKeyMap.Add(VirtualKey.A, Keys.A); + keyboardKeyMap.Add(VirtualKey.Accept, Keys.None); + keyboardKeyMap.Add(VirtualKey.Add, Keys.Add); + keyboardKeyMap.Add(VirtualKey.Application, Keys.Apps); + keyboardKeyMap.Add(VirtualKey.B, Keys.B); + keyboardKeyMap.Add(VirtualKey.Back, Keys.Back); + keyboardKeyMap.Add(VirtualKey.C, Keys.C); + keyboardKeyMap.Add(VirtualKey.Cancel, Keys.None); + keyboardKeyMap.Add(VirtualKey.CapitalLock, Keys.CapsLock); + keyboardKeyMap.Add(VirtualKey.Clear, Keys.None); + keyboardKeyMap.Add(VirtualKey.Control, Keys.Crsel); + keyboardKeyMap.Add(VirtualKey.Convert, Keys.ImeConvert); + keyboardKeyMap.Add(VirtualKey.D, Keys.D); + keyboardKeyMap.Add(VirtualKey.Decimal, Keys.Decimal); + keyboardKeyMap.Add(VirtualKey.Delete, Keys.Delete); + keyboardKeyMap.Add(VirtualKey.Divide, Keys.Divide); + keyboardKeyMap.Add(VirtualKey.Down, Keys.Down); + keyboardKeyMap.Add(VirtualKey.E, Keys.E); + keyboardKeyMap.Add(VirtualKey.End, Keys.End); + keyboardKeyMap.Add(VirtualKey.Enter, Keys.Enter); + keyboardKeyMap.Add(VirtualKey.Escape, Keys.Escape); + keyboardKeyMap.Add(VirtualKey.Execute, Keys.Execute); + keyboardKeyMap.Add(VirtualKey.F, Keys.F); + keyboardKeyMap.Add(VirtualKey.F1, Keys.F1); + keyboardKeyMap.Add(VirtualKey.F10, Keys.F10); + keyboardKeyMap.Add(VirtualKey.F11, Keys.F11); + keyboardKeyMap.Add(VirtualKey.F12, Keys.F12); + keyboardKeyMap.Add(VirtualKey.F13, Keys.F13); + keyboardKeyMap.Add(VirtualKey.F14, Keys.F14); + keyboardKeyMap.Add(VirtualKey.F15, Keys.F15); + keyboardKeyMap.Add(VirtualKey.F16, Keys.F16); + keyboardKeyMap.Add(VirtualKey.F17, Keys.F17); + keyboardKeyMap.Add(VirtualKey.F18, Keys.F18); + keyboardKeyMap.Add(VirtualKey.F19, Keys.F19); + keyboardKeyMap.Add(VirtualKey.F20, Keys.F20); + keyboardKeyMap.Add(VirtualKey.F21, Keys.F21); + keyboardKeyMap.Add(VirtualKey.F22, Keys.F22); + keyboardKeyMap.Add(VirtualKey.F23, Keys.F23); + keyboardKeyMap.Add(VirtualKey.F24, Keys.F24); + keyboardKeyMap.Add(VirtualKey.F3, Keys.F3); + keyboardKeyMap.Add(VirtualKey.F4, Keys.F4); + keyboardKeyMap.Add(VirtualKey.F5, Keys.F5); + keyboardKeyMap.Add(VirtualKey.F6, Keys.F6); + keyboardKeyMap.Add(VirtualKey.F7, Keys.F7); + keyboardKeyMap.Add(VirtualKey.F8, Keys.F8); + keyboardKeyMap.Add(VirtualKey.F9, Keys.F9); + keyboardKeyMap.Add(VirtualKey.F2, Keys.F2); + keyboardKeyMap.Add(VirtualKey.Final, Keys.None); + keyboardKeyMap.Add(VirtualKey.G, Keys.G); + keyboardKeyMap.Add(VirtualKey.H, Keys.H); + keyboardKeyMap.Add(VirtualKey.Hangul, Keys.None); + keyboardKeyMap.Add(VirtualKey.Hanja, Keys.None); + keyboardKeyMap.Add(VirtualKey.Help, Keys.Help); + keyboardKeyMap.Add(VirtualKey.Home, Keys.Home); + keyboardKeyMap.Add(VirtualKey.I, Keys.I); + keyboardKeyMap.Add(VirtualKey.Insert, Keys.Insert); + keyboardKeyMap.Add(VirtualKey.J, Keys.J); + keyboardKeyMap.Add(VirtualKey.Junja, Keys.None); + keyboardKeyMap.Add(VirtualKey.K, Keys.K); + //keyboardKeyMap.Add(VirtualKey.Kana, Keys.Kana); + //keyboardKeyMap.Add(VirtualKey.Kanji, Keys.Kanji); + keyboardKeyMap.Add(VirtualKey.L, Keys.L); + keyboardKeyMap.Add(VirtualKey.Left, Keys.Left); + keyboardKeyMap.Add(VirtualKey.LeftButton, Keys.None); + keyboardKeyMap.Add(VirtualKey.LeftControl, Keys.LeftControl); + keyboardKeyMap.Add(VirtualKey.LeftMenu, Keys.None); + keyboardKeyMap.Add(VirtualKey.LeftShift, Keys.LeftShift); + keyboardKeyMap.Add(VirtualKey.LeftWindows, Keys.LeftWindows); + keyboardKeyMap.Add(VirtualKey.M, Keys.M); + keyboardKeyMap.Add(VirtualKey.Menu, Keys.None); + keyboardKeyMap.Add(VirtualKey.MiddleButton, Keys.None); + keyboardKeyMap.Add(VirtualKey.ModeChange, Keys.None); + keyboardKeyMap.Add(VirtualKey.Multiply, Keys.Multiply); + keyboardKeyMap.Add(VirtualKey.N, Keys.N); + keyboardKeyMap.Add(VirtualKey.NonConvert, Keys.ImeNoConvert); + keyboardKeyMap.Add(VirtualKey.None, Keys.None); + keyboardKeyMap.Add(VirtualKey.Number0, Keys.NumPad0); + keyboardKeyMap.Add(VirtualKey.Number1, Keys.NumPad1); + keyboardKeyMap.Add(VirtualKey.Number2, Keys.NumPad2); + keyboardKeyMap.Add(VirtualKey.Number3, Keys.NumPad3); + keyboardKeyMap.Add(VirtualKey.Number4, Keys.NumPad4); + keyboardKeyMap.Add(VirtualKey.Number5, Keys.NumPad5); + keyboardKeyMap.Add(VirtualKey.Number6, Keys.NumPad6); + keyboardKeyMap.Add(VirtualKey.Number7, Keys.NumPad7); + keyboardKeyMap.Add(VirtualKey.Number8, Keys.NumPad8); + keyboardKeyMap.Add(VirtualKey.Number9, Keys.NumPad9); + keyboardKeyMap.Add(VirtualKey.NumberKeyLock, Keys.NumLock); + keyboardKeyMap.Add(VirtualKey.NumberPad0, Keys.NumPad0); + keyboardKeyMap.Add(VirtualKey.NumberPad1, Keys.NumPad1); + keyboardKeyMap.Add(VirtualKey.NumberPad2, Keys.NumPad2); + keyboardKeyMap.Add(VirtualKey.NumberPad3, Keys.NumPad3); + keyboardKeyMap.Add(VirtualKey.NumberPad4, Keys.NumPad4); + keyboardKeyMap.Add(VirtualKey.NumberPad5, Keys.NumPad5); + keyboardKeyMap.Add(VirtualKey.NumberPad6, Keys.NumPad6); + keyboardKeyMap.Add(VirtualKey.NumberPad7, Keys.NumPad7); + keyboardKeyMap.Add(VirtualKey.NumberPad8, Keys.NumPad8); + keyboardKeyMap.Add(VirtualKey.NumberPad9, Keys.NumPad9); + keyboardKeyMap.Add(VirtualKey.O, Keys.O); + keyboardKeyMap.Add(VirtualKey.P, Keys.P); + keyboardKeyMap.Add(VirtualKey.PageDown, Keys.PageDown); + keyboardKeyMap.Add(VirtualKey.PageUp, Keys.PageUp); + keyboardKeyMap.Add(VirtualKey.Pause, Keys.Pause); + keyboardKeyMap.Add(VirtualKey.Print, Keys.Print); + keyboardKeyMap.Add(VirtualKey.Q, Keys.Q); + keyboardKeyMap.Add(VirtualKey.R, Keys.R); + keyboardKeyMap.Add(VirtualKey.Right, Keys.Right); + keyboardKeyMap.Add(VirtualKey.RightButton, Keys.None); + keyboardKeyMap.Add(VirtualKey.RightControl, Keys.RightControl); + keyboardKeyMap.Add(VirtualKey.RightMenu, Keys.None); + keyboardKeyMap.Add(VirtualKey.RightShift, Keys.RightShift); + keyboardKeyMap.Add(VirtualKey.RightWindows, Keys.RightWindows); + keyboardKeyMap.Add(VirtualKey.S, Keys.S); + keyboardKeyMap.Add(VirtualKey.Scroll, Keys.Scroll); + keyboardKeyMap.Add(VirtualKey.Select, Keys.Select); + keyboardKeyMap.Add(VirtualKey.Separator, Keys.Separator); + keyboardKeyMap.Add(VirtualKey.Shift, Keys.None); + keyboardKeyMap.Add(VirtualKey.Sleep, Keys.Sleep); + keyboardKeyMap.Add(VirtualKey.Snapshot, Keys.None); + keyboardKeyMap.Add(VirtualKey.Space, Keys.Space); + keyboardKeyMap.Add(VirtualKey.Subtract, Keys.Subtract); + keyboardKeyMap.Add(VirtualKey.T, Keys.T); + keyboardKeyMap.Add(VirtualKey.Tab, Keys.Tab); + keyboardKeyMap.Add(VirtualKey.U, Keys.U); + keyboardKeyMap.Add(VirtualKey.Up, Keys.Up); + keyboardKeyMap.Add(VirtualKey.V, Keys.V); + keyboardKeyMap.Add(VirtualKey.W, Keys.W); + keyboardKeyMap.Add(VirtualKey.X, Keys.X); + keyboardKeyMap.Add(VirtualKey.XButton1, Keys.None); + keyboardKeyMap.Add(VirtualKey.XButton2, Keys.None); + keyboardKeyMap.Add(VirtualKey.Y, Keys.Y); + keyboardKeyMap.Add(VirtualKey.Z, Keys.Z); + } + #endregion + + #region Translate (VirtualKey) + public static Keys Translate(VirtualKey key) + { + return keyboardKeyMap.ContainsKey(key) ? keyboardKeyMap[key] : Keys.None; + } + #endregion + } } diff --git a/InputSystems/ANX.InputDevices.Windows.ModernUI/Keyboard.cs b/InputSystems/ANX.InputDevices.Windows.ModernUI/Keyboard.cs index 15183655..a6dcf12a 100644 --- a/InputSystems/ANX.InputDevices.Windows.ModernUI/Keyboard.cs +++ b/InputSystems/ANX.InputDevices.Windows.ModernUI/Keyboard.cs @@ -3,6 +3,9 @@ using ANX.Framework.Input; using ANX.Framework.NonXNA; using ANX.Framework.NonXNA.Development; using System; +using System.Collections.Generic; +using Windows.System; +using Windows.UI.Core; // This file is part of the ANX.Framework created by the @@ -11,26 +14,54 @@ using System; namespace ANX.InputDevices.Windows.ModernUI { - [PercentageComplete(0)] - [TestState(TestStateAttribute.TestState.Untested)] + [PercentageComplete(80)] + [TestState(TestStateAttribute.TestState.InProgress)] [Developer("rene87")] - class Keyboard : IKeyboard + public class Keyboard : IKeyboard { + private IntPtr windowHandle; + KeyboardState _state; public IntPtr WindowHandle { - get - { - throw new NotImplementedException(); - } + get { return windowHandle; } set { - throw new NotImplementedException(); + if (windowHandle != value) + { + windowHandle = value; + } + } + } + + public Keyboard() + { + CoreWindow.GetForCurrentThread().KeyDown += Keyboard_KeyDown; + CoreWindow.GetForCurrentThread().KeyUp += Keyboard_KeyUp; + _state = new KeyboardState(Keys.None); + _state.RemovePressedKey(Keys.None); + } + + void Keyboard_KeyUp(CoreWindow sender, KeyEventArgs args) + { + var key = FormatConverter.Translate(args.VirtualKey); + + _state.RemovePressedKey(key); + + } + + void Keyboard_KeyDown(CoreWindow sender, KeyEventArgs args) + { + var key = FormatConverter.Translate(args.VirtualKey); + if (key != Keys.None) + { + _state.AddPressedKey(key); } } public KeyboardState GetState() { - throw new NotImplementedException(); + + return _state; } public KeyboardState GetState(PlayerIndex playerIndex) diff --git a/InputSystems/ANX.InputDevices.Windows.ModernUI/Mouse.cs b/InputSystems/ANX.InputDevices.Windows.ModernUI/Mouse.cs index 0338b409..4a892127 100644 --- a/InputSystems/ANX.InputDevices.Windows.ModernUI/Mouse.cs +++ b/InputSystems/ANX.InputDevices.Windows.ModernUI/Mouse.cs @@ -14,7 +14,7 @@ namespace ANX.InputDevices.Windows.ModernUI [PercentageComplete(80)] [TestState(TestStateAttribute.TestState.Untested)] [Developer("rene87")] - class Mouse : IMouse + public class Mouse : IMouse { private int _wheel; private int _x;