Serenity Operating System
at master 44 lines 925 B view raw
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}