#ifndef REMOTING_HOST_KEYBOARD_LAYOUT_MONITOR_H_
#define REMOTING_HOST_KEYBOARD_LAYOUT_MONITOR_H_
#include <memory>
#include "base/containers/span.h"
#include "base/functional/callback_forward.h"
#include "base/memory/scoped_refptr.h"
#include "ui/events/keycodes/dom/dom_code.h"
namespace base {
class SingleThreadTaskRunner;
}
namespace remoting {
namespace protocol {
class KeyboardLayout;
}
class KeyboardLayoutMonitor {
public:
virtual ~KeyboardLayoutMonitor() = default;
KeyboardLayoutMonitor(const KeyboardLayoutMonitor&) = delete;
KeyboardLayoutMonitor& operator=(const KeyboardLayoutMonitor&) = delete;
virtual void Start() = 0;
static std::unique_ptr<KeyboardLayoutMonitor> Create(
base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback,
scoped_refptr<base::SingleThreadTaskRunner> input_task_runner);
protected:
KeyboardLayoutMonitor() = default;
static const base::span<const ui::DomCode> kSupportedKeys;
};
}
#endif