diff options
author | bunnei <bunneidev@gmail.com> | 2018-11-20 17:24:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-20 17:24:11 +0100 |
commit | b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401 (patch) | |
tree | b75fde22327ac851821d58078614e62cc1c29916 /src/core/hle/service/am/applets/software_keyboard.h | |
parent | Merge pull request #1739 from lioncash/lm (diff) | |
parent | software_keyboard: Fix erroneous extra PushNormalData (diff) | |
download | yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.tar yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.tar.gz yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.tar.bz2 yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.tar.lz yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.tar.xz yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.tar.zst yuzu-b6d2c64f4dcb01f1ffc99f9a057910ec65c6a401.zip |
Diffstat (limited to 'src/core/hle/service/am/applets/software_keyboard.h')
-rw-r--r-- | src/core/hle/service/am/applets/software_keyboard.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/core/hle/service/am/applets/software_keyboard.h b/src/core/hle/service/am/applets/software_keyboard.h new file mode 100644 index 000000000..16e1fff66 --- /dev/null +++ b/src/core/hle/service/am/applets/software_keyboard.h @@ -0,0 +1,69 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/common_funcs.h" +#include "core/hle/service/am/am.h" +#include "core/hle/service/am/applets/applets.h" + +namespace Service::AM::Applets { + +enum class KeysetDisable : u32 { + Space = 0x02, + Address = 0x04, + Percent = 0x08, + Slashes = 0x10, + Numbers = 0x40, + DownloadCode = 0x80, +}; + +struct KeyboardConfig { + INSERT_PADDING_BYTES(4); + std::array<char16_t, 9> submit_text; + u16_le left_symbol_key; + u16_le right_symbol_key; + INSERT_PADDING_BYTES(1); + KeysetDisable keyset_disable_bitmask; + u32_le initial_cursor_position; + std::array<char16_t, 65> header_text; + std::array<char16_t, 129> sub_text; + std::array<char16_t, 257> guide_text; + u32_le length_limit; + INSERT_PADDING_BYTES(4); + u32_le is_password; + INSERT_PADDING_BYTES(5); + bool utf_8; + bool draw_background; + u32_le initial_string_offset; + u32_le initial_string_size; + u32_le user_dictionary_offset; + u32_le user_dictionary_size; + bool text_check; + u64_le text_check_callback; +}; +static_assert(sizeof(KeyboardConfig) == 0x3E0, "KeyboardConfig has incorrect size."); + +class SoftwareKeyboard final : public Applet { +public: + SoftwareKeyboard(); + ~SoftwareKeyboard() override; + + void Initialize(std::shared_ptr<AppletDataBroker> broker) override; + + bool TransactionComplete() const override; + ResultCode GetStatus() const override; + void ExecuteInteractive() override; + void Execute() override; + + void WriteText(std::optional<std::u16string> text); + +private: + KeyboardConfig config; + std::u16string initial_text; + bool complete = false; + std::vector<u8> final_data; +}; + +} // namespace Service::AM::Applets |