Serenity Operating System
at master 48 lines 1.4 kB view raw
1/* 2 * Copyright (c) 2020, Hüseyin Aslıtürk <asliturk@hotmail.com> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include "CharacterMap.h" 8#include <AK/StringBuilder.h> 9#include <LibKeyboard/CharacterMapFile.h> 10#include <errno.h> 11#include <serenity.h> 12 13namespace Keyboard { 14 15ErrorOr<CharacterMap> CharacterMap::load_from_file(DeprecatedString const& map_name) 16{ 17 auto result = TRY(CharacterMapFile::load_from_file(map_name)); 18 19 return CharacterMap(map_name, result); 20} 21 22CharacterMap::CharacterMap(DeprecatedString const& map_name, CharacterMapData const& map_data) 23 : m_character_map_data(map_data) 24 , m_character_map_name(map_name) 25{ 26} 27 28int CharacterMap::set_system_map() 29{ 30 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); 31} 32 33ErrorOr<CharacterMap> CharacterMap::fetch_system_map() 34{ 35 CharacterMapData map_data; 36 char keymap_name[50 + 1] = { 0 }; 37 38 if (getkeymap(keymap_name, sizeof(keymap_name), map_data.map, map_data.shift_map, map_data.alt_map, map_data.altgr_map, map_data.shift_altgr_map) < 0) 39 return Error::from_errno(errno); 40 41 return CharacterMap { keymap_name, map_data }; 42} 43 44DeprecatedString const& CharacterMap::character_map_name() const 45{ 46 return m_character_map_name; 47} 48}