summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/set/set.cpp38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp
index 7daf980ac..e5cfd2101 100644
--- a/src/core/hle/service/set/set.cpp
+++ b/src/core/hle/service/set/set.cpp
@@ -89,6 +89,25 @@ void GetAvailableLanguageCodesImpl(Kernel::HLERequestContext& ctx, std::size_t m
89 ctx.WriteBuffer(available_language_codes.data(), copy_size); 89 ctx.WriteBuffer(available_language_codes.data(), copy_size);
90 PushResponseLanguageCode(ctx, copy_amount); 90 PushResponseLanguageCode(ctx, copy_amount);
91} 91}
92
93void GetKeyCodeMapImpl(Kernel::HLERequestContext& ctx) {
94 const auto language_code = available_language_codes[Settings::values.language_index];
95 const auto key_code =
96 std::find_if(language_to_layout.cbegin(), language_to_layout.cend(),
97 [=](const auto& element) { return element.first == language_code; });
98 KeyboardLayout layout = KeyboardLayout::EnglishUs;
99 if (key_code == language_to_layout.cend()) {
100 LOG_ERROR(Service_SET,
101 "Could not find keyboard layout for language index {}, defaulting to English us",
102 Settings::values.language_index);
103 } else {
104 layout = key_code->second;
105 }
106
107 IPC::ResponseBuilder rb{ctx, 2};
108 rb.Push(RESULT_SUCCESS);
109 ctx.WriteBuffer(&layout, sizeof(KeyboardLayout));
110}
92} // Anonymous namespace 111} // Anonymous namespace
93 112
94LanguageCode GetLanguageCodeFromIndex(std::size_t index) { 113LanguageCode GetLanguageCodeFromIndex(std::size_t index) {
@@ -159,25 +178,6 @@ void SET::GetRegionCode(Kernel::HLERequestContext& ctx) {
159 rb.Push(Settings::values.region_index); 178 rb.Push(Settings::values.region_index);
160} 179}
161 180
162void GetKeyCodeMapImpl(Kernel::HLERequestContext& ctx) {
163 const auto language_code = available_language_codes[Settings::values.language_index];
164 const auto key_code =
165 std::find_if(language_to_layout.cbegin(), language_to_layout.cend(),
166 [=](const auto& element) { return element.first == language_code; });
167 KeyboardLayout layout = KeyboardLayout::EnglishUs;
168 if (key_code == language_to_layout.cend()) {
169 LOG_ERROR(Service_SET,
170 "Could not find keyboard layout for language index {}, defaulting to English us",
171 Settings::values.language_index);
172 } else {
173 layout = key_code->second;
174 }
175
176 IPC::ResponseBuilder rb{ctx, 2};
177 rb.Push(RESULT_SUCCESS);
178 ctx.WriteBuffer(&layout, sizeof(KeyboardLayout));
179}
180
181void SET::GetKeyCodeMap(Kernel::HLERequestContext& ctx) { 181void SET::GetKeyCodeMap(Kernel::HLERequestContext& ctx) {
182 LOG_DEBUG(Service_SET, "Called {}", ctx.Description()); 182 LOG_DEBUG(Service_SET, "Called {}", ctx.Description());
183 GetKeyCodeMapImpl(ctx); 183 GetKeyCodeMapImpl(ctx);