diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj
index 4642e480e..90b14a29b 100644
--- a/Artemis/Artemis/Artemis.csproj
+++ b/Artemis/Artemis/Artemis.csproj
@@ -247,6 +247,10 @@
..\packages\squirrel.windows.1.4.4\lib\Net45\NuGet.Squirrel.dll
True
+
+ ..\packages\Open.WinKeyboardHook.1.0.11\lib\net45\Open.WinKeyboardHook.dll
+ True
+
..\packages\Process.NET.1.0.5\lib\Process.NET.dll
True
@@ -298,10 +302,6 @@
..\packages\WpfExceptionViewer.1.0.0.0\lib\VioletTape.WpfExceptionViewer.dll
True
-
- ..\packages\VirtualInput.1.0.1\lib\net20\VirtualInput.dll
- True
-
@@ -354,6 +354,7 @@
+
diff --git a/Artemis/Artemis/DAL/ProfileProvider.cs b/Artemis/Artemis/DAL/ProfileProvider.cs
index 2721ae7d6..b1fc66710 100644
--- a/Artemis/Artemis/DAL/ProfileProvider.cs
+++ b/Artemis/Artemis/DAL/ProfileProvider.cs
@@ -21,7 +21,7 @@ namespace Artemis.DAL
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
- private static readonly string ProfileFolder =
+ public static readonly string ProfileFolder =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Artemis\profiles";
private static bool _installedDefaults;
@@ -33,7 +33,7 @@ namespace Artemis.DAL
CheckProfiles();
InstallDefaults();
}
-
+
public static List GetProfileNames(KeyboardProvider keyboard, ModuleModel module)
{
if (keyboard == null || module == null)
@@ -177,7 +177,7 @@ namespace Artemis.DAL
}
}
- private static List ReadProfiles(string subDirectory)
+ public static List ReadProfiles(string subDirectory)
{
var profiles = new List();
var directory = ProfileFolder + "/" + subDirectory;
diff --git a/Artemis/Artemis/InjectionModules/ManagerModules.cs b/Artemis/Artemis/InjectionModules/ManagerModules.cs
index 6f6b1c1b3..c1e788ba7 100644
--- a/Artemis/Artemis/InjectionModules/ManagerModules.cs
+++ b/Artemis/Artemis/InjectionModules/ManagerModules.cs
@@ -14,6 +14,7 @@ namespace Artemis.InjectionModules
Bind().ToSelf().InSingletonScope();
Bind().ToSelf().InSingletonScope();
Bind().ToSelf().InSingletonScope();
+ Bind().ToSelf().InSingletonScope();
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Managers/MainManager.cs b/Artemis/Artemis/Managers/MainManager.cs
index c266bb4d8..dba3b4657 100644
--- a/Artemis/Artemis/Managers/MainManager.cs
+++ b/Artemis/Artemis/Managers/MainManager.cs
@@ -19,12 +19,14 @@ namespace Artemis.Managers
///
public class MainManager : IDisposable
{
+ private readonly MigrationManager _migrationManager;
private readonly Timer _processTimer;
public MainManager(ILogger logger, LoopManager loopManager, DeviceManager deviceManager,
- ModuleManager moduleManager, PreviewManager previewManager, PipeServer pipeServer,
- GameStateWebServer gameStateWebServer)
+ ModuleManager moduleManager, PreviewManager previewManager, MigrationManager migrationManager,
+ PipeServer pipeServer, GameStateWebServer gameStateWebServer)
{
+ _migrationManager = migrationManager;
Logger = logger;
LoopManager = loopManager;
DeviceManager = deviceManager;
@@ -111,6 +113,7 @@ namespace Artemis.Managers
ProgramEnabled = true;
await LoopManager.StartAsync();
+ _migrationManager.MigrateProfiles();
RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled));
}
@@ -121,10 +124,8 @@ namespace Artemis.Managers
{
Logger.Debug("Disabling program");
foreach (var overlayModule in ModuleManager.OverlayModules)
- {
if (overlayModule.Settings.IsEnabled)
overlayModule.Dispose();
- }
LoopManager.Stop();
ProgramEnabled = false;
RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled));
diff --git a/Artemis/Artemis/Managers/MigrationManager.cs b/Artemis/Artemis/Managers/MigrationManager.cs
new file mode 100644
index 000000000..b314b6952
--- /dev/null
+++ b/Artemis/Artemis/Managers/MigrationManager.cs
@@ -0,0 +1,40 @@
+using System.IO;
+using Artemis.DAL;
+
+namespace Artemis.Managers
+{
+ public class MigrationManager
+ {
+ private readonly DeviceManager _deviceManager;
+
+ public MigrationManager(DeviceManager deviceManager)
+ {
+ _deviceManager = deviceManager;
+ }
+
+ ///
+ /// Migrates old versions of profiles to new versions
+ ///
+ public void MigrateProfiles()
+ {
+ // 1.8.0.0 - Rename WindowsProfile to GeneralProfile
+ foreach (var keyboardProvider in _deviceManager.KeyboardProviders)
+ {
+ var folder = ProfileProvider.ProfileFolder + "/" + keyboardProvider.Slug + "/WindowsProfile";
+ if (!Directory.Exists(folder))
+ continue;
+
+ // Get all the profiles
+ var profiles = ProfileProvider.ReadProfiles(keyboardProvider.Slug + "/WindowsProfile");
+ foreach (var profile in profiles)
+ {
+ // Change their GameName and save, effectively moving them to the new folder
+ profile.GameName = "GeneralProfile";
+ ProfileProvider.AddOrUpdate(profile);
+ }
+ // Delete the old profiles
+ Directory.Delete(folder, true);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/Properties/AssemblyInfo.cs b/Artemis/Artemis/Properties/AssemblyInfo.cs
index 7205a0d2c..b89de5c2b 100644
--- a/Artemis/Artemis/Properties/AssemblyInfo.cs
+++ b/Artemis/Artemis/Properties/AssemblyInfo.cs
@@ -53,7 +53,7 @@ using System.Windows;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.7.1.0")]
-[assembly: AssemblyFileVersion("1.7.1.0")]
+[assembly: AssemblyVersion("1.8.0.0")]
+[assembly: AssemblyFileVersion("1.8.0.0")]
[assembly: InternalsVisibleTo("Artemis.Explorables")]
diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip
index a675632a6..9520a5698 100644
Binary files a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip and b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip differ
diff --git a/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs b/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs
index 326552cae..13555234f 100644
--- a/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs
+++ b/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs
@@ -1,6 +1,6 @@
using System.Threading.Tasks;
using System.Windows.Forms;
-using VirtualInput;
+using Open.WinKeyboardHook;
namespace Artemis.Utilities.Keyboard
{
@@ -10,13 +10,14 @@ namespace Artemis.Utilities.Keyboard
static KeyboardHook()
{
- VirtualKeyboard.StartInterceptor();
- VirtualKeyboard.KeyDown += VirtualKeyboardOnKeyDown;
+ var interceptor = new KeyboardInterceptor();
+ interceptor.KeyDown += VirtualKeyboardOnKeyDown;
+ interceptor.StartCapturing();
}
- private static void VirtualKeyboardOnKeyDown(object sender, KeyEventArgs keyEventArgs)
+ private static async void VirtualKeyboardOnKeyDown(object sender, KeyEventArgs keyEventArgs)
{
- Task.Factory.StartNew(() => { KeyDownCallback?.Invoke(keyEventArgs); });
+ await Task.Factory.StartNew(() => { KeyDownCallback?.Invoke(keyEventArgs); });
}
public static event KeyDownCallbackHandler KeyDownCallback;
diff --git a/Artemis/Artemis/packages.config b/Artemis/Artemis/packages.config
index 55b725806..5afbe906d 100644
--- a/Artemis/Artemis/packages.config
+++ b/Artemis/Artemis/packages.config
@@ -23,12 +23,12 @@
+
-
\ No newline at end of file