diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/set/set.cpp | 38 |
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 | |||
| 93 | void 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 | ||
| 94 | LanguageCode GetLanguageCodeFromIndex(std::size_t index) { | 113 | LanguageCode 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 | ||
| 162 | void 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 | |||
| 181 | void SET::GetKeyCodeMap(Kernel::HLERequestContext& ctx) { | 181 | void 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); |