mirror of https://github.com/nirenjan/libx52.git
Move arrays into mouse handler file
parent
e810f43512
commit
6b94d0653e
|
|
@ -60,7 +60,7 @@ test('daemon-communication', files('test_daemon_comm.py')[0],
|
|||
x52d_mouse_test_sources = ['x52d_mouse_test.c', 'x52d_mouse.c']
|
||||
x52d_mouse_test = executable('x52d-mouse-test', x52d_mouse_test_sources,
|
||||
include_directories: includes,
|
||||
dependencies: [dep_pinelog, dep_cmocka, dep_intl])
|
||||
dependencies: [dep_pinelog, dep_cmocka, dep_intl, dep_math])
|
||||
|
||||
test('x52d-mouse-test', x52d_mouse_test, protocol: 'tap')
|
||||
|
||||
|
|
|
|||
|
|
@ -26,18 +26,10 @@
|
|||
#define MIN_SENSITIVITY 10
|
||||
#define MAX_SENSITIVITY 500
|
||||
|
||||
static const double MOUSE_CURVE_FACTORS[5] = {
|
||||
1.0, 1.2, 1.5, 1.8, 2.2
|
||||
};
|
||||
|
||||
static const double MOUSE_DEADZONES[12] = {
|
||||
0.0, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
|
||||
};
|
||||
|
||||
volatile int mouse_scroll_dir = 1;
|
||||
volatile bool mouse_isometric_mode = false;
|
||||
volatile double mouse_curve_factor = MOUSE_CURVE_FACTORS[2]; // default
|
||||
volatile double mouse_deadzone = MOUSE_DEADZONES[0];
|
||||
volatile int mouse_curve_factor = 3;
|
||||
volatile int mouse_deadzone_factor = 0;
|
||||
volatile int mouse_sensitivity = 0;
|
||||
|
||||
static int clamp_int(const char *description, int value, int min, int max)
|
||||
|
|
@ -127,17 +119,14 @@ void x52d_cfg_set_Mouse_Sensitivity(int factor)
|
|||
void x52d_cfg_set_Mouse_CurveFactor(int factor)
|
||||
{
|
||||
// Factor ranges from 1-5, clamp it in this range
|
||||
factor = clamp_int(_("curve factor"), factor, 1, 5);
|
||||
|
||||
mouse_curve_factor = MOUSE_CURVE_FACTORS[factor-1];
|
||||
// Shift by 1 so it uses the correct index
|
||||
mouse_curve_factor = clamp_int(_("curve factor"), factor, 1, 5) - 1;
|
||||
PINELOG_DEBUG(_("Setting mouse curve factor to %f"), mouse_curve_factor);
|
||||
}
|
||||
|
||||
void x52d_cfg_set_Mouse_Deadzone(int factor)
|
||||
{
|
||||
// Factor ranges from 0-12, clamp it in this range
|
||||
factor = clamp_int(_("deadzone factor"), factor, 0, 11);
|
||||
|
||||
mouse_deadzone = MOUSE_DEADZONES[factor];
|
||||
PINELOG_DEBUG(_("Setting mouse deadzone to %f"), mouse_deadzone);
|
||||
mouse_deadzone_factor = clamp_int(_("deadzone factor"), factor, 0, 11);
|
||||
PINELOG_DEBUG(_("Setting mouse deadzone to %f"), mouse_deadzone_factor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
|
||||
extern volatile bool mouse_isometric_mode;
|
||||
extern volatile int mouse_scroll_dir;
|
||||
extern volatile double mouse_curve_factor;
|
||||
extern volatile double mouse_deadzone;
|
||||
extern volatile int mouse_curve_factor;
|
||||
extern volatile int mouse_deadzone_factor;
|
||||
extern volatile int mouse_sensitivity;
|
||||
|
||||
void x52d_mouse_thread_control(bool enabled);
|
||||
|
|
|
|||
|
|
@ -91,6 +91,14 @@ static inline int fsgn(double f)
|
|||
return (f >= 0 ? 1 : -1);
|
||||
}
|
||||
|
||||
static const double MOUSE_CURVE_FACTORS[5] = {
|
||||
1.0, 1.2, 1.5, 1.8, 2.2
|
||||
};
|
||||
|
||||
static const double MOUSE_DEADZONES[12] = {
|
||||
0.0, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
|
||||
};
|
||||
|
||||
static int report_axis(void)
|
||||
{
|
||||
#define MAX_TICK_SPEED 250.0
|
||||
|
|
@ -104,9 +112,10 @@ static int report_axis(void)
|
|||
|
||||
/* Calculate radial magnitude */
|
||||
double mag = sqrt((double)(dx * dx + dy * dy));
|
||||
double cfg_deadzone = MOUSE_DEADZONES[mouse_deadzone_factor];
|
||||
|
||||
/* Radial deadzone check */
|
||||
if (mag <= mouse_deadzone) {
|
||||
if (mag <= cfg_deadzone) {
|
||||
accum_x = 0.0;
|
||||
accum_y = 0.0;
|
||||
return 0;
|
||||
|
|
@ -114,15 +123,16 @@ static int report_axis(void)
|
|||
|
||||
/* Calculate gain */
|
||||
double gain = (double)mouse_sensitivity / 100.0;
|
||||
double exponent = MOUSE_CURVE_FACTORS[mouse_curve_factor];
|
||||
|
||||
/* Normalize magnitude */
|
||||
double adj_mag = mag - mouse_deadzone;
|
||||
double adj_mag = mag - cfg_deadzone;
|
||||
double out_x = 0.0;
|
||||
double out_y = 0.0;
|
||||
|
||||
if (mouse_isometric_mode) {
|
||||
/* Isometric mode: speed is a function of total distance */
|
||||
double speed = gain * pow(adj_mag, mouse_curve_factor);
|
||||
double speed = gain * pow(adj_mag, exponent);
|
||||
|
||||
/* Clamp total speed before breaking into components */
|
||||
if (speed > MAX_TICK_SPEED) {
|
||||
|
|
@ -138,8 +148,8 @@ static int report_axis(void)
|
|||
double cur_x = dx * ratio;
|
||||
double cur_y = dy * ratio;
|
||||
|
||||
out_x = fsgn(cur_x) * gain * pow(fabs(cur_x), mouse_curve_factor);
|
||||
out_y = fsgn(cur_y) * gain * pow(fabs(cur_y), mouse_curve_factor);
|
||||
out_x = fsgn(cur_x) * gain * pow(fabs(cur_x), exponent);
|
||||
out_y = fsgn(cur_y) * gain * pow(fabs(cur_y), exponent);
|
||||
|
||||
/* Clamp individual axis speeds */
|
||||
if (fabs(out_x) > MAX_TICK_SPEED) {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: libx52 0.3.3\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
||||
"POT-Creation-Date: 2026-04-01 14:00-0700\n"
|
||||
"POT-Creation-Date: 2026-04-01 14:23-0700\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
@ -142,13 +142,13 @@ msgstr ""
|
|||
msgid "Unknown LED state %d"
|
||||
msgstr ""
|
||||
|
||||
#: libx52/x52_stringify.c:47 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:63
|
||||
#: daemon/x52d_mouse.c:103 daemon/x52d_mouse.c:115
|
||||
#: libx52/x52_stringify.c:47 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:55
|
||||
#: daemon/x52d_mouse.c:95 daemon/x52d_mouse.c:107
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: libx52/x52_stringify.c:48 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:63
|
||||
#: daemon/x52d_mouse.c:103 daemon/x52d_mouse.c:115
|
||||
#: libx52/x52_stringify.c:48 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:55
|
||||
#: daemon/x52d_mouse.c:95 daemon/x52d_mouse.c:107
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -864,64 +864,64 @@ msgstr ""
|
|||
msgid "Shutting down X52 I/O driver thread"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:46 daemon/x52d_mouse.c:52
|
||||
#: daemon/x52d_mouse.c:38 daemon/x52d_mouse.c:44
|
||||
#, c-format
|
||||
msgid "Clamping %s value %d to range [%d..%d]"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:62
|
||||
#: daemon/x52d_mouse.c:54
|
||||
#, c-format
|
||||
msgid "Setting mouse enable to %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:79
|
||||
#: daemon/x52d_mouse.c:71
|
||||
msgid ""
|
||||
"Config option 'mouse.speed' is DEPRECATED. Please use 'mouse.sensitivity' "
|
||||
"instead"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:94
|
||||
#: daemon/x52d_mouse.c:86
|
||||
#, c-format
|
||||
msgid "Migrating legacy mouse speed '%d' to sensitivity '%d%%'"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:96
|
||||
#: daemon/x52d_mouse.c:88
|
||||
msgid "speed -> sensitivity"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:102
|
||||
#: daemon/x52d_mouse.c:94
|
||||
#, c-format
|
||||
msgid "Setting mouse reverse scroll to %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:114
|
||||
#: daemon/x52d_mouse.c:106
|
||||
#, c-format
|
||||
msgid "Setting mouse isometric mode to %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:121
|
||||
#: daemon/x52d_mouse.c:113
|
||||
msgid "sensitivity"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:124
|
||||
#: daemon/x52d_mouse.c:116
|
||||
#, c-format
|
||||
msgid "Setting mouse sensitivity to %d%%"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:130
|
||||
#: daemon/x52d_mouse.c:123
|
||||
msgid "curve factor"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:133
|
||||
#: daemon/x52d_mouse.c:124
|
||||
#, c-format
|
||||
msgid "Setting mouse curve factor to %f"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:139
|
||||
#: daemon/x52d_mouse.c:130
|
||||
msgid "deadzone factor"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:142
|
||||
#: daemon/x52d_mouse.c:131
|
||||
#, c-format
|
||||
msgid "Setting mouse deadzone to %f"
|
||||
msgstr ""
|
||||
|
|
@ -936,33 +936,33 @@ msgstr ""
|
|||
msgid "Error writing mouse wheel event %d"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:175
|
||||
#: daemon/x52d_mouse_handler.c:185
|
||||
#, c-format
|
||||
msgid "Error %d writing mouse axis event (dx %d, dy %d)"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:187
|
||||
#: daemon/x52d_mouse_handler.c:197
|
||||
msgid "Error writing mouse sync event"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:206
|
||||
#: daemon/x52d_mouse_handler.c:216
|
||||
msgid "Starting X52 virtual mouse driver thread"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:225
|
||||
#: daemon/x52d_mouse_handler.c:235
|
||||
#, c-format
|
||||
msgid "Error %d initializing mouse thread: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:232
|
||||
#: daemon/x52d_mouse_handler.c:242
|
||||
msgid "Shutting down X52 virtual mouse driver thread"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:239
|
||||
#: daemon/x52d_mouse_handler.c:249
|
||||
msgid "Virtual mouse not created. Ignoring thread state change"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:291 daemon/x52d_mouse_handler.c:299
|
||||
#: daemon/x52d_mouse_handler.c:301 daemon/x52d_mouse_handler.c:309
|
||||
#, c-format
|
||||
msgid "Error %d creating X52 virtual mouse"
|
||||
msgstr ""
|
||||
|
|
|
|||
50
po/xx_PL.po
50
po/xx_PL.po
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: libx52 0.2.3\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
||||
"POT-Creation-Date: 2026-04-01 14:00-0700\n"
|
||||
"POT-Creation-Date: 2026-04-01 14:23-0700\n"
|
||||
"PO-Revision-Date: 2026-03-27 08:33-0700\n"
|
||||
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
|
||||
"Language-Team: Dummy Language for testing i18n\n"
|
||||
|
|
@ -142,13 +142,13 @@ msgstr "YYay-MMay-DDay"
|
|||
msgid "Unknown LED state %d"
|
||||
msgstr "Unknownay EDLay atestay %d"
|
||||
|
||||
#: libx52/x52_stringify.c:47 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:63
|
||||
#: daemon/x52d_mouse.c:103 daemon/x52d_mouse.c:115
|
||||
#: libx52/x52_stringify.c:47 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:55
|
||||
#: daemon/x52d_mouse.c:95 daemon/x52d_mouse.c:107
|
||||
msgid "off"
|
||||
msgstr "offay"
|
||||
|
||||
#: libx52/x52_stringify.c:48 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:63
|
||||
#: daemon/x52d_mouse.c:103 daemon/x52d_mouse.c:115
|
||||
#: libx52/x52_stringify.c:48 daemon/x52d_clock.c:29 daemon/x52d_mouse.c:55
|
||||
#: daemon/x52d_mouse.c:95 daemon/x52d_mouse.c:107
|
||||
msgid "on"
|
||||
msgstr "onay"
|
||||
|
||||
|
|
@ -917,64 +917,64 @@ msgstr "Erroray %d initializingay I/O iverdray eadthray: %s"
|
|||
msgid "Shutting down X52 I/O driver thread"
|
||||
msgstr "Uttingshay ownday X52 I/O iverdray eadthray"
|
||||
|
||||
#: daemon/x52d_mouse.c:46 daemon/x52d_mouse.c:52
|
||||
#: daemon/x52d_mouse.c:38 daemon/x52d_mouse.c:44
|
||||
#, c-format
|
||||
msgid "Clamping %s value %d to range [%d..%d]"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:62
|
||||
#: daemon/x52d_mouse.c:54
|
||||
#, c-format
|
||||
msgid "Setting mouse enable to %s"
|
||||
msgstr "Ettingsay ousemay enableay otay %s"
|
||||
|
||||
#: daemon/x52d_mouse.c:79
|
||||
#: daemon/x52d_mouse.c:71
|
||||
msgid ""
|
||||
"Config option 'mouse.speed' is DEPRECATED. Please use 'mouse.sensitivity' "
|
||||
"instead"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:94
|
||||
#: daemon/x52d_mouse.c:86
|
||||
#, c-format
|
||||
msgid "Migrating legacy mouse speed '%d' to sensitivity '%d%%'"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:96
|
||||
#: daemon/x52d_mouse.c:88
|
||||
msgid "speed -> sensitivity"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse.c:102
|
||||
#: daemon/x52d_mouse.c:94
|
||||
#, c-format
|
||||
msgid "Setting mouse reverse scroll to %s"
|
||||
msgstr "Ettingsay ousemay everseray ollscray otay %s"
|
||||
|
||||
#: daemon/x52d_mouse.c:114
|
||||
#: daemon/x52d_mouse.c:106
|
||||
#, c-format
|
||||
msgid "Setting mouse isometric mode to %s"
|
||||
msgstr "Ettingsay ousemay isometricay odemay otay %s"
|
||||
|
||||
#: daemon/x52d_mouse.c:121
|
||||
#: daemon/x52d_mouse.c:113
|
||||
msgid "sensitivity"
|
||||
msgstr "ensitivitysay"
|
||||
|
||||
#: daemon/x52d_mouse.c:124
|
||||
#: daemon/x52d_mouse.c:116
|
||||
#, c-format
|
||||
msgid "Setting mouse sensitivity to %d%%"
|
||||
msgstr "Ettingsay ousemay ensitivitysay otay %s"
|
||||
|
||||
#: daemon/x52d_mouse.c:130
|
||||
#: daemon/x52d_mouse.c:123
|
||||
msgid "curve factor"
|
||||
msgstr "urvecay actorfay"
|
||||
|
||||
#: daemon/x52d_mouse.c:133
|
||||
#: daemon/x52d_mouse.c:124
|
||||
#, c-format
|
||||
msgid "Setting mouse curve factor to %f"
|
||||
msgstr "Ettingsay ousemay urvecay actorfay otay %s"
|
||||
|
||||
#: daemon/x52d_mouse.c:139
|
||||
#: daemon/x52d_mouse.c:130
|
||||
msgid "deadzone factor"
|
||||
msgstr "eadzoneday actorfay"
|
||||
|
||||
#: daemon/x52d_mouse.c:142
|
||||
#: daemon/x52d_mouse.c:131
|
||||
#, c-format
|
||||
msgid "Setting mouse deadzone to %f"
|
||||
msgstr "Ettingsay ousemay eadzoneday otay %s"
|
||||
|
|
@ -990,33 +990,33 @@ msgstr ""
|
|||
msgid "Error writing mouse wheel event %d"
|
||||
msgstr "Erroray itingwray ousemay eelwhay eventay %d"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:175
|
||||
#: daemon/x52d_mouse_handler.c:185
|
||||
#, c-format
|
||||
msgid "Error %d writing mouse axis event (dx %d, dy %d)"
|
||||
msgstr "Erroray %d itingwray ousemay axisay eventay (xday %d, yday %d)"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:187
|
||||
#: daemon/x52d_mouse_handler.c:197
|
||||
msgid "Error writing mouse sync event"
|
||||
msgstr "Erroray itingwray ousemay yncsay eventay"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:206
|
||||
#: daemon/x52d_mouse_handler.c:216
|
||||
msgid "Starting X52 virtual mouse driver thread"
|
||||
msgstr "Artingstay X52 irtualvay ousemay iverdray eadthray"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:225
|
||||
#: daemon/x52d_mouse_handler.c:235
|
||||
#, c-format
|
||||
msgid "Error %d initializing mouse thread: %s"
|
||||
msgstr "Erroray %d initializingay ousemay eadthray: %s"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:232
|
||||
#: daemon/x52d_mouse_handler.c:242
|
||||
msgid "Shutting down X52 virtual mouse driver thread"
|
||||
msgstr "Uttingshay ownday X52 irtualvay ousemay iverdray eadthray"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:239
|
||||
#: daemon/x52d_mouse_handler.c:249
|
||||
msgid "Virtual mouse not created. Ignoring thread state change"
|
||||
msgstr "Irtualvay ousemay otnay eatedcray. Ignoringa eadthray atestay angechay"
|
||||
|
||||
#: daemon/x52d_mouse_handler.c:291 daemon/x52d_mouse_handler.c:299
|
||||
#: daemon/x52d_mouse_handler.c:301 daemon/x52d_mouse_handler.c:309
|
||||
#, c-format
|
||||
msgid "Error %d creating X52 virtual mouse"
|
||||
msgstr "Erroray %d eatingcray X52 irtualvay ousemay"
|
||||
|
|
|
|||
Loading…
Reference in New Issue