diff options
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs')
-rw-r--r-- | src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs new file mode 100644 index 00000000..90df6fa3 --- /dev/null +++ b/src/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs @@ -0,0 +1,220 @@ +using System.Runtime.InteropServices; + +namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard +{ + /// <summary> + /// A structure with configuration options of the software keyboard when starting a new input request in inline mode. + /// </summary> + [StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)] + struct SoftwareKeyboardCalc + { + public const int InputTextLength = SoftwareKeyboardCalcEx.InputTextLength; + + public uint Unknown; + + /// <summary> + /// The size of the Calc struct, as reported by the process communicating with the applet. + /// </summary> + public ushort Size; + + public byte Unknown1; + public byte Unknown2; + + /// <summary> + /// Configuration flags. Each bit in the bitfield enabled a different operation of the keyboard + /// using the data provided with the Calc structure. + /// </summary> + public KeyboardCalcFlags Flags; + + /// <summary> + /// The original parameters used when initializing the keyboard applet. + /// Flag: 0x1 + /// </summary> + public SoftwareKeyboardInitialize Initialize; + + /// <summary> + /// The audio volume used by the sound effects of the keyboard. + /// Flag: 0x2 + /// </summary> + public float Volume; + + /// <summary> + /// The initial position of the text cursor (caret) in the provided input text. + /// Flag: 0x10 + /// </summary> + public int CursorPos; + + /// <summary> + /// Appearance configurations for the on-screen keyboard. + /// </summary> + public SoftwareKeyboardAppear Appear; + + /// <summary> + /// The initial input text to be used by the software keyboard. + /// Flag: 0x8 + /// </summary> + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = InputTextLength + 1)] + public string InputText; + + /// <summary> + /// When set, the strings communicated by software keyboard will be encoded as UTF-8 instead of UTF-16. + /// Flag: 0x20 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool UseUtf8; + + public byte Unknown3; + + /// <summary> + /// [5.0.0+] Enable the backspace key in the software keyboard. + /// Flag: 0x8000 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool BackspaceEnabled; + + public short Unknown4; + public byte Unknown5; + + /// <summary> + /// Flag: 0x200 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool KeytopAsFloating; + + /// <summary> + /// Flag: 0x100 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool FooterScalable; + + /// <summary> + /// Flag: 0x100 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool AlphaEnabledInInputMode; + + /// <summary> + /// Flag: 0x100 + /// </summary> + public byte InputModeFadeType; + + /// <summary> + /// When set, the software keyboard ignores touch input. + /// Flag: 0x200 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool TouchDisabled; + + /// <summary> + /// When set, the software keyboard ignores hardware keyboard commands. + /// Flag: 0x800 + /// </summary> + [MarshalAs(UnmanagedType.I1)] + public bool HardwareKeyboardDisabled; + + public uint Unknown6; + public uint Unknown7; + + /// <summary> + /// Default value is 1.0. + /// Flag: 0x200 + /// </summary> + public float KeytopScale0; + + /// <summary> + /// Default value is 1.0. + /// Flag: 0x200 + /// </summary> + public float KeytopScale1; + + public float KeytopTranslate0; + public float KeytopTranslate1; + + /// <summary> + /// Default value is 1.0. + /// Flag: 0x100 + /// </summary> + public float KeytopBgAlpha; + + /// <summary> + /// Default value is 1.0. + /// Flag: 0x100 + /// </summary> + public float FooterBgAlpha; + + /// <summary> + /// Default value is 1.0. + /// Flag: 0x200 + /// </summary> + public float BalloonScale; + + public float Unknown8; + public uint Unknown9; + public uint Unknown10; + public uint Unknown11; + + /// <summary> + /// [5.0.0+] Enable sound effect. + /// Flag: Enable: 0x2000 + /// Disable: 0x4000 + /// </summary> + public byte SeGroup; + + /// <summary> + /// [6.0.0+] Enables the Trigger field when Trigger is non-zero. + /// </summary> + public byte TriggerFlag; + + /// <summary> + /// [6.0.0+] Always set to zero. + /// </summary> + public byte Trigger; + + public byte Padding; + + public SoftwareKeyboardCalcEx ToExtended() + { + SoftwareKeyboardCalcEx calc = new SoftwareKeyboardCalcEx(); + + calc.Unknown = Unknown; + calc.Size = Size; + calc.Unknown1 = Unknown1; + calc.Unknown2 = Unknown2; + calc.Flags = Flags; + calc.Initialize = Initialize; + calc.Volume = Volume; + calc.CursorPos = CursorPos; + calc.Appear = Appear.ToExtended(); + calc.InputText = InputText; + calc.UseUtf8 = UseUtf8; + calc.Unknown3 = Unknown3; + calc.BackspaceEnabled = BackspaceEnabled; + calc.Unknown4 = Unknown4; + calc.Unknown5 = Unknown5; + calc.KeytopAsFloating = KeytopAsFloating; + calc.FooterScalable = FooterScalable; + calc.AlphaEnabledInInputMode = AlphaEnabledInInputMode; + calc.InputModeFadeType = InputModeFadeType; + calc.TouchDisabled = TouchDisabled; + calc.HardwareKeyboardDisabled = HardwareKeyboardDisabled; + calc.Unknown6 = Unknown6; + calc.Unknown7 = Unknown7; + calc.KeytopScale0 = KeytopScale0; + calc.KeytopScale1 = KeytopScale1; + calc.KeytopTranslate0 = KeytopTranslate0; + calc.KeytopTranslate1 = KeytopTranslate1; + calc.KeytopBgAlpha = KeytopBgAlpha; + calc.FooterBgAlpha = FooterBgAlpha; + calc.BalloonScale = BalloonScale; + calc.Unknown8 = Unknown8; + calc.Unknown9 = Unknown9; + calc.Unknown10 = Unknown10; + calc.Unknown11 = Unknown11; + calc.SeGroup = SeGroup; + calc.TriggerFlag = TriggerFlag; + calc.Trigger = Trigger; + + return calc; + } + } +} |