#pragma once
#include <memory>
#include <map>
#include <string>

class Keyboard
{
public:

    enum class Function
    {
        UNSET,
        ENTER,
        BACKSPACE,
        TAB
    };

    using KeyCode = unsigned;
    using KeyState = unsigned;

public:
    Keyboard();

    virtual ~Keyboard() = default;

    static std::unique_ptr<Keyboard> Create();

    virtual std::string getKeyString(KeyCode code);

    virtual Function getFunction(KeyCode code);

};

using KeyboardUPtr = std::unique_ptr<Keyboard>;
