summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-07-28 02:44:09 -0700
committerJacob Palecki <[email protected]>2020-07-28 02:44:09 -0700
commitb1ef35050600978318581586691f5a8f119abf5b (patch)
tree1a096e8c6d5ceff50ca169fb2295118184d629f5
parentRemove extra mode from variables (diff)
downloadrawaccel-b1ef35050600978318581586691f5a8f119abf5b.tar.xz
rawaccel-b1ef35050600978318581586691f5a8f119abf5b.zip
Rename variables and add modify functions
-rw-r--r--common/rawaccel-userspace.hpp4
-rw-r--r--common/rawaccel.hpp19
-rw-r--r--console/console.cpp4
-rw-r--r--driver/driver.cpp26
4 files changed, 33 insertions, 20 deletions
diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp
index bca6997..d0722b6 100644
--- a/common/rawaccel-userspace.hpp
+++ b/common/rawaccel-userspace.hpp
@@ -16,7 +16,7 @@ void error(const char* s) {
throw std::domain_error(s);
}
-variables parse(int argc, char** argv) {
+mouse_modifier parse(int argc, char** argv) {
double degrees = 0;
vec2d sens = { 1, 1 };
args_t accel_args{};
@@ -121,7 +121,7 @@ variables parse(int argc, char** argv) {
std::exit(0);
}
- return variables(-degrees, sens, accel_args);
+ return mouse_modifier(-degrees, sens, accel_args);
}
} // rawaccel
diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp
index 28d9ee2..9b35568 100644
--- a/common/rawaccel.hpp
+++ b/common/rawaccel.hpp
@@ -309,14 +309,14 @@ namespace rawaccel {
accel_function() = default;
};
- struct variables {
+ struct mouse_modifier {
bool apply_rotate = false;
bool apply_accel = false;
rotator rotate;
accel_function accel_fn;
vec2d sensitivity = { 1, 1 };
- variables(double degrees, vec2d sens, args_t accel_args)
+ mouse_modifier(double degrees, vec2d sens, args_t accel_args)
: accel_fn(accel_args)
{
apply_rotate = degrees != 0;
@@ -330,7 +330,20 @@ namespace rawaccel {
sensitivity = sens;
}
- variables() = default;
+ vec2d modify(vec2d input)
+ {
+ if (apply_rotate)
+ {
+ return rotate(input);
+ }
+ }
+
+ vec2d modify(vec2d input, milliseconds time)
+ {
+ return accel_fn(modify(input), time);
+ }
+
+ mouse_modifier() = default;
};
} // rawaccel \ No newline at end of file
diff --git a/console/console.cpp b/console/console.cpp
index 6606cac..490051c 100644
--- a/console/console.cpp
+++ b/console/console.cpp
@@ -9,7 +9,7 @@
namespace ra = rawaccel;
-void write(ra::variables vars) {
+void write(ra::mouse_modifier vars) {
HANDLE ra_handle = INVALID_HANDLE_VALUE;
ra_handle = CreateFileW(L"\\\\.\\rawaccel", 0, 0, 0, OPEN_EXISTING, 0, 0);
@@ -24,7 +24,7 @@ void write(ra::variables vars) {
ra_handle,
RA_WRITE,
&vars,
- sizeof(ra::variables),
+ sizeof(ra::mouse_modifier),
NULL, // output buffer
0, // output buffer size
&dummy, // bytes returned
diff --git a/driver/driver.cpp b/driver/driver.cpp
index 5523f28..9704b21 100644
--- a/driver/driver.cpp
+++ b/driver/driver.cpp
@@ -15,7 +15,7 @@ using milliseconds = double;
struct {
milliseconds tick_interval = 0; // set in DriverEntry
- ra::variables vars;
+ ra::mouse_modifier modifier;
} global;
VOID
@@ -69,25 +69,25 @@ Arguments:
static_cast<double>(it->LastY)
};
- if (global.vars.apply_rotate) {
- input = global.vars.rotate(input);
- }
-
- if (global.vars.apply_accel && local_apply_accel) {
+ if (global.modifier.apply_accel && local_apply_accel) {
auto now = KeQueryPerformanceCounter(NULL).QuadPart;
auto ticks = now - devExt->counter.QuadPart;
devExt->counter.QuadPart = now;
milliseconds time = ticks * global.tick_interval;
- if (time < global.vars.accel_fn.time_min) {
+ if (time < global.modifier.accel_fn.time_min) {
DebugPrint(("RA time < min with %d ticks\n", ticks));
}
- input = global.vars.accel_fn(input, time);
+ input = global.modifier.modify(input, time);
+ }
+ else
+ {
+ input = global.modifier.modify(input);
}
- double result_x = input.x * global.vars.sensitivity.x + local_carry.x;
- double result_y = input.y * global.vars.sensitivity.y + local_carry.y;
+ double result_x = input.x * global.modifier.sensitivity.x + local_carry.x;
+ double result_y = input.y * global.modifier.sensitivity.y + local_carry.y;
LONG out_x = static_cast<LONG>(result_x);
LONG out_y = static_cast<LONG>(result_y);
@@ -154,7 +154,7 @@ Return Value:
DebugPrint(("Ioctl received into filter control object.\n"));
- if (InputBufferLength != sizeof(ra::variables)) {
+ if (InputBufferLength != sizeof(ra::mouse_modifier)) {
DebugPrint(("Received unknown request of %u bytes\n", InputBufferLength));
// status maps to win32 error code 1784: ERROR_INVALID_USER_BUFFER
WdfRequestComplete(Request, STATUS_INVALID_BUFFER_SIZE);
@@ -163,7 +163,7 @@ Return Value:
status = WdfRequestRetrieveInputBuffer(
Request,
- sizeof(ra::variables),
+ sizeof(ra::mouse_modifier),
&input_buffer,
&input_size
);
@@ -175,7 +175,7 @@ Return Value:
return;
}
- global.vars = *reinterpret_cast<ra::variables*>(input_buffer);
+ global.modifier = *reinterpret_cast<ra::mouse_modifier*>(input_buffer);
WdfRequestComplete(Request, STATUS_SUCCESS);
}