forked from Bananymous/banan-os
33 lines
589 B
C++
33 lines
589 B
C++
#pragma once
|
|
|
|
#include <BAN/Array.h>
|
|
#include <BAN/UniqPtr.h>
|
|
#include <kernel/Input/KeyEvent.h>
|
|
|
|
namespace Kernel::Input
|
|
{
|
|
|
|
class KeyboardLayout
|
|
{
|
|
public:
|
|
static BAN::ErrorOr<void> initialize();
|
|
static KeyboardLayout& get();
|
|
|
|
Key get_key_from_event(KeyEvent);
|
|
BAN::ErrorOr<void> load_from_file(BAN::StringView path);
|
|
|
|
private:
|
|
KeyboardLayout();
|
|
|
|
private:
|
|
SpinLock m_lock;
|
|
|
|
BAN::Array<Key, 0xFF> m_keycode_to_key_normal;
|
|
BAN::Array<Key, 0xFF> m_keycode_to_key_shift;
|
|
BAN::Array<Key, 0xFF> m_keycode_to_key_altgr;
|
|
|
|
friend class BAN::UniqPtr<KeyboardLayout>;
|
|
};
|
|
|
|
}
|