2020-05-31 10:23:55 -03:00
|
|
|
|
/*
|
|
|
|
|
|
* Copyright (c) 2020, Hüseyin Aslıtürk <asliturk@hotmail.com>
|
|
|
|
|
|
*
|
2021-04-22 05:24:48 -03:00
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
2020-05-31 10:23:55 -03:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include "CharacterMap.h"
|
2020-06-13 07:51:20 -03:00
|
|
|
|
#include <AK/StringBuilder.h>
|
2022-01-21 10:22:36 -03:00
|
|
|
|
#include <LibKeyboard/CharacterMapFile.h>
|
|
|
|
|
|
#include <errno.h>
|
|
|
|
|
|
#include <serenity.h>
|
2021-02-03 19:15:13 -03:00
|
|
|
|
|
2020-05-31 10:23:55 -03:00
|
|
|
|
namespace Keyboard {
|
|
|
|
|
|
|
2022-12-04 15:02:33 -03:00
|
|
|
|
ErrorOr<CharacterMap> CharacterMap::load_from_file(DeprecatedString const& map_name)
|
2020-05-31 10:23:55 -03:00
|
|
|
|
{
|
2021-12-16 13:46:49 -03:00
|
|
|
|
auto result = TRY(CharacterMapFile::load_from_file(map_name));
|
2020-05-31 10:23:55 -03:00
|
|
|
|
|
2021-12-16 13:46:49 -03:00
|
|
|
|
return CharacterMap(map_name, result);
|
2021-01-30 18:01:34 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-12-04 15:02:33 -03:00
|
|
|
|
CharacterMap::CharacterMap(DeprecatedString const& map_name, CharacterMapData const& map_data)
|
2021-01-30 18:01:34 -03:00
|
|
|
|
: m_character_map_data(map_data)
|
|
|
|
|
|
, m_character_map_name(map_name)
|
|
|
|
|
|
{
|
2020-05-31 10:23:55 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int CharacterMap::set_system_map()
|
|
|
|
|
|
{
|
2021-02-03 19:15:13 -03:00
|
|
|
|
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);
|
2020-05-31 10:23:55 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-11-07 07:25:25 -03:00
|
|
|
|
ErrorOr<CharacterMap> CharacterMap::fetch_system_map()
|
2021-01-30 18:01:34 -03:00
|
|
|
|
{
|
|
|
|
|
|
CharacterMapData map_data;
|
|
|
|
|
|
char keymap_name[50 + 1] = { 0 };
|
|
|
|
|
|
|
2021-11-07 07:25:25 -03:00
|
|
|
|
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)
|
|
|
|
|
|
return Error::from_errno(errno);
|
2021-01-30 18:01:34 -03:00
|
|
|
|
|
|
|
|
|
|
return CharacterMap { keymap_name, map_data };
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-12-04 15:02:33 -03:00
|
|
|
|
DeprecatedString const& CharacterMap::character_map_name() const
|
2020-08-05 20:03:32 -03:00
|
|
|
|
{
|
|
|
|
|
|
return m_character_map_name;
|
|
|
|
|
|
}
|
2020-05-31 10:23:55 -03:00
|
|
|
|
}
|