software_keyboard: Check for UTF-8 config flag
This commit is contained in:
parent
56cf5b7b17
commit
ea680bea60
|
@ -120,6 +120,18 @@ void SoftwareKeyboard::WriteText(std::optional<std::u16string> text) {
|
||||||
std::vector<u8> output_sub(SWKBD_OUTPUT_BUFFER_SIZE);
|
std::vector<u8> output_sub(SWKBD_OUTPUT_BUFFER_SIZE);
|
||||||
status = RESULT_SUCCESS;
|
status = RESULT_SUCCESS;
|
||||||
|
|
||||||
|
if (config.utf_8) {
|
||||||
|
const u64 size = text->size() + 8;
|
||||||
|
const auto new_text = Common::UTF16ToUTF8(*text);
|
||||||
|
|
||||||
|
std::memcpy(output_sub.data(), &size, sizeof(u64));
|
||||||
|
std::memcpy(output_sub.data() + 8, new_text.data(),
|
||||||
|
std::min(new_text.size(), SWKBD_OUTPUT_BUFFER_SIZE - 8));
|
||||||
|
|
||||||
|
output_main[0] = config.text_check;
|
||||||
|
std::memcpy(output_main.data() + 4, new_text.data(),
|
||||||
|
std::min(new_text.size(), SWKBD_OUTPUT_BUFFER_SIZE - 4));
|
||||||
|
} else {
|
||||||
const u64 size = text->size() * 2 + 8;
|
const u64 size = text->size() * 2 + 8;
|
||||||
std::memcpy(output_sub.data(), &size, sizeof(u64));
|
std::memcpy(output_sub.data(), &size, sizeof(u64));
|
||||||
std::memcpy(output_sub.data() + 8, text->data(),
|
std::memcpy(output_sub.data() + 8, text->data(),
|
||||||
|
@ -128,6 +140,7 @@ void SoftwareKeyboard::WriteText(std::optional<std::u16string> text) {
|
||||||
output_main[0] = config.text_check;
|
output_main[0] = config.text_check;
|
||||||
std::memcpy(output_main.data() + 4, text->data(),
|
std::memcpy(output_main.data() + 4, text->data(),
|
||||||
std::min(text->size() * 2, SWKBD_OUTPUT_BUFFER_SIZE - 4));
|
std::min(text->size() * 2, SWKBD_OUTPUT_BUFFER_SIZE - 4));
|
||||||
|
}
|
||||||
|
|
||||||
complete = !config.text_check;
|
complete = !config.text_check;
|
||||||
final_data = output_main;
|
final_data = output_main;
|
||||||
|
|
|
@ -33,7 +33,8 @@ struct KeyboardConfig {
|
||||||
u32_le length_limit;
|
u32_le length_limit;
|
||||||
INSERT_PADDING_BYTES(4);
|
INSERT_PADDING_BYTES(4);
|
||||||
u32_le is_password;
|
u32_le is_password;
|
||||||
INSERT_PADDING_BYTES(6);
|
INSERT_PADDING_BYTES(5);
|
||||||
|
bool utf_8;
|
||||||
bool draw_background;
|
bool draw_background;
|
||||||
u32_le initial_string_offset;
|
u32_le initial_string_offset;
|
||||||
u32_le initial_string_size;
|
u32_le initial_string_size;
|
||||||
|
|
Reference in New Issue