diff options
author | Russell Sim <russell.sim@gmail.com> | 2020-06-19 21:04:22 +0200 |
---|---|---|
committer | Russell Sim <russell.sim@gmail.com> | 2020-06-25 20:09:20 +0200 |
commit | bd7ce1df885dba290111cc9317adf951a90519c1 (patch) | |
tree | eef1f4a1da941012f9dcfe06e3977a10414c896e /tracker-linux-joystick/ftnoir_tracker_linux_joystick.h | |
parent | 6d9e24c5b98f5b2cce01fa4d99255bbeff8ee2f1 (diff) |
Add Linux Joystick Support
Add support for Linux joystick devices, this allows things like the EDTracker to
work, and possibly other devices.
Diffstat (limited to 'tracker-linux-joystick/ftnoir_tracker_linux_joystick.h')
-rw-r--r-- | tracker-linux-joystick/ftnoir_tracker_linux_joystick.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tracker-linux-joystick/ftnoir_tracker_linux_joystick.h b/tracker-linux-joystick/ftnoir_tracker_linux_joystick.h new file mode 100644 index 00000000..6ddc4909 --- /dev/null +++ b/tracker-linux-joystick/ftnoir_tracker_linux_joystick.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2013 Stanislaw Halik <sthalik@misaki.pl> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + */ +#pragma once +#include "ui_ftnoir_tracker_linux_joystick_controls.h" +#include <QComboBox> +#include <QCheckBox> +#include <QSpinBox> +#include <QMessageBox> +#include <QSettings> +#include <QList> +#include <QFrame> +#include <QStringList> +#include <cmath> +#include "api/plugin-api.hpp" + +#include <linux/joystick.h> +#include <fcntl.h> +#include <unistd.h> + +#include "options/options.hpp" +using namespace options; + +struct settings : opts { + value<QString> guid; + value<int> joy_1, joy_2, joy_3, joy_4, joy_5, joy_6; + settings() : + opts("tracker-linux-joystick"), + guid(b, "joy-guid", ""), + joy_1(b, "axis-map-1", 1), + joy_2(b, "axis-map-2", 2), + joy_3(b, "axis-map-3", 3), + joy_4(b, "axis-map-4", 4), + joy_5(b, "axis-map-5", 5), + joy_6(b, "axis-map-6", 6) + {} +}; + +struct linux_joystick { + QString name; + QString device_id; + QString dev; +}; +QList<linux_joystick> getJoysticks(); +QString getJoystickDevice(QString guid); + +class joystick : public ITracker +{ +public: + joystick(); + ~joystick(); + module_status start_tracker(QFrame *); + void data(double *data); + settings s; + QString guid; + static constexpr int AXIS_MAX = USHRT_MAX; + int axes_state[6] = {0}; + int joy_fd; +}; + +class dialog_joystick: public ITrackerDialog +{ + Q_OBJECT +public: + dialog_joystick(); + void register_tracker(ITracker *) {} + void unregister_tracker() {} + Ui::UILinuxJoystickControls ui; + joystick* tracker; + settings s; + struct joys { + QString name; + QString guid; + }; + QList<joys> joys_; +private slots: + void doOK(); + void doCancel(); +}; + +class joystickDll : public Metadata +{ + Q_OBJECT + + QString name() { return tr("Linux Joystick input"); } + QIcon icon() { return QIcon(":/images/opentrack.png"); } +}; |