diff options
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibKeyboard/CharacterMap.cpp | 63 | ||||
-rw-r--r-- | Userland/Libraries/LibKeyboard/CharacterMap.h | 11 |
2 files changed, 4 insertions, 70 deletions
diff --git a/Userland/Libraries/LibKeyboard/CharacterMap.cpp b/Userland/Libraries/LibKeyboard/CharacterMap.cpp index 4d661f15bd..dec8014d0e 100644 --- a/Userland/Libraries/LibKeyboard/CharacterMap.cpp +++ b/Userland/Libraries/LibKeyboard/CharacterMap.cpp @@ -6,24 +6,18 @@ #include "CharacterMap.h" #include <AK/StringBuilder.h> - -#ifndef KERNEL -# include <LibKeyboard/CharacterMapFile.h> -# include <serenity.h> -#endif +#include <LibKeyboard/CharacterMapFile.h> +#include <errno.h> +#include <serenity.h> namespace Keyboard { -#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`. ErrorOr<CharacterMap> CharacterMap::load_from_file(const String& map_name) { auto result = TRY(CharacterMapFile::load_from_file(map_name)); return CharacterMap(map_name, result); } -#endif CharacterMap::CharacterMap(const String& map_name, const CharacterMapData& map_data) : m_character_map_data(map_data) @@ -31,8 +25,6 @@ CharacterMap::CharacterMap(const String& map_name, const CharacterMapData& map_d { } -#ifndef KERNEL - int CharacterMap::set_system_map() { return setkeymap(m_character_map_name.characters(), m_character_map_data.map, m_character_map_data.shift_map, m_character_map_data.alt_map, m_character_map_data.altgr_map, m_character_map_data.shift_altgr_map); @@ -49,55 +41,6 @@ ErrorOr<CharacterMap> CharacterMap::fetch_system_map() return CharacterMap { keymap_name, map_data }; } -#endif - -u32 CharacterMap::get_char(KeyEvent event) const -{ - auto modifiers = event.modifiers(); - auto index = event.scancode & 0xFF; // Index is last byte of scan code. - auto caps_lock_on = event.caps_lock_on; - - u32 code_point; - if (modifiers & Mod_Alt) - code_point = m_character_map_data.alt_map[index]; - else if ((modifiers & Mod_Shift) && (modifiers & Mod_AltGr)) - code_point = m_character_map_data.shift_altgr_map[index]; - else if (modifiers & Mod_Shift) - code_point = m_character_map_data.shift_map[index]; - else if (modifiers & Mod_AltGr) - code_point = m_character_map_data.altgr_map[index]; - else - code_point = m_character_map_data.map[index]; - - if (caps_lock_on && (modifiers == 0 || modifiers == Mod_Shift)) { - if (code_point >= 'a' && code_point <= 'z') - code_point &= ~0x20; - else if (code_point >= 'A' && code_point <= 'Z') - code_point |= 0x20; - } - - if (event.e0_prefix && event.key == Key_Slash) { - // If Key_Slash (scancode = 0x35) mapped to other form "/", we fix num pad key of "/" with this case. - code_point = '/'; - } else if (event.e0_prefix && event.key != Key_Return) { - // Except for `keypad-/` and 'keypad-return', all e0 scan codes are not actually characters. i.e., `keypad-0` and - // `Insert` have the same scancode except for the prefix, but insert should not have a code_point. - code_point = 0; - } - - return code_point; -} - -void CharacterMap::set_character_map_data(CharacterMapData character_map_data) -{ - m_character_map_data = character_map_data; -} - -void CharacterMap::set_character_map_name(const String& character_map_name) -{ - m_character_map_name = character_map_name; -} - const String& CharacterMap::character_map_name() const { return m_character_map_name; diff --git a/Userland/Libraries/LibKeyboard/CharacterMap.h b/Userland/Libraries/LibKeyboard/CharacterMap.h index b4d00477db..7d3e96f176 100644 --- a/Userland/Libraries/LibKeyboard/CharacterMap.h +++ b/Userland/Libraries/LibKeyboard/CharacterMap.h @@ -6,11 +6,8 @@ #pragma once -#ifndef KERNEL -# include <AK/Error.h> -#endif +#include <AK/Error.h> #include <AK/String.h> -#include <Kernel/API/KeyCode.h> #include <LibKeyboard/CharacterMapData.h> namespace Keyboard { @@ -21,14 +18,8 @@ public: CharacterMap(const String& map_name, const CharacterMapData& map_data); static ErrorOr<CharacterMap> load_from_file(const String& filename); -#ifndef KERNEL int set_system_map(); static ErrorOr<CharacterMap> fetch_system_map(); -#endif - - u32 get_char(KeyEvent) const; - void set_character_map_data(CharacterMapData character_map_data); - void set_character_map_name(const String& character_map_name); const CharacterMapData& character_map_data() const { return m_character_map_data; }; const String& character_map_name() const; |