diff options
| author | Jacob Palecki <[email protected]> | 2020-07-28 02:44:09 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-07-28 02:44:09 -0700 |
| commit | b1ef35050600978318581586691f5a8f119abf5b (patch) | |
| tree | 1a096e8c6d5ceff50ca169fb2295118184d629f5 | |
| parent | Remove extra mode from variables (diff) | |
| download | rawaccel-b1ef35050600978318581586691f5a8f119abf5b.tar.xz rawaccel-b1ef35050600978318581586691f5a8f119abf5b.zip | |
Rename variables and add modify functions
| -rw-r--r-- | common/rawaccel-userspace.hpp | 4 | ||||
| -rw-r--r-- | common/rawaccel.hpp | 19 | ||||
| -rw-r--r-- | console/console.cpp | 4 | ||||
| -rw-r--r-- | driver/driver.cpp | 26 |
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); } |