// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef DEVICE_GAMEPAD_GAMEPAD_DEVICE_LINUX_H_ #define DEVICE_GAMEPAD_GAMEPAD_DEVICE_LINUX_H_ #include <memory> #include <string> #include <vector> #include "base/files/scoped_file.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "device/gamepad/abstract_haptic_gamepad.h" #include "device/gamepad/gamepad_id_list.h" #include "device/gamepad/gamepad_standard_mappings.h" #include "device/gamepad/udev_gamepad_linux.h" extern "C" { struct udev_device; } namespace device { class Dualshock4Controller; class HidHapticGamepad; class XboxHidController; // GamepadDeviceLinux represents a single gamepad device which may be accessed // through multiple host interfaces. Gamepad button and axis state are queried // through the joydev interface, while haptics commands are routed through the // evdev interface. A gamepad must be enumerated through joydev to be usable, // but the evdev interface is only required for haptic effects. // // For some devices, haptics are not supported through evdev and are instead // sent through the raw HID (hidraw) interface. class GamepadDeviceLinux final : public AbstractHapticGamepad { … }; } // namespace device #endif // DEVICE_GAMEPAD_GAMEPAD_DEVICE_LINUX_H_