mirror of https://github.com/nirenjan/libx52.git
Add mouse update thread
This change adds a thread to translate thumbstick events to a virtual mouse.reverse-scroll
parent
42850bc4cd
commit
7f29f5f5fe
|
@ -14,6 +14,7 @@
|
|||
#include "x52d_const.h"
|
||||
#include "x52d_config.h"
|
||||
#include "x52d_io.h"
|
||||
#include "x52d_mouse.h"
|
||||
#include "libx52io.h"
|
||||
#include "pinelog.h"
|
||||
|
||||
|
@ -24,6 +25,7 @@ static pthread_t io_thr;
|
|||
static void process_report(libx52io_report *report, libx52io_report *prev)
|
||||
{
|
||||
// TODO: Process changes
|
||||
x52d_mouse_report_event(report);
|
||||
memcpy(prev, report, sizeof(*prev));
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "x52d_config.h"
|
||||
#include "x52d_device.h"
|
||||
#include "x52d_io.h"
|
||||
#include "x52d_mouse.h"
|
||||
#include "pinelog.h"
|
||||
|
||||
static volatile int flag_quit;
|
||||
|
@ -296,6 +297,7 @@ int main(int argc, char **argv)
|
|||
x52d_clock_init();
|
||||
#if defined(HAVE_EVDEV)
|
||||
x52d_io_init();
|
||||
x52d_mouse_evdev_init();
|
||||
#endif
|
||||
|
||||
// Apply configuration
|
||||
|
@ -328,6 +330,7 @@ int main(int argc, char **argv)
|
|||
x52d_clock_exit();
|
||||
x52d_dev_exit();
|
||||
#if defined(HAVE_EVDEV)
|
||||
x52d_mouse_evdev_exit();
|
||||
x52d_io_exit();
|
||||
#endif
|
||||
|
||||
|
|
|
@ -10,10 +10,14 @@
|
|||
#define X52D_MOUSE_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "libx52io.h"
|
||||
|
||||
extern volatile bool mouse_enabled;
|
||||
extern volatile int mouse_delay;
|
||||
|
||||
void x52d_mouse_evdev_thread_control(bool enabled);
|
||||
void x52d_mouse_evdev_init(void);
|
||||
void x52d_mouse_evdev_exit(void);
|
||||
void x52d_mouse_report_event(libx52io_report *report);
|
||||
|
||||
#endif // !defined X52D_MOUSE_H
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "libevdev/libevdev.h"
|
||||
#include "libevdev/libevdev-uinput.h"
|
||||
#include "libx52io.h"
|
||||
|
||||
#include "pinelog.h"
|
||||
#include "x52d_config.h"
|
||||
#include "x52d_const.h"
|
||||
|
@ -20,15 +24,113 @@
|
|||
static pthread_t mouse_thr;
|
||||
static bool mouse_thr_enabled = false;
|
||||
|
||||
static struct libevdev_uinput *mouse_uidev;
|
||||
static bool mouse_uidev_created = false;
|
||||
|
||||
static volatile libx52io_report old_report;
|
||||
static volatile libx52io_report new_report;
|
||||
|
||||
static int report_button_change(int button, int index)
|
||||
{
|
||||
int rc = 1;
|
||||
bool old_button = old_report.button[index];
|
||||
bool new_button = new_report.button[index];
|
||||
|
||||
if (old_button != new_button) {
|
||||
rc = libevdev_uinput_write_event(mouse_uidev, EV_KEY, button,
|
||||
(int)new_button);
|
||||
if (rc != 0) {
|
||||
PINELOG_ERROR(_("Error writing mouse button event (button %d, state %d)"),
|
||||
button, (int)new_button);
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
#define btn_change(btn) new_report.button[btn] != old_report.button[btn]
|
||||
|
||||
static int report_wheel(void)
|
||||
{
|
||||
int rc = 1;
|
||||
int wheel = 0;
|
||||
bool scroll_up = (btn_change(LIBX52IO_BTN_MOUSE_SCROLL_UP));
|
||||
bool scroll_dn = (btn_change(LIBX52IO_BTN_MOUSE_SCROLL_DN));
|
||||
|
||||
if (scroll_up) {
|
||||
// Scroll up event
|
||||
if (new_report.button[LIBX52IO_BTN_MOUSE_SCROLL_UP]) {
|
||||
wheel = 1;
|
||||
}
|
||||
} else if (scroll_dn) {
|
||||
// Scroll down event
|
||||
if (new_report.button[LIBX52IO_BTN_MOUSE_SCROLL_DN]) {
|
||||
wheel = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (wheel != 0) {
|
||||
rc = libevdev_uinput_write_event(mouse_uidev, EV_REL, REL_WHEEL, 1);
|
||||
if (rc != 0) {
|
||||
PINELOG_ERROR(_("Error writing mouse wheel event %d"), wheel);
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int report_axis(int axis, int index)
|
||||
{
|
||||
int rc = 1;
|
||||
|
||||
int axis_val = new_report.axis[index];
|
||||
|
||||
/*
|
||||
* Axis value ranges from 0 to 15, with the default midpoint at 8.
|
||||
* We need to translate this to a range of -7 to +7. Since the midpoint
|
||||
* is slightly off-center, we will shift the values left, and subtract
|
||||
* 15, effectively, giving us a range of -15 to +15. Shifting right again
|
||||
* will reduce the range to -7 to +7, and effectively ignore the reported
|
||||
* values of 7 and 8.
|
||||
*/
|
||||
axis_val = ((axis_val << 1) - 15) >> 1;
|
||||
|
||||
if (axis_val) {
|
||||
rc = libevdev_uinput_write_event(mouse_uidev, EV_REL, axis, axis_val);
|
||||
if (rc != 0) {
|
||||
PINELOG_ERROR(_("Error writing mouse axis event (axis %d, value %d)"),
|
||||
axis, axis_val);
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void * x52_mouse_thr(void *param)
|
||||
{
|
||||
bool state_changed;
|
||||
int rc;
|
||||
|
||||
PINELOG_INFO(_("Starting X52 virtual mouse driver thread"));
|
||||
for (;;) {
|
||||
usleep(mouse_delay);
|
||||
if (!mouse_enabled) {
|
||||
/* Mouse thread is disabled, check again next time */
|
||||
continue;
|
||||
/* Check if there are any changes in button state */
|
||||
state_changed = false;
|
||||
state_changed |= (0 == report_button_change(BTN_LEFT, LIBX52IO_BTN_MOUSE_PRIMARY));
|
||||
state_changed |= (0 == report_button_change(BTN_RIGHT, LIBX52IO_BTN_MOUSE_SECONDARY));
|
||||
state_changed |= (0 == report_wheel());
|
||||
state_changed |= (0 == report_axis(REL_X, LIBX52IO_AXIS_THUMBX));
|
||||
state_changed |= (0 == report_axis(REL_Y, LIBX52IO_AXIS_THUMBY));
|
||||
|
||||
if (state_changed) {
|
||||
rc = libevdev_uinput_write_event(mouse_uidev, EV_SYN, SYN_REPORT, 0);
|
||||
if (rc != 0) {
|
||||
PINELOG_ERROR(_("Error writing mouse sync event"));
|
||||
} else {
|
||||
memcpy((void *)&old_report, (void *)&new_report, sizeof(old_report));
|
||||
}
|
||||
}
|
||||
|
||||
usleep(mouse_delay);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -54,11 +156,21 @@ static void x52d_mouse_thr_exit(void)
|
|||
|
||||
void x52d_mouse_evdev_thread_control(bool enabled)
|
||||
{
|
||||
if (!mouse_uidev_created) {
|
||||
PINELOG_INFO(_("Virtual mouse not created. Ignoring thread state change"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
if (mouse_thr_enabled) {
|
||||
PINELOG_TRACE("Ignoring re-enable mouse thread");
|
||||
return;
|
||||
} else {
|
||||
memset((void *)&old_report, 0, sizeof(old_report));
|
||||
/* Set the default thumbstick values to the mid-point */
|
||||
old_report.axis[LIBX52IO_AXIS_THUMBX] = 8;
|
||||
old_report.axis[LIBX52IO_AXIS_THUMBY] = 8;
|
||||
memcpy((void *)&new_report, (void *)&old_report, sizeof(new_report));
|
||||
x52d_mouse_thr_init();
|
||||
}
|
||||
} else {
|
||||
|
@ -71,3 +183,40 @@ void x52d_mouse_evdev_thread_control(bool enabled)
|
|||
}
|
||||
mouse_thr_enabled = enabled;
|
||||
}
|
||||
|
||||
void x52d_mouse_report_event(libx52io_report *report)
|
||||
{
|
||||
memcpy((void *)&new_report, report, sizeof(new_report));
|
||||
}
|
||||
|
||||
void x52d_mouse_evdev_init(void)
|
||||
{
|
||||
int rc;
|
||||
struct libevdev *dev;
|
||||
|
||||
/* Create a new mouse device */
|
||||
dev = libevdev_new();
|
||||
libevdev_set_name(dev, "X52 virtual mouse");
|
||||
libevdev_enable_event_type(dev, EV_REL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_X, NULL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_WHEEL, NULL);
|
||||
libevdev_enable_event_type(dev, EV_KEY);
|
||||
libevdev_enable_event_code(dev, EV_KEY, BTN_LEFT, NULL);
|
||||
libevdev_enable_event_code(dev, EV_KEY, BTN_RIGHT, NULL);
|
||||
|
||||
rc = libevdev_uinput_create_from_device(dev, LIBEVDEV_UINPUT_OPEN_MANAGED,
|
||||
&mouse_uidev);
|
||||
if (rc != 0) {
|
||||
PINELOG_ERROR(_("Error %d creating X52 virtual mouse: %s"),
|
||||
-rc, strerror(-rc));
|
||||
} else {
|
||||
mouse_uidev_created = true;
|
||||
}
|
||||
}
|
||||
|
||||
void x52d_mouse_evdev_exit(void)
|
||||
{
|
||||
mouse_uidev_created = false;
|
||||
libevdev_uinput_destroy(mouse_uidev);
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: x52pro-linux 0.2.2\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n"
|
||||
"POT-Creation-Date: 2021-09-14 13:28-0700\n"
|
||||
"POT-Creation-Date: 2021-09-14 17:04-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"
|
||||
|
@ -491,17 +491,17 @@ msgstr ""
|
|||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:59
|
||||
#: daemon/x52d_main.c:60
|
||||
#, c-format
|
||||
msgid "Error %d setting log file: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:75
|
||||
#: daemon/x52d_main.c:76
|
||||
#, c-format
|
||||
msgid "Error %d installing handler for signal %d: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:86
|
||||
#: daemon/x52d_main.c:87
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: %s [-f] [-v] [-q]\n"
|
||||
|
@ -509,63 +509,63 @@ msgid ""
|
|||
"\t[-c config-file] [-p pid-file]\n"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:116
|
||||
#: daemon/x52d_main.c:117
|
||||
#, c-format
|
||||
msgid "Daemon is already running as PID %u"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:254
|
||||
#: daemon/x52d_main.c:255
|
||||
#, c-format
|
||||
msgid "Unable to parse configuration override '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:278
|
||||
#: daemon/x52d_main.c:279
|
||||
#, c-format
|
||||
msgid "Foreground = %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:278 daemon/x52d_main.c:279
|
||||
#: daemon/x52d_main.c:279 daemon/x52d_main.c:280
|
||||
msgid "true"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:278 daemon/x52d_main.c:279
|
||||
#: daemon/x52d_main.c:279 daemon/x52d_main.c:280
|
||||
msgid "false"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:279
|
||||
#, c-format
|
||||
msgid "Quiet = %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:280
|
||||
#, c-format
|
||||
msgid "Verbosity = %d"
|
||||
msgid "Quiet = %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:281
|
||||
#, c-format
|
||||
msgid "Log file = %s"
|
||||
msgid "Verbosity = %d"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:282
|
||||
#, c-format
|
||||
msgid "Log file = %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:283
|
||||
#, c-format
|
||||
msgid "Config file = %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:312
|
||||
#: daemon/x52d_main.c:314
|
||||
msgid "Reloading X52 configuration"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:319
|
||||
#: daemon/x52d_main.c:321
|
||||
msgid "Saving X52 configuration to disk"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:325
|
||||
#: daemon/x52d_main.c:327
|
||||
#, c-format
|
||||
msgid "Received termination signal %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_main.c:338
|
||||
#: daemon/x52d_main.c:341
|
||||
msgid "Shutting down X52 daemon"
|
||||
msgstr ""
|
||||
|
||||
|
@ -715,31 +715,31 @@ msgstr ""
|
|||
msgid "Error %d when updating X52 device: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_io.c:39
|
||||
#: daemon/x52d_io.c:41
|
||||
msgid "Starting X52 I/O thread"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_io.c:51
|
||||
#: daemon/x52d_io.c:53
|
||||
#, c-format
|
||||
msgid "Error %d opening X52 I/O device: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_io.c:76
|
||||
#: daemon/x52d_io.c:78
|
||||
#, c-format
|
||||
msgid "Error %d reading from X52 I/O device: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_io.c:95
|
||||
#: daemon/x52d_io.c:97
|
||||
#, c-format
|
||||
msgid "Error %d initializing X52 I/O library: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_io.c:101
|
||||
#: daemon/x52d_io.c:103
|
||||
#, c-format
|
||||
msgid "Error %d initializing I/O driver thread: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_io.c:108
|
||||
#: daemon/x52d_io.c:110
|
||||
msgid "Shutting down X52 I/O driver thread"
|
||||
msgstr ""
|
||||
|
||||
|
@ -758,15 +758,43 @@ msgstr ""
|
|||
msgid "Ignoring mouse speed %d outside supported range (0-%d)"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:25
|
||||
#: daemon/x52d_mouse_evdev.c:43
|
||||
#, c-format
|
||||
msgid "Error writing mouse button event (button %d, state %d)"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:75
|
||||
#, c-format
|
||||
msgid "Error writing mouse wheel event %d"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:101
|
||||
#, c-format
|
||||
msgid "Error writing mouse axis event (axis %d, value %d)"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:114
|
||||
msgid "Starting X52 virtual mouse driver thread"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:44
|
||||
#: daemon/x52d_mouse_evdev.c:127
|
||||
msgid "Error writing mouse sync event"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:146
|
||||
#, c-format
|
||||
msgid "Error %d initializing mouse thread: %s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:51
|
||||
#: daemon/x52d_mouse_evdev.c:153
|
||||
msgid "Shutting down X52 virtual mouse driver thread"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:160
|
||||
msgid "Virtual mouse not created. Ignoring thread state change"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:211
|
||||
#, c-format
|
||||
msgid "Error %d creating X52 virtual mouse: %s"
|
||||
msgstr ""
|
||||
|
|
92
po/xx_PL.po
92
po/xx_PL.po
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: x52pro-linux 0.2.1\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n"
|
||||
"POT-Creation-Date: 2021-09-14 13:28-0700\n"
|
||||
"PO-Revision-Date: 2021-09-14 13:28-0700\n"
|
||||
"POT-Creation-Date: 2021-09-14 17:04-0700\n"
|
||||
"PO-Revision-Date: 2021-09-14 17:07-0700\n"
|
||||
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
|
||||
"Language-Team: Dummy Language for testing i18n\n"
|
||||
"Language: xx_PL\n"
|
||||
|
@ -534,17 +534,17 @@ msgstr "Estingtay aracterchay 0x%02x..."
|
|||
msgid "OK"
|
||||
msgstr "OKay"
|
||||
|
||||
#: daemon/x52d_main.c:59
|
||||
#: daemon/x52d_main.c:60
|
||||
#, c-format
|
||||
msgid "Error %d setting log file: %s\n"
|
||||
msgstr "Erroray %d ettingsay oglay ilefay: %s\n"
|
||||
|
||||
#: daemon/x52d_main.c:75
|
||||
#: daemon/x52d_main.c:76
|
||||
#, c-format
|
||||
msgid "Error %d installing handler for signal %d: %s"
|
||||
msgstr "Erroray %d installingay andlerhay orfay ignalsay %d: %s"
|
||||
|
||||
#: daemon/x52d_main.c:86
|
||||
#: daemon/x52d_main.c:87
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: %s [-f] [-v] [-q]\n"
|
||||
|
@ -555,63 +555,63 @@ msgstr ""
|
|||
"\t[-l oglay-ilefay] [-o overrideay]\n"
|
||||
"\t[-c onfigcay-ilefay] [-p idpay-ilefay]\n"
|
||||
|
||||
#: daemon/x52d_main.c:116
|
||||
#: daemon/x52d_main.c:117
|
||||
#, c-format
|
||||
msgid "Daemon is already running as PID %u"
|
||||
msgstr "Aemonday isay alreadyay unningray asay IDPay %u"
|
||||
|
||||
#: daemon/x52d_main.c:254
|
||||
#: daemon/x52d_main.c:255
|
||||
#, c-format
|
||||
msgid "Unable to parse configuration override '%s'\n"
|
||||
msgstr "Unableay otay arsepay onfigurationcay overrideay '%s'\n"
|
||||
|
||||
#: daemon/x52d_main.c:278
|
||||
#: daemon/x52d_main.c:279
|
||||
#, c-format
|
||||
msgid "Foreground = %s"
|
||||
msgstr "Oregroundfay = %s"
|
||||
|
||||
#: daemon/x52d_main.c:278 daemon/x52d_main.c:279
|
||||
#: daemon/x52d_main.c:279 daemon/x52d_main.c:280
|
||||
msgid "true"
|
||||
msgstr "uetray"
|
||||
|
||||
#: daemon/x52d_main.c:278 daemon/x52d_main.c:279
|
||||
#: daemon/x52d_main.c:279 daemon/x52d_main.c:280
|
||||
msgid "false"
|
||||
msgstr "alsefay"
|
||||
|
||||
#: daemon/x52d_main.c:279
|
||||
#: daemon/x52d_main.c:280
|
||||
#, c-format
|
||||
msgid "Quiet = %s"
|
||||
msgstr "Uietqay = %s"
|
||||
|
||||
#: daemon/x52d_main.c:280
|
||||
#: daemon/x52d_main.c:281
|
||||
#, c-format
|
||||
msgid "Verbosity = %d"
|
||||
msgstr "Erbosityvay = %d"
|
||||
|
||||
#: daemon/x52d_main.c:281
|
||||
#: daemon/x52d_main.c:282
|
||||
#, c-format
|
||||
msgid "Log file = %s"
|
||||
msgstr "Oglay ilefay = %s"
|
||||
|
||||
#: daemon/x52d_main.c:282
|
||||
#: daemon/x52d_main.c:283
|
||||
#, c-format
|
||||
msgid "Config file = %s"
|
||||
msgstr "Onfigcay ilefay = %s"
|
||||
|
||||
#: daemon/x52d_main.c:312
|
||||
#: daemon/x52d_main.c:314
|
||||
msgid "Reloading X52 configuration"
|
||||
msgstr "Eloadingray X52 onfigurationcay"
|
||||
|
||||
#: daemon/x52d_main.c:319
|
||||
#: daemon/x52d_main.c:321
|
||||
msgid "Saving X52 configuration to disk"
|
||||
msgstr "Avingsay X52 onfigurationcay otay iskday"
|
||||
|
||||
#: daemon/x52d_main.c:325
|
||||
#: daemon/x52d_main.c:327
|
||||
#, c-format
|
||||
msgid "Received termination signal %s"
|
||||
msgstr "Eceivedray erminationtay ignalsay %s"
|
||||
|
||||
#: daemon/x52d_main.c:338
|
||||
#: daemon/x52d_main.c:341
|
||||
msgid "Shutting down X52 daemon"
|
||||
msgstr "Uttingshay ownday X52 aemonday"
|
||||
|
||||
|
@ -764,33 +764,33 @@ msgstr "Erroray %d enwhay updatingay X52 arameterpay: %s"
|
|||
msgid "Error %d when updating X52 device: %s"
|
||||
msgstr "Erroray %d enwhay updatingay X52 eviceday: %s"
|
||||
|
||||
#: daemon/x52d_io.c:39
|
||||
#: daemon/x52d_io.c:41
|
||||
msgid "Starting X52 I/O thread"
|
||||
msgstr "Artingstay X52 I/O eadthray"
|
||||
|
||||
#: daemon/x52d_io.c:51
|
||||
#: daemon/x52d_io.c:53
|
||||
#, c-format
|
||||
msgid "Error %d opening X52 I/O device: %s"
|
||||
msgstr "Erroray %d openingay X52 I/O eviceday: %s"
|
||||
|
||||
#: daemon/x52d_io.c:76
|
||||
#: daemon/x52d_io.c:78
|
||||
#, c-format
|
||||
msgid "Error %d reading from X52 I/O device: %s"
|
||||
msgstr "Erroray %d eadingray omfray X52 I/O eviceday: %s"
|
||||
|
||||
#: daemon/x52d_io.c:95
|
||||
#: daemon/x52d_io.c:97
|
||||
#, c-format
|
||||
msgid "Error %d initializing X52 I/O library: %s"
|
||||
msgstr "Erroray %d initializingay X52 ibrarylay: %s"
|
||||
msgstr "Erroray %d initializingay X52 ibrarylay: %s"
|
||||
|
||||
#: daemon/x52d_io.c:101
|
||||
#: daemon/x52d_io.c:103
|
||||
#, c-format
|
||||
msgid "Error %d initializing I/O driver thread: %s"
|
||||
msgstr "Erroray %d initializingay I/O iverdray eadthray: %s"
|
||||
msgstr "Erroray %d initializingay I/O iverdray eadthray: %s"
|
||||
|
||||
#: daemon/x52d_io.c:108
|
||||
#: daemon/x52d_io.c:110
|
||||
msgid "Shutting down X52 I/O driver thread"
|
||||
msgstr "Uttingshay ownday X52 I/O iverdray eadthray"
|
||||
msgstr "Uttingshay ownday X52 I/O iverdray eadthray"
|
||||
|
||||
#: daemon/x52d_mouse.c:35
|
||||
#, c-format
|
||||
|
@ -807,18 +807,46 @@ msgstr "Ettingsay ousemay eedspay otay %d (elayday %d ms)"
|
|||
msgid "Ignoring mouse speed %d outside supported range (0-%d)"
|
||||
msgstr "Ignoringay ousemay eedspay %d outsideay upportedsay angeray (0-%d)"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:25
|
||||
#: daemon/x52d_mouse_evdev.c:43
|
||||
#, c-format
|
||||
msgid "Error writing mouse button event (button %d, state %d)"
|
||||
msgstr "Erroray itingwray ousemay uttonbay eventay (uttonbay %d, atestay %d)"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:75
|
||||
#, c-format
|
||||
msgid "Error writing mouse wheel event %d"
|
||||
msgstr "Erroray itingwray ousemay eelwhay eventay %d"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:101
|
||||
#, c-format
|
||||
msgid "Error writing mouse axis event (axis %d, value %d)"
|
||||
msgstr "Erroray itingwray ousemay axisay eventay (axisay %d, aluevay %d)"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:114
|
||||
msgid "Starting X52 virtual mouse driver thread"
|
||||
msgstr "Artingstay X52 irtualvay ousemay iverdray eadthray"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:44
|
||||
#: daemon/x52d_mouse_evdev.c:127
|
||||
msgid "Error writing mouse sync event"
|
||||
msgstr "Erroray itingwray ousemay yncsay eventay"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:146
|
||||
#, c-format
|
||||
msgid "Error %d initializing mouse thread: %s"
|
||||
msgstr "Erroray %d initializingay ousemay eadthray: %s"
|
||||
msgstr "Erroray %d initializingay ousemay eadthray: %s"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:51
|
||||
#: daemon/x52d_mouse_evdev.c:153
|
||||
msgid "Shutting down X52 virtual mouse driver thread"
|
||||
msgstr "Uttingshay ownday X52 irtualvay ousemay iverdray eadthray"
|
||||
msgstr "Uttingshay ownday X52 irtualvay ousemay iverdray eadthray"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:160
|
||||
msgid "Virtual mouse not created. Ignoring thread state change"
|
||||
msgstr "Irtualvay ousemay otnay eatedcray. Ignoringa eadthray atestay angechay"
|
||||
|
||||
#: daemon/x52d_mouse_evdev.c:211
|
||||
#, c-format
|
||||
msgid "Error %d creating X52 virtual mouse: %s"
|
||||
msgstr "Erroray %d eatingcray X52 irtualvay ousemay: %s"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Starting X52 mouse manager thread"
|
||||
|
|
Loading…
Reference in New Issue