diff options
| author | Scott Mansell <phiren@gmail.com> | 2015-06-29 12:17:35 +1200 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2015-07-01 10:13:05 +1200 |
| commit | 2721fdf8a94e2e49f907eda24a1406d2225acaf6 (patch) | |
| tree | 1220160a25dddf5a0ab0321b775c6635e8a0665f /Source/Core/InputCommon/ControllerInterface/evdev/evdev.h | |
| parent | 9a244f07fa270c15c907564ee72a4530845c6ea8 (diff) | |
Linux: Add an evdev based controller backend, to replace SDL.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.h')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/evdev/evdev.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/evdev/evdev.h b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.h new file mode 100644 index 0000000000..7290fbc379 --- /dev/null +++ b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.h @@ -0,0 +1,86 @@ +// Copyright 2015 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include <string> +#include <vector> +#include <libevdev/libevdev.h> + +#include "InputCommon/ControllerInterface/Device.h" + +namespace ciface +{ +namespace evdev +{ + +void Init(std::vector<Core::Device*>& devices); + +class evdevDevice : public Core::Device +{ +private: + class Button : public Core::Device::Input + { + public: + std::string GetName() const override; + Button(u8 index, u16 code, libevdev* dev) : m_index(index), m_code(code), m_dev(dev) {} + ControlState GetState() const override; + private: + const u8 m_index; + const u16 m_code; + libevdev* m_dev; + }; + + class Axis : public Core::Device::Input + { + public: + std::string GetName() const override; + Axis(u8 index, u16 code, bool upper, libevdev* dev); + ControlState GetState() const override; + private: + const u16 m_code; + const u8 m_index; + const bool m_upper; + int m_range; + libevdev* m_dev; + }; + + class ForceFeedback : public Core::Device::Output + { + public: + std::string GetName() const override; + ForceFeedback(u16 type, libevdev* dev) : m_type(type), m_dev(dev), m_id(-1) { m_fd = libevdev_get_fd(dev); } + void SetState(ControlState state) override; + private: + const u16 m_type; + libevdev* m_dev; + int m_fd; + int m_id; + }; + +public: + void UpdateInput() override; + + evdevDevice(const std::string &devnode, int id); + ~evdevDevice(); + + std::string GetName() const override { return m_name; } + int GetId() const override { return m_id; } + std::string GetSource() const override { return "evdev"; } + + bool IsInteresting() const { return m_initialized && m_interesting; } + +private: + const std::string m_devfile; + int m_fd; + libevdev* m_dev; + std::string m_name; + const int m_id; + bool m_initialized; + bool m_interesting; +}; + +} + +} |
