aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardConfig.cs
blob: 5261bc8f4076496d4781d5a4f2e02949e13a3795 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System.Runtime.InteropServices;

namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
{
    /// <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>
        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>
        /// Offset into the work buffer of the custom user dictionary.
        /// </summary>
        public int CustomDictionaryOffset;

        /// <summary>
        /// Number of entries in the custom user dictionary.
        /// </summary>
        public int CustomDictionaryCount;

        /// <summary>
        /// When set, the text entered will be validated on the application side after the keyboard has been submitted.
        /// </summary>
        [MarshalAs(UnmanagedType.I1)]
        public bool CheckText;
    }
}