Serenity Operating System
1/*
2 * Copyright (c) 2021, Timur Sultanov <SultanovTS@yandex.ru>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/DeprecatedString.h>
10#include <AK/Vector.h>
11#include <AK/WeakPtr.h>
12#include <LibCore/FileWatcher.h>
13#include <LibCore/Object.h>
14#include <LibKeyboard/CharacterMap.h>
15#include <WindowServer/WMConnectionFromClient.h>
16
17namespace WindowServer {
18
19class KeymapSwitcher final : public Core::Object {
20 C_OBJECT(KeymapSwitcher)
21public:
22 virtual ~KeymapSwitcher() override = default;
23
24 void next_keymap();
25
26 Function<void(DeprecatedString const& keymap)> on_keymap_change;
27
28 DeprecatedString get_current_keymap() const;
29
30 void set_keymap(AK::DeprecatedString const&);
31
32private:
33 void refresh();
34
35 KeymapSwitcher();
36
37 Vector<AK::DeprecatedString> m_keymaps;
38
39 RefPtr<Core::FileWatcher> m_file_watcher;
40
41 char const* m_keyboard_config = "/etc/Keyboard.ini";
42};
43
44}