SoftwareKeyboardCalc.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System.Runtime.InteropServices;
  2. namespace Ryujinx.HLE.HOS.Applets.SoftwareKeyboard
  3. {
  4. /// <summary>
  5. /// A structure with configuration options of the software keyboard when starting a new input request in inline mode.
  6. /// </summary>
  7. [StructLayout(LayoutKind.Sequential, Pack=1, CharSet = CharSet.Unicode)]
  8. struct SoftwareKeyboardCalc
  9. {
  10. private const int InputTextLength = 505;
  11. public uint Unknown;
  12. /// <summary>
  13. /// The size of the Calc struct, as reported by the process communicating with the applet.
  14. /// </summary>
  15. public ushort Size;
  16. public byte Unknown1;
  17. public byte Unknown2;
  18. /// <summary>
  19. /// Configuration flags. Their purpose is currently unknown.
  20. /// </summary>
  21. public ulong Flags;
  22. /// <summary>
  23. /// The original parameters used when initializing the keyboard applet.
  24. /// </summary>
  25. public SoftwareKeyboardInitialize Initialize;
  26. /// <summary>
  27. /// The audio volume used by the sound effects of the keyboard.
  28. /// </summary>
  29. public float Volume;
  30. /// <summary>
  31. /// The initial position of the text cursor (caret) in the provided input text.
  32. /// </summary>
  33. public int CursorPos;
  34. /// <summary>
  35. /// Appearance configurations for the on-screen keyboard.
  36. /// </summary>
  37. public SoftwareKeyboardAppear Appear;
  38. /// <summary>
  39. /// The initial input text to be used by the software keyboard.
  40. /// </summary>
  41. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = InputTextLength + 1)]
  42. public string InputText;
  43. /// <summary>
  44. /// When set, the strings communicated by software keyboard will be encoded as UTF-8 instead of UTF-16.
  45. /// </summary>
  46. [MarshalAs(UnmanagedType.I1)]
  47. public bool UseUtf8;
  48. public byte Unknown3;
  49. /// <summary>
  50. /// [5.0.0+] Enable the backspace key in the software keyboard.
  51. /// </summary>
  52. [MarshalAs(UnmanagedType.I1)]
  53. public bool BackspaceEnabled;
  54. public short Unknown4;
  55. public byte Unknown5;
  56. [MarshalAs(UnmanagedType.I1)]
  57. public bool KeytopAsFloating;
  58. [MarshalAs(UnmanagedType.I1)]
  59. public bool FooterScalable;
  60. [MarshalAs(UnmanagedType.I1)]
  61. public bool AlphaEnabledInInputMode;
  62. public byte InputModeFadeType;
  63. /// <summary>
  64. /// When set, the software keyboard ignores touch input.
  65. /// </summary>
  66. [MarshalAs(UnmanagedType.I1)]
  67. public bool TouchDisabled;
  68. /// <summary>
  69. /// When set, the software keyboard ignores hardware keyboard commands.
  70. /// </summary>
  71. [MarshalAs(UnmanagedType.I1)]
  72. public bool HardwareKeyboardDisabled;
  73. public uint Unknown6;
  74. public uint Unknown7;
  75. /// <summary>
  76. /// Default value is 1.0.
  77. /// </summary>
  78. public float KeytopScale0;
  79. /// <summary>
  80. /// Default value is 1.0.
  81. /// </summary>
  82. public float KeytopScale1;
  83. public float KeytopTranslate0;
  84. public float KeytopTranslate1;
  85. /// <summary>
  86. /// Default value is 1.0.
  87. /// </summary>
  88. public float KeytopBgAlpha;
  89. /// <summary>
  90. /// Default value is 1.0.
  91. /// </summary>
  92. public float FooterBgAlpha;
  93. /// <summary>
  94. /// Default value is 1.0.
  95. /// </summary>
  96. public float BalloonScale;
  97. public float Unknown8;
  98. public uint Unknown9;
  99. public uint Unknown10;
  100. public uint Unknown11;
  101. /// <summary>
  102. /// [5.0.0+] Enable sound effect.
  103. /// </summary>
  104. public byte SeGroup;
  105. /// <summary>
  106. /// [6.0.0+] Enables the Trigger field when Trigger is non-zero.
  107. /// </summary>
  108. public byte TriggerFlag;
  109. /// <summary>
  110. /// [6.0.0+] Always set to zero.
  111. /// </summary>
  112. public byte Trigger;
  113. public byte Padding;
  114. }
  115. }