1#include "LinuxGamepad.h"
3#include "../../Context.h"
4#include "../../ViewContext.h"
5#include "../../Services/Time.h"
7#include "Foundation/Platform/WindowData.h"
9void Cogs::Platform::GamepadHandler::initialize(Core::ViewContext* viewContext) {
10 this->view = viewContext;
15void Cogs::Platform::GamepadHandler::update() {
16 double t = view->getContext()->time->getAnimationTime();
18 if (t >= nextScanTime) {
20 nextScanTime = t + scanInterval;
22 for (
auto&
id : deviceID) {
28void Cogs::Platform::GamepadHandler::scanForDevices() {
31 XDeviceInfoPtr devices = XListInputDevices(view->refWindowData()->display, &deviceCount);
32 Atom atom = X11Module::instance().XInternAtom(view->refWindowData()->display, XI_TOUCHPAD,
true);
35 XDeviceInfoPtr device = devices;
37 for (
int i = deviceCount; i--; ++device) {
38 if (device->type == atom) {
41 for (
auto&
id : deviceID) {
42 if (
id == device->id) {
48 for (
auto&
id : deviceID) {
58 for (
auto&
id : deviceID) {
63 for (
int i = deviceCount; i--; ++device) {
64 if (device->id ==
id) {
73 XFreeDeviceList(devices);