From 3226272a2d49bcbaec72ec735c22b4e0cc2a5c57 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 27 Jul 2020 19:31:09 -0700 Subject: skeleton --- common/rawaccel-userspace.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index db50b35..bca6997 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -19,7 +19,7 @@ void error(const char* s) { variables parse(int argc, char** argv) { double degrees = 0; vec2d sens = { 1, 1 }; - accel_function::args_t accel_args{}; + args_t accel_args{}; auto make_opt_vec = [](vec2d& v, auto first_flag, auto... rest) { return clipp::option(first_flag, rest...) & ( -- cgit v1.2.3 From b1ef35050600978318581586691f5a8f119abf5b Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 28 Jul 2020 02:44:09 -0700 Subject: Rename variables and add modify functions --- common/rawaccel-userspace.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'common/rawaccel-userspace.hpp') 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 -- cgit v1.2.3 From 06d6d8d3e3cb5186daab029f2d7c7fa3ea0438d2 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 28 Jul 2020 15:25:41 -0700 Subject: Rename acceleration constants, arguments --- common/rawaccel-userspace.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index d0722b6..5996364 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -19,7 +19,7 @@ void error(const char* s) { mouse_modifier parse(int argc, char** argv) { double degrees = 0; vec2d sens = { 1, 1 }; - args_t accel_args{}; + accel_args accel_args{}; auto make_opt_vec = [](vec2d& v, auto first_flag, auto... rest) { return clipp::option(first_flag, rest...) & ( -- cgit v1.2.3 From cdd82efdfdd7c2e9b4c2ed9777792f9921eedb9e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 28 Jul 2020 17:21:39 -0700 Subject: Get rid of enum and use types\tags directly --- common/rawaccel-userspace.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 5996364..82a9e98 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -68,34 +68,34 @@ mouse_modifier parse(int argc, char** argv) { // modes auto noaccel_mode = "no-accel mode" % ( - clipp::command("off", "noaccel").set(accel_args.accel_mode, mode::noaccel) + clipp::command("off", "noaccel").set(accel_args.accel_mode, accel_implementation_t::id) ); auto lin_mode = "linear accel mode:" % ( - clipp::command("linear").set(accel_args.accel_mode, mode::linear), + clipp::command("linear").set(accel_args.accel_mode, accel_implementation_t::id), accel_var ); auto classic_mode = "classic accel mode:" % ( - clipp::command("classic").set(accel_args.accel_mode, mode::classic), + clipp::command("classic").set(accel_args.accel_mode, accel_implementation_t::id), accel_var, (clipp::required("exponent") & clipp::number("num", accel_args.lim_exp)) % "exponent" ); auto nat_mode = "natural accel mode:" % ( - clipp::command("natural").set(accel_args.accel_mode, mode::natural), + clipp::command("natural").set(accel_args.accel_mode, accel_implementation_t::id), accel_var, limit_var ); auto log_mode = "logarithmic accel mode:" % ( - clipp::command("logarithmic").set(accel_args.accel_mode, mode::logarithmic), + clipp::command("logarithmic").set(accel_args.accel_mode, accel_implementation_t::id), accel_var ); auto sig_mode = "sigmoid accel mode:" % ( - clipp::command("sigmoid").set(accel_args.accel_mode, mode::sigmoid), + clipp::command("sigmoid").set(accel_args.accel_mode, accel_implementation_t::id), accel_var, limit_var, (clipp::required("midpoint") & clipp::number("speed", accel_args.midpoint)) % "midpoint" ); auto pow_mode = "power accel mode:" % ( - clipp::command("power").set(accel_args.accel_mode, mode::power) >> [&] { accel_args.accel = 1; }, + clipp::command("power").set(accel_args.accel_mode, accel_implementation_t::id) >> [&] { accel_args.accel = 1; }, (clipp::required("exponent") & clipp::number("num", accel_args.lim_exp)) % "exponent", (clipp::option("scale") & clipp::number("num", accel_args.accel)) % "scale factor" ); -- cgit v1.2.3 From 344f759dad28c8b3866d7942bd8927ef1caaf6ab Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 28 Jul 2020 18:16:12 -0700 Subject: add per-class args structs --- common/rawaccel-userspace.hpp | 44 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 82a9e98..3e8886f 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -17,9 +17,7 @@ void error(const char* s) { } mouse_modifier parse(int argc, char** argv) { - double degrees = 0; - vec2d sens = { 1, 1 }; - accel_args accel_args{}; + modifier_args modifier_args{}; auto make_opt_vec = [](vec2d& v, auto first_flag, auto... rest) { return clipp::option(first_flag, rest...) & ( @@ -40,64 +38,64 @@ mouse_modifier parse(int argc, char** argv) { }; // default options - auto opt_sens = "sensitivity (default = 1)" % make_opt_vec(sens, "sens"); + auto opt_sens = "sensitivity (default = 1)" % make_opt_vec(modifier_args.sens, "sens"); auto opt_rot = "counter-clockwise rotation (default = 0)" % ( clipp::option("rotate") & - clipp::number("degrees", degrees) + clipp::number("degrees", modifier_args.degrees) ); // mode-independent accel options auto opt_weight = "accel multiplier (default = 1)" % - make_opt_vec(accel_args.weight, "weight"); + make_opt_vec(modifier_args.acc_fn_args.weight, "weight"); auto opt_offset = "speed (dots/ms) where accel kicks in (default = 0)" % ( - clipp::option("offset") & clipp::number("speed", accel_args.offset) + clipp::option("offset") & clipp::number("speed", modifier_args.acc_fn_args.acc_args.offset) ); auto opt_cap = "accel scale cap (default = 9)" % - make_opt_vec(accel_args.cap, "cap"); + make_opt_vec(modifier_args.acc_fn_args.cap, "cap"); auto opt_tmin = "minimum time between polls (default = 0.4)" % ( clipp::option("tmin") & - clipp::number("ms", accel_args.time_min) + clipp::number("ms", modifier_args.acc_fn_args.acc_args.time_min) ); - auto accel_var = (clipp::required("accel") & clipp::number("num", accel_args.accel)) % "ramp rate"; - auto limit_var = (clipp::required("limit") & clipp::number("scale", accel_args.lim_exp)) % "limit"; + auto accel_var = (clipp::required("accel") & clipp::number("num", modifier_args.acc_fn_args.acc_args.accel)) % "ramp rate"; + auto limit_var = (clipp::required("limit") & clipp::number("scale", modifier_args.acc_fn_args.acc_args.lim_exp)) % "limit"; // modes auto noaccel_mode = "no-accel mode" % ( - clipp::command("off", "noaccel").set(accel_args.accel_mode, accel_implementation_t::id) + clipp::command("off", "noaccel").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id) ); auto lin_mode = "linear accel mode:" % ( - clipp::command("linear").set(accel_args.accel_mode, accel_implementation_t::id), + clipp::command("linear").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), accel_var ); auto classic_mode = "classic accel mode:" % ( - clipp::command("classic").set(accel_args.accel_mode, accel_implementation_t::id), + clipp::command("classic").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), accel_var, - (clipp::required("exponent") & clipp::number("num", accel_args.lim_exp)) % "exponent" + (clipp::required("exponent") & clipp::number("num", modifier_args.acc_fn_args.acc_args.lim_exp)) % "exponent" ); auto nat_mode = "natural accel mode:" % ( - clipp::command("natural").set(accel_args.accel_mode, accel_implementation_t::id), + clipp::command("natural").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), accel_var, limit_var ); auto log_mode = "logarithmic accel mode:" % ( - clipp::command("logarithmic").set(accel_args.accel_mode, accel_implementation_t::id), + clipp::command("logarithmic").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), accel_var ); auto sig_mode = "sigmoid accel mode:" % ( - clipp::command("sigmoid").set(accel_args.accel_mode, accel_implementation_t::id), + clipp::command("sigmoid").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), accel_var, limit_var, - (clipp::required("midpoint") & clipp::number("speed", accel_args.midpoint)) % "midpoint" + (clipp::required("midpoint") & clipp::number("speed", modifier_args.acc_fn_args.acc_args.midpoint)) % "midpoint" ); auto pow_mode = "power accel mode:" % ( - clipp::command("power").set(accel_args.accel_mode, accel_implementation_t::id) >> [&] { accel_args.accel = 1; }, - (clipp::required("exponent") & clipp::number("num", accel_args.lim_exp)) % "exponent", - (clipp::option("scale") & clipp::number("num", accel_args.accel)) % "scale factor" + clipp::command("power").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id) >> [&] { modifier_args.acc_fn_args.acc_args.accel = 1; }, + (clipp::required("exponent") & clipp::number("num", modifier_args.acc_fn_args.acc_args.lim_exp)) % "exponent", + (clipp::option("scale") & clipp::number("num", modifier_args.acc_fn_args.acc_args.accel)) % "scale factor" ); auto accel_mode_exclusive = (lin_mode | classic_mode | nat_mode | log_mode | sig_mode | pow_mode); @@ -121,7 +119,7 @@ mouse_modifier parse(int argc, char** argv) { std::exit(0); } - return mouse_modifier(-degrees, sens, accel_args); + return mouse_modifier(modifier_args); } } // rawaccel -- cgit v1.2.3 From e8417a29fb2153ea035a757f36bfa300cf8b480d Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 30 Jul 2020 17:07:35 -0400 Subject: add tweaks for st-refactor --- common/rawaccel-userspace.hpp | 53 +++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 3e8886f..49c0fcd 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -4,6 +4,7 @@ #include "external/clipp.h" +#include #include "rawaccel.hpp" namespace rawaccel { @@ -12,12 +13,14 @@ inline constexpr int SYSTEM_ERROR = -1; inline constexpr int PARSE_ERROR = 1; inline constexpr int INVALID_ARGUMENT = 2; -void error(const char* s) { - throw std::domain_error(s); +template +clipp::parameter make_accel_cmd(modifier_args& args, StrFirst&& first_flag, StrRest&&... rest) { + return clipp::command(first_flag, rest...) + .set(args.acc_fn_args.accel_mode, accel_impl_t::id); } mouse_modifier parse(int argc, char** argv) { - modifier_args modifier_args{}; + modifier_args args{}; auto make_opt_vec = [](vec2d& v, auto first_flag, auto... rest) { return clipp::option(first_flag, rest...) & ( @@ -38,64 +41,64 @@ mouse_modifier parse(int argc, char** argv) { }; // default options - auto opt_sens = "sensitivity (default = 1)" % make_opt_vec(modifier_args.sens, "sens"); + auto opt_sens = "sensitivity (default = 1)" % make_opt_vec(args.sens, "sens"); auto opt_rot = "counter-clockwise rotation (default = 0)" % ( clipp::option("rotate") & - clipp::number("degrees", modifier_args.degrees) + clipp::number("degrees", args.degrees) ); // mode-independent accel options auto opt_weight = "accel multiplier (default = 1)" % - make_opt_vec(modifier_args.acc_fn_args.weight, "weight"); + make_opt_vec(args.acc_fn_args.weight, "weight"); auto opt_offset = "speed (dots/ms) where accel kicks in (default = 0)" % ( - clipp::option("offset") & clipp::number("speed", modifier_args.acc_fn_args.acc_args.offset) + clipp::option("offset") & clipp::number("speed", args.acc_fn_args.acc_args.offset) ); auto opt_cap = "accel scale cap (default = 9)" % - make_opt_vec(modifier_args.acc_fn_args.cap, "cap"); + make_opt_vec(args.acc_fn_args.cap, "cap"); auto opt_tmin = "minimum time between polls (default = 0.4)" % ( clipp::option("tmin") & - clipp::number("ms", modifier_args.acc_fn_args.acc_args.time_min) + clipp::number("ms", args.acc_fn_args.time_min) ); - auto accel_var = (clipp::required("accel") & clipp::number("num", modifier_args.acc_fn_args.acc_args.accel)) % "ramp rate"; - auto limit_var = (clipp::required("limit") & clipp::number("scale", modifier_args.acc_fn_args.acc_args.lim_exp)) % "limit"; + auto accel_var = (clipp::required("accel") & clipp::number("num", args.acc_fn_args.acc_args.accel)) % "ramp rate"; + auto limit_var = (clipp::required("limit") & clipp::number("scale", args.acc_fn_args.acc_args.limit)) % "limit"; + auto exp_var = (clipp::required("exponent") & clipp::number("num", args.acc_fn_args.acc_args.exponent)) % "exponent"; // modes - auto noaccel_mode = "no-accel mode" % ( - clipp::command("off", "noaccel").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id) - ); + auto noaccel_mode = "no-accel mode" % make_accel_cmd(args, "off", "noaccel"); + auto lin_mode = "linear accel mode:" % ( - clipp::command("linear").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), + make_accel_cmd(args, "linear"), accel_var ); auto classic_mode = "classic accel mode:" % ( - clipp::command("classic").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), + make_accel_cmd(args, "classic"), accel_var, - (clipp::required("exponent") & clipp::number("num", modifier_args.acc_fn_args.acc_args.lim_exp)) % "exponent" + exp_var ); auto nat_mode = "natural accel mode:" % ( - clipp::command("natural").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), + make_accel_cmd(args, "natural"), accel_var, limit_var ); auto log_mode = "logarithmic accel mode:" % ( - clipp::command("logarithmic").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), + make_accel_cmd(args, "logarithmic"), accel_var ); auto sig_mode = "sigmoid accel mode:" % ( - clipp::command("sigmoid").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id), + make_accel_cmd(args, "sigmoid"), accel_var, limit_var, - (clipp::required("midpoint") & clipp::number("speed", modifier_args.acc_fn_args.acc_args.midpoint)) % "midpoint" + (clipp::required("midpoint") & clipp::number("speed", args.acc_fn_args.acc_args.midpoint)) % "midpoint" ); auto pow_mode = "power accel mode:" % ( - clipp::command("power").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id) >> [&] { modifier_args.acc_fn_args.acc_args.accel = 1; }, - (clipp::required("exponent") & clipp::number("num", modifier_args.acc_fn_args.acc_args.lim_exp)) % "exponent", - (clipp::option("scale") & clipp::number("num", modifier_args.acc_fn_args.acc_args.accel)) % "scale factor" + make_accel_cmd(args, "power"), + exp_var, + (clipp::option("scale") & clipp::number("num", args.acc_fn_args.acc_args.power_scale)) % "scale factor" ); auto accel_mode_exclusive = (lin_mode | classic_mode | nat_mode | log_mode | sig_mode | pow_mode); @@ -119,7 +122,7 @@ mouse_modifier parse(int argc, char** argv) { std::exit(0); } - return mouse_modifier(modifier_args); + return mouse_modifier(args); } } // rawaccel -- cgit v1.2.3 From b59cf98c2f326abeb6b993d8ecc5759d23096253 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 30 Jul 2020 22:04:44 -0400 Subject: Make weight a member of accel_base This exposes weight to derived accel types, which now supply a method to transform acceleration into scale. --- common/rawaccel-userspace.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 49c0fcd..6a79d23 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -50,7 +50,7 @@ mouse_modifier parse(int argc, char** argv) { // mode-independent accel options auto opt_weight = "accel multiplier (default = 1)" % - make_opt_vec(args.acc_fn_args.weight, "weight"); + make_opt_vec(args.acc_fn_args.acc_args.weight, "weight"); auto opt_offset = "speed (dots/ms) where accel kicks in (default = 0)" % ( clipp::option("offset") & clipp::number("speed", args.acc_fn_args.acc_args.offset) -- cgit v1.2.3 From b3ed8fd4e4fcad0b749126dee62588260d74b106 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Fri, 31 Jul 2020 01:37:41 -0400 Subject: add more tweaks for st-refactor --- common/rawaccel-userspace.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'common/rawaccel-userspace.hpp') diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 6a79d23..c80262c 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -4,7 +4,7 @@ #include "external/clipp.h" -#include +#include "accel-error.hpp" #include "rawaccel.hpp" namespace rawaccel { -- cgit v1.2.3