aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs
diff options
context:
space:
mode:
authorjduncanator <1518948+jduncanator@users.noreply.github.com>2019-12-03 15:00:56 +1100
committerAc_K <Acoustik666@gmail.com>2019-12-03 05:00:56 +0100
commitd562ba37a0bc603e9719bb36dc9e7e9bf4406687 (patch)
tree1f178efe04524530690fa994979f395049c3521a /Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs
parentbb7600e215456fd271ba1ec2f7b4fa5088ec2802 (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.cs129
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;
}
}