Program Listing for File LinuxMouseButtonMapping.hpp

Return to documentation for file (include\input\DefaultDevs\linux\LinuxMouseButtonMapping.hpp)

#pragma once

#include "Input_State.hpp"

#include <cstdint>
#include <linux/input-event-codes.h>
#include <optional>

namespace PDJE_DEFAULT_DEVICES::LINUX_INPUT_MAP {

inline std::optional<BITMASK>
TryMapLinuxMouseButton(uint32_t button, bool pressed) noexcept
{
    switch (button) {
    case BTN_LEFT:
        return static_cast<BITMASK>(pressed ? PDJE_MOUSE_L_BTN_DOWN
                                            : PDJE_MOUSE_L_BTN_UP);
    case BTN_RIGHT:
        return static_cast<BITMASK>(pressed ? PDJE_MOUSE_R_BTN_DOWN
                                            : PDJE_MOUSE_R_BTN_UP);
    case BTN_MIDDLE:
        return static_cast<BITMASK>(pressed ? PDJE_MOUSE_M_BTN_DOWN
                                            : PDJE_MOUSE_M_BTN_UP);
    case BTN_SIDE:
        return static_cast<BITMASK>(pressed ? PDJE_MOUSE_SIDE_BTN_DOWN
                                            : PDJE_MOUSE_SIDE_BTN_UP);
    case BTN_EXTRA:
        return static_cast<BITMASK>(pressed ? PDJE_MOUSE_EX_BTN_DOWN
                                            : PDJE_MOUSE_EX_BTN_UP);
    default:
        return std::nullopt;
    }
}

} // namespace PDJE_DEFAULT_DEVICES::LINUX_INPUT_MAP