#ifndef REMOTING_HOST_LINUX_EI_KEYBOARD_LAYOUT_MONITOR_H_
#define REMOTING_HOST_LINUX_EI_KEYBOARD_LAYOUT_MONITOR_H_
#include <xkbcommon/xkbcommon.h>
#include "base/functional/callback.h"
#include "base/memory/weak_ptr.h"
#include "remoting/host/keyboard_layout_monitor.h"
#include "remoting/proto/control.pb.h"
namespace remoting {
class EiKeymap;
class EiKeyboardLayoutMonitor : public KeyboardLayoutMonitor {
public:
explicit EiKeyboardLayoutMonitor(
base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback);
~EiKeyboardLayoutMonitor() override;
void Start() override;
void OnKeymapChanged(EiKeymap* keymap);
base::WeakPtr<EiKeyboardLayoutMonitor> GetWeakPtr();
private:
bool started_ = false;
protocol::KeyboardLayout layout_proto_;
base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback_;
base::WeakPtrFactory<EiKeyboardLayoutMonitor> weak_factory_{this};
};
}
#endif