blob: 8ee2359f996660e2f854cf33bd2dbfa3e01a3d18 [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VM_TOOLS_SOMMELIER_LIBEVDEV_LIBEVDEV_SHIM_H_
#define VM_TOOLS_SOMMELIER_LIBEVDEV_LIBEVDEV_SHIM_H_
#include <libevdev/libevdev.h>
#include <libevdev/libevdev-uinput.h>
class LibevdevShim {
public:
LibevdevShim() = default;
LibevdevShim(LibevdevShim&&) = delete;
LibevdevShim& operator=(LibevdevShim&&) = delete;
virtual ~LibevdevShim() = default;
virtual struct libevdev* new_evdev(void);
virtual void free(struct libevdev* dev);
virtual int enable_event_code(struct libevdev* dev,
unsigned int type,
unsigned int code,
const void* data);
virtual void set_name(struct libevdev* dev, const char* name);
virtual void set_id_product(struct libevdev* dev, int product_id);
virtual void set_id_vendor(struct libevdev* dev, int vendor_id);
virtual void set_id_bustype(struct libevdev* dev, int bustype);
virtual void set_id_version(struct libevdev* dev, int version);
virtual int uinput_create_from_device(const struct libevdev* dev,
int uinput_fd,
struct libevdev_uinput** uinput_dev);
virtual int uinput_write_event(const struct libevdev_uinput* uinput_dev,
unsigned int type,
unsigned int code,
int value);
virtual void uinput_destroy(struct libevdev_uinput* uinput_dev);
};
class Libevdev {
public:
static LibevdevShim* Get();
static void Set(LibevdevShim* shim);
private:
static LibevdevShim* singleton;
};
#endif // VM_TOOLS_SOMMELIER_LIBEVDEV_LIBEVDEV_SHIM_H_