| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- 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;
- }
- }
- }
|