summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--console/console.cpp34
-rw-r--r--console/console.vcxproj2
-rw-r--r--console/console_write.cpp32
-rw-r--r--console/console_write.hpp14
-rw-r--r--wrapper/wrapper.cpp24
-rw-r--r--wrapper/wrapper.hpp10
-rw-r--r--wrapper/wrapper.vcxproj2
-rw-r--r--wrapper/wrapper.vcxproj.filters6
-rw-r--r--wrapper/wrapper_writer.cpp9
-rw-r--r--wrapper/wrapper_writer.hpp7
10 files changed, 102 insertions, 38 deletions
diff --git a/console/console.cpp b/console/console.cpp
index 490051c..549cb68 100644
--- a/console/console.cpp
+++ b/console/console.cpp
@@ -4,39 +4,7 @@
#include <Windows.h>
#include <rawaccel-userspace.hpp>
-
-#define RA_WRITE CTL_CODE(0x8888, 0x888, METHOD_BUFFERED, FILE_ANY_ACCESS)
-
-namespace ra = rawaccel;
-
-void write(ra::mouse_modifier vars) {
- HANDLE ra_handle = INVALID_HANDLE_VALUE;
-
- ra_handle = CreateFileW(L"\\\\.\\rawaccel", 0, 0, 0, OPEN_EXISTING, 0, 0);
-
- if (ra_handle == INVALID_HANDLE_VALUE) {
- throw std::system_error(GetLastError(), std::system_category(), "CreateFile failed");
- }
-
- DWORD dummy;
-
- BOOL success = DeviceIoControl(
- ra_handle,
- RA_WRITE,
- &vars,
- sizeof(ra::mouse_modifier),
- NULL, // output buffer
- 0, // output buffer size
- &dummy, // bytes returned
- NULL // overlapped structure
- );
-
- CloseHandle(ra_handle);
-
- if (!success) {
- throw std::system_error(GetLastError(), std::system_category(), "DeviceIoControl failed");
- }
-}
+#include "console_write.hpp"
int main(int argc, char** argv) {
try {
diff --git a/console/console.vcxproj b/console/console.vcxproj
index d0ad292..05780cd 100644
--- a/console/console.vcxproj
+++ b/console/console.vcxproj
@@ -90,6 +90,8 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="console.cpp" />
+ <ClCompile Include="console_write.cpp" />
+ <ClCompile Include="console_write.hpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/console/console_write.cpp b/console/console_write.cpp
new file mode 100644
index 0000000..3240ea5
--- /dev/null
+++ b/console/console_write.cpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include "console_write.hpp"
+
+void write(ra::mouse_modifier vars) {
+ HANDLE ra_handle = INVALID_HANDLE_VALUE;
+
+ ra_handle = CreateFileW(L"\\\\.\\rawaccel", 0, 0, 0, OPEN_EXISTING, 0, 0);
+
+ if (ra_handle == INVALID_HANDLE_VALUE) {
+ throw std::system_error(GetLastError(), std::system_category(), "CreateFile failed");
+ }
+
+ DWORD dummy;
+
+ BOOL success = DeviceIoControl(
+ ra_handle,
+ RA_WRITE,
+ &vars,
+ sizeof(ra::mouse_modifier),
+ NULL, // output buffer
+ 0, // output buffer size
+ &dummy, // bytes returned
+ NULL // overlapped structure
+ );
+
+ CloseHandle(ra_handle);
+
+ if (!success) {
+ throw std::system_error(GetLastError(), std::system_category(), "DeviceIoControl failed");
+ }
+}
diff --git a/console/console_write.hpp b/console/console_write.hpp
new file mode 100644
index 0000000..31eb575
--- /dev/null
+++ b/console/console_write.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <iostream>
+
+#define NOMINMAX
+#include <Windows.h>
+
+#include "..\common\rawaccel.hpp"
+
+#define RA_WRITE CTL_CODE(0x8888, 0x888, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+namespace ra = rawaccel;
+
+void write(ra::mouse_modifier vars); \ No newline at end of file
diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp
index c1cc570..ebf44cf 100644
--- a/wrapper/wrapper.cpp
+++ b/wrapper/wrapper.cpp
@@ -1,7 +1,6 @@
#pragma once
-#include "..\common\rawaccel.hpp";
-#include "wrapper.hpp";
+#include "wrapper.hpp"
using namespace rawaccel;
using namespace System;
@@ -11,4 +10,23 @@ Tuple<double, double>^ ManagedAccel::Accelerate(int x, int y, double time)
vec2d output = (*modifier_instance).modify_with_accel(input_vec2d, (milliseconds)time);
return gcnew Tuple<double, double>(output.x, output.y);
-} \ No newline at end of file
+}
+
+void ManagedAccel::UpdateAccel(int mode, double offset, double accel, double lim_exp, double midpoint)
+{
+ delete modifier_instance;
+
+ modifier_args args{};
+ args.acc_fn_args.acc_args.accel = accel;
+ args.acc_fn_args.acc_args.lim_exp = lim_exp;
+ args.acc_fn_args.acc_args.midpoint = midpoint;
+ args.acc_fn_args.accel_mode = mode;
+ args.acc_fn_args.acc_args.offset = offset;
+
+ modifier_instance = new mouse_modifier(args);
+}
+
+void ManagedAccel::WriteToDriver()
+{
+ driverWriter->writeToDriver(modifier_instance);
+}
diff --git a/wrapper/wrapper.hpp b/wrapper/wrapper.hpp
index 19b0987..5ea94fa 100644
--- a/wrapper/wrapper.hpp
+++ b/wrapper/wrapper.hpp
@@ -1,7 +1,7 @@
#pragma once
-#include "..\common\rawaccel.hpp";
-#include "..\common\error.hpp";
+#include "..\common\error.hpp"
+#include "wrapper_writer.hpp"
#include <iostream>
using namespace rawaccel;
using namespace System;
@@ -10,6 +10,7 @@ public ref class ManagedAccel
{
protected:
mouse_modifier* modifier_instance;
+ writer* driverWriter;
public:
ManagedAccel(mouse_modifier* accel)
: modifier_instance(accel)
@@ -26,6 +27,7 @@ public:
args.acc_fn_args.acc_args.offset = offset;
modifier_instance = new mouse_modifier(args);
+ driverWriter = new writer();
}
virtual ~ManagedAccel()
@@ -49,4 +51,8 @@ public:
}
Tuple<double, double>^ Accelerate(int x, int y, double time);
+
+ void UpdateAccel(int mode, double offset, double accel, double lim_exp, double midpoint);
+
+ void WriteToDriver();
}; \ No newline at end of file
diff --git a/wrapper/wrapper.vcxproj b/wrapper/wrapper.vcxproj
index d27266d..28acbe7 100644
--- a/wrapper/wrapper.vcxproj
+++ b/wrapper/wrapper.vcxproj
@@ -116,9 +116,11 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="wrapper.hpp" />
+ <ClInclude Include="wrapper_writer.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="wrapper.cpp" />
+ <ClCompile Include="wrapper_writer.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/wrapper/wrapper.vcxproj.filters b/wrapper/wrapper.vcxproj.filters
index 22d967d..28b22ba 100644
--- a/wrapper/wrapper.vcxproj.filters
+++ b/wrapper/wrapper.vcxproj.filters
@@ -18,10 +18,16 @@
<ClInclude Include="wrapper.hpp">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="wrapper_writer.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="wrapper.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="wrapper_writer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/wrapper/wrapper_writer.cpp b/wrapper/wrapper_writer.cpp
new file mode 100644
index 0000000..0a74105
--- /dev/null
+++ b/wrapper/wrapper_writer.cpp
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "..\console\console_write.cpp"
+#include "wrapper_writer.hpp"
+
+void writer::writeToDriver(rawaccel::mouse_modifier* modifier)
+{
+ write(*modifier);
+}
diff --git a/wrapper/wrapper_writer.hpp b/wrapper/wrapper_writer.hpp
new file mode 100644
index 0000000..591f62f
--- /dev/null
+++ b/wrapper/wrapper_writer.hpp
@@ -0,0 +1,7 @@
+#pragma once
+
+#include "..\common\rawaccel.hpp"
+
+struct writer {
+ void writeToDriver(rawaccel::mouse_modifier* modifier);
+}; \ No newline at end of file