summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibKeyboard
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibKeyboard')
-rw-r--r--Userland/Libraries/LibKeyboard/CharacterMap.cpp20
-rw-r--r--Userland/Libraries/LibKeyboard/CharacterMap.h2
2 files changed, 10 insertions, 12 deletions
diff --git a/Userland/Libraries/LibKeyboard/CharacterMap.cpp b/Userland/Libraries/LibKeyboard/CharacterMap.cpp
index 3ea6604df2..059c6da20f 100644
--- a/Userland/Libraries/LibKeyboard/CharacterMap.cpp
+++ b/Userland/Libraries/LibKeyboard/CharacterMap.cpp
@@ -27,24 +27,22 @@
#include "CharacterMap.h"
#include <AK/StringBuilder.h>
#include <Kernel/API/Syscall.h>
-#ifndef KERNEL
-# include <LibKeyboard/CharacterMapFile.h>
-#endif
+#include <LibKeyboard/CharacterMapFile.h>
namespace Keyboard {
-CharacterMap::CharacterMap(const String& map_name)
+#ifndef KERNEL
+// The Kernel explicitly and exclusively links only this file into it.
+// Thus, we cannot even include a reference to the symbol `CharacterMapFile::load_from_file`.
+Optional<CharacterMap> CharacterMap::load_from_file(const String& map_name)
{
-#ifdef KERNEL
- m_character_map_data = default_character_map;
-#else
auto result = CharacterMapFile::load_from_file(map_name);
- ASSERT(result.has_value());
+ if (!result.has_value())
+ return {};
- m_character_map_data = result.value();
-#endif
- m_character_map_name = map_name;
+ return CharacterMap(map_name, result.value());
}
+#endif
CharacterMap::CharacterMap(const String& map_name, const CharacterMapData& map_data)
: m_character_map_data(map_data)
diff --git a/Userland/Libraries/LibKeyboard/CharacterMap.h b/Userland/Libraries/LibKeyboard/CharacterMap.h
index 848b32a7fa..5a45c34fdb 100644
--- a/Userland/Libraries/LibKeyboard/CharacterMap.h
+++ b/Userland/Libraries/LibKeyboard/CharacterMap.h
@@ -39,8 +39,8 @@ namespace Keyboard {
class CharacterMap {
public:
- CharacterMap(const String& map_name);
CharacterMap(const String& map_name, const CharacterMapData& map_data);
+ static Optional<CharacterMap> load_from_file(const String& file_name);
#ifndef KERNEL
int set_system_map();