diff options
| author | Scott Mansell <phiren@gmail.com> | 2015-07-04 23:43:36 +1200 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2015-07-04 23:43:36 +1200 |
| commit | d2578000bbf5bddd52c18e162d5ae8aae5c93d1a (patch) | |
| tree | 80702ed2a17fd2aa7def9050b0f0b98b49ba8554 /Source/Core/InputCommon/ControllerInterface/evdev/evdev.h | |
| parent | 3bbb2ede9cc58af1dcdcb56d728e10622cf33dd6 (diff) | |
| parent | 8a50dc857bbfc86c41706a6f48770a6f78285628 (diff) | |
Merge branch 'stable'
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/evdev/evdev.h')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/evdev/evdev.h | 87 |
1 files changed, 87 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..d1555c8cce --- /dev/null +++ b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.h @@ -0,0 +1,87 @@ +// 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; + int m_min; + 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; +}; + +} + +} |
