libx52/po
nirenjan 03d58c62e8 feat: Improve virtual mouse speed calculations
Prior to this change, the mouse speed was controlled by an opaque
numeric value, that controlled both the speed and the delay between
updates. This caused a lot of choppy behavior with lower speeds, and the
really low speeds had as little as 1% speed difference between them in
the practical pixels/second speed, while there was effectively a 50%
jump in the speed between speed settings 11 and 12, due to the
hyperbolic relationship between steps. Post that, it was an even 25%
increase in sensitivity for every step.

This change modifies it so that the old Speed option is deprecated, it
is now replaced by the Sensitivity option, which is a direct percentage
scale from 10% to 500%. In addition, there is a CurveFactor option to
let it have fine control when there is little deflection, and move
faster when further away from the center. This also adds an
IsometricMode option which computes the speed as a function of the
cartesian distance from the center (`sqrt(dx^2 + dy^2)`). The default
behavior uses the existing linear speed which controls the speed of the
X and Y axes independently, but now uses the sensitivity and curve
factors to get better behavior. Also, the mouse events are consistently
reported every 10ms. This should make it a lot smoother.

Finally, this change also adds a Deadzone factor, which allows the user
to ignore small changes near the center of the joystick that can cause
mouse drift. This deadzone uses the total distance, so if just the X or
Y axis has moved, it will still allow suppressing any play in the thumb
stick.

Issue: #44
2026-04-01 22:49:04 -07:00
..
LINGUAS Add internationalization support for x52test 2020-05-20 14:36:40 -07:00
Makevars Replace all references to x52pro-linux with libx52 2021-09-29 00:30:55 -07:00
POTFILES.in feat: Add virtual keyboard/mouse library support 2026-03-30 10:01:50 -07:00
README.md Replace all references to x52pro-linux with libx52 2021-09-29 00:30:55 -07:00
libx52.pot feat: Improve virtual mouse speed calculations 2026-04-01 22:49:04 -07:00
meson.build fix: Treat NLS=auto as enabled 2026-03-12 15:53:30 -07:00
xx_PL.po feat: Improve virtual mouse speed calculations 2026-04-01 22:49:04 -07:00

README.md

Notes for translators

libx52 is slowly being migrated to use the GNU gettext library to support internationalization (i18n). Contributions are welcome to both update the existing code to use gettext, and to add new translations.

xx_PL

xx_PL is a translation of English strings into Pig Latin that is used in lieu of any real translations. This file is used to test that the translation functionality is working as expected.

Adding new code to i18n (maintainers)

Most code should be using the _("...") format to refer to a translatable string. Some strings can be left untranslated, but these are mostly just whitespace, such as line breaks.

Once you add new strings to be translated, update po/POTFILES.in to include any new files that have to be translated. The file path is relative to the root of the project.

The next step is to rebuild the translation template libx52.pot. To do this, run make -C po update-po from your build directory (where you ran configure). This also updates any translation files (with .po extension) to include the new source strings.

Adding new languages (translators)

Run msginit -l <language-code> libx52.pot to generate a new .po file for that language. Language code is a 2 letter ISO-639-1 code with an optional ISO-3166-1 region suffix. Edit this file to add your translation, and add the new language to po/LINGUAS.

po/LINGUAS must be in alphabetical order.

Testing the i18n functionality

TODO