diff options
author | jduncanator <1518948+jduncanator@users.noreply.github.com> | 2019-12-03 15:00:56 +1100 |
---|---|---|
committer | Ac_K <Acoustik666@gmail.com> | 2019-12-03 05:00:56 +0100 |
commit | d562ba37a0bc603e9719bb36dc9e7e9bf4406687 (patch) | |
tree | 1f178efe04524530690fa994979f395049c3521a /Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs | |
parent | bb7600e215456fd271ba1ec2f7b4fa5088ec2802 (diff) |
Fully reverse swkbd configuration structure and follow-up to swkbd implementation (#839)
* am: Fully reverse swkbd configuration structure
* Add documentation
* Remove explicit access modifiers
* Fix formatting
* Fix further formatting issues
Diffstat (limited to 'Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs')
-rw-r--r-- | Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs | 129 |
1 files changed, 117 insertions, 12 deletions
diff --git a/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs b/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs index 183da774..fd462382 100644 --- a/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs +++ b/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs @@ -2,32 +2,137 @@ namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard { - // TODO(jduncanator): Define all fields - [StructLayout(LayoutKind.Explicit)] + /// <summary> + /// A structure that defines the configuration options of the software keyboard. + /// </summary> + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct SoftwareKeyboardConfig { + private const int SubmitTextLength = 8; + private const int HeaderTextLength = 64; + private const int SubtitleTextLength = 128; + private const int GuideTextLength = 256; + /// <summary> /// Type of keyboard. /// </summary> - [FieldOffset(0x0)] - public SoftwareKeyboardType Type; + public KeyboardMode Mode; + + /// <summary> + /// The string displayed in the Submit button. + /// </summary> + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = SubmitTextLength + 1)] + public string SubmitText; + + /// <summary> + /// The character displayed in the left button of the numeric keyboard. + /// This is ignored when Mode is not set to NumbersOnly. + /// </summary> + public char LeftOptionalSymbolKey; + + /// <summary> + /// The character displayed in the right button of the numeric keyboard. + /// This is ignored when Mode is not set to NumbersOnly. + /// </summary> + public char RightOptionalSymbolKey; + + /// <summary> + /// When set, predictive typing is enabled making use of the system dictionary, + /// and any custom user dictionary. + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool PredictionEnabled; + + /// <summary> + /// Specifies prohibited characters that cannot be input into the text entry area. + /// </summary> + public InvalidCharFlags InvalidCharFlag; + + /// <summary> + /// The initial position of the text cursor displayed in the text entry area. + /// </summary> + public InitialCursorPosition InitialCursorPosition; + + /// <summary> + /// The string displayed in the header area of the keyboard. + /// </summary> + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HeaderTextLength + 1)] + public string HeaderText; + + /// <summary> + /// The string displayed in the subtitle area of the keyboard. + /// </summary> + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = SubtitleTextLength + 1)] + public string SubtitleText; + + /// <summary> + /// The placeholder string displayed in the text entry area when no text is entered. + /// </summary> + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = GuideTextLength + 1)] + public string GuideText; + + /// <summary> + /// When non-zero, specifies the maximum allowed length of the string entered into the text entry area. + /// </summary> + public int StringLengthMax; + + /// <summary> + /// When non-zero, specifies the minimum allowed length of the string entered into the text entry area. + /// </summary> + public int StringLengthMin; + + /// <summary> + /// When enabled, hides input characters as dots in the text entry area. + /// </summary> + public PasswordMode PasswordMode; + + /// <summary> + /// Specifies whether the text entry area is displayed as a single-line entry, or a multi-line entry field. + /// </summary> + public InputFormMode InputFormMode; + + /// <summary> + /// When set, enables or disables the return key. This value is ignored when single-line entry is specified as the InputFormMode. + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool UseNewLine; + + /// <summary> + /// When set, the software keyboard will return a UTF-8 encoded string, rather than UTF-16. + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool UseUtf8; + + /// <summary> + /// When set, the software keyboard will blur the game application rendered behind the keyboard. + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool UseBlurBackground; + + /// <summary> + /// Offset into the work buffer of the initial text when the keyboard is first displayed. + /// </summary> + public int InitialStringOffset; + + /// <summary> + /// Length of the initial text. + /// </summary> + public int InitialStringLength; /// <summary> - /// When non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting more input until text is deleted via the B button (Backspace). + /// Offset into the work buffer of the custom user dictionary. /// </summary> - [FieldOffset(0x3AC)] - public uint StringLengthMax; + public int CustomDictionaryOffset; /// <summary> - /// When non-zero, specifies the max string length. When the input is too long, swkbd will display an icon and disable the ok-button. + /// Number of entries in the custom user dictionary. /// </summary> - [FieldOffset(0x3B0)] - public uint StringLengthMaxExtended; + public int CustomDictionaryCount; /// <summary> - /// When set, the application will validate the entered text whilst the swkbd is still on screen. + /// When set, the text entered will be validated on the application side after the keyboard has been submitted. /// </summary> - [FieldOffset(0x3D0), MarshalAs(UnmanagedType.I1)] + [MarshalAs(UnmanagedType.I1)] public bool CheckText; } } |