SoftwareKeyboardCalc.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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. public const int InputTextLength = SoftwareKeyboardCalcEx.InputTextLength;
  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. Each bit in the bitfield enabled a different operation of the keyboard
  20. /// using the data provided with the Calc structure.
  21. /// </summary>
  22. public KeyboardCalcFlags Flags;
  23. /// <summary>
  24. /// The original parameters used when initializing the keyboard applet.
  25. /// Flag: 0x1
  26. /// </summary>
  27. public SoftwareKeyboardInitialize Initialize;
  28. /// <summary>
  29. /// The audio volume used by the sound effects of the keyboard.
  30. /// Flag: 0x2
  31. /// </summary>
  32. public float Volume;
  33. /// <summary>
  34. /// The initial position of the text cursor (caret) in the provided input text.
  35. /// Flag: 0x10
  36. /// </summary>
  37. public int CursorPos;
  38. /// <summary>
  39. /// Appearance configurations for the on-screen keyboard.
  40. /// </summary>
  41. public SoftwareKeyboardAppear Appear;
  42. /// <summary>
  43. /// The initial input text to be used by the software keyboard.
  44. /// Flag: 0x8
  45. /// </summary>
  46. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = InputTextLength + 1)]
  47. public string InputText;
  48. /// <summary>
  49. /// When set, the strings communicated by software keyboard will be encoded as UTF-8 instead of UTF-16.
  50. /// Flag: 0x20
  51. /// </summary>
  52. [MarshalAs(UnmanagedType.I1)]
  53. public bool UseUtf8;
  54. public byte Unknown3;
  55. /// <summary>
  56. /// [5.0.0+] Enable the backspace key in the software keyboard.
  57. /// Flag: 0x8000
  58. /// </summary>
  59. [MarshalAs(UnmanagedType.I1)]
  60. public bool BackspaceEnabled;
  61. public short Unknown4;
  62. public byte Unknown5;
  63. /// <summary>
  64. /// Flag: 0x200
  65. /// </summary>
  66. [MarshalAs(UnmanagedType.I1)]
  67. public bool KeytopAsFloating;
  68. /// <summary>
  69. /// Flag: 0x100
  70. /// </summary>
  71. [MarshalAs(UnmanagedType.I1)]
  72. public bool FooterScalable;
  73. /// <summary>
  74. /// Flag: 0x100
  75. /// </summary>
  76. [MarshalAs(UnmanagedType.I1)]
  77. public bool AlphaEnabledInInputMode;
  78. /// <summary>
  79. /// Flag: 0x100
  80. /// </summary>
  81. public byte InputModeFadeType;
  82. /// <summary>
  83. /// When set, the software keyboard ignores touch input.
  84. /// Flag: 0x200
  85. /// </summary>
  86. [MarshalAs(UnmanagedType.I1)]
  87. public bool TouchDisabled;
  88. /// <summary>
  89. /// When set, the software keyboard ignores hardware keyboard commands.
  90. /// Flag: 0x800
  91. /// </summary>
  92. [MarshalAs(UnmanagedType.I1)]
  93. public bool HardwareKeyboardDisabled;
  94. public uint Unknown6;
  95. public uint Unknown7;
  96. /// <summary>
  97. /// Default value is 1.0.
  98. /// Flag: 0x200
  99. /// </summary>
  100. public float KeytopScale0;
  101. /// <summary>
  102. /// Default value is 1.0.
  103. /// Flag: 0x200
  104. /// </summary>
  105. public float KeytopScale1;
  106. public float KeytopTranslate0;
  107. public float KeytopTranslate1;
  108. /// <summary>
  109. /// Default value is 1.0.
  110. /// Flag: 0x100
  111. /// </summary>
  112. public float KeytopBgAlpha;
  113. /// <summary>
  114. /// Default value is 1.0.
  115. /// Flag: 0x100
  116. /// </summary>
  117. public float FooterBgAlpha;
  118. /// <summary>
  119. /// Default value is 1.0.
  120. /// Flag: 0x200
  121. /// </summary>
  122. public float BalloonScale;
  123. public float Unknown8;
  124. public uint Unknown9;
  125. public uint Unknown10;
  126. public uint Unknown11;
  127. /// <summary>
  128. /// [5.0.0+] Enable sound effect.
  129. /// Flag: Enable: 0x2000
  130. /// Disable: 0x4000
  131. /// </summary>
  132. public byte SeGroup;
  133. /// <summary>
  134. /// [6.0.0+] Enables the Trigger field when Trigger is non-zero.
  135. /// </summary>
  136. public byte TriggerFlag;
  137. /// <summary>
  138. /// [6.0.0+] Always set to zero.
  139. /// </summary>
  140. public byte Trigger;
  141. public byte Padding;
  142. public SoftwareKeyboardCalcEx ToExtended()
  143. {
  144. SoftwareKeyboardCalcEx calc = new SoftwareKeyboardCalcEx();
  145. calc.Unknown = Unknown;
  146. calc.Size = Size;
  147. calc.Unknown1 = Unknown1;
  148. calc.Unknown2 = Unknown2;
  149. calc.Flags = Flags;
  150. calc.Initialize = Initialize;
  151. calc.Volume = Volume;
  152. calc.CursorPos = CursorPos;
  153. calc.Appear = Appear.ToExtended();
  154. calc.InputText = InputText;
  155. calc.UseUtf8 = UseUtf8;
  156. calc.Unknown3 = Unknown3;
  157. calc.BackspaceEnabled = BackspaceEnabled;
  158. calc.Unknown4 = Unknown4;
  159. calc.Unknown5 = Unknown5;
  160. calc.KeytopAsFloating = KeytopAsFloating;
  161. calc.FooterScalable = FooterScalable;
  162. calc.AlphaEnabledInInputMode = AlphaEnabledInInputMode;
  163. calc.InputModeFadeType = InputModeFadeType;
  164. calc.TouchDisabled = TouchDisabled;
  165. calc.HardwareKeyboardDisabled = HardwareKeyboardDisabled;
  166. calc.Unknown6 = Unknown6;
  167. calc.Unknown7 = Unknown7;
  168. calc.KeytopScale0 = KeytopScale0;
  169. calc.KeytopScale1 = KeytopScale1;
  170. calc.KeytopTranslate0 = KeytopTranslate0;
  171. calc.KeytopTranslate1 = KeytopTranslate1;
  172. calc.KeytopBgAlpha = KeytopBgAlpha;
  173. calc.FooterBgAlpha = FooterBgAlpha;
  174. calc.BalloonScale = BalloonScale;
  175. calc.Unknown8 = Unknown8;
  176. calc.Unknown9 = Unknown9;
  177. calc.Unknown10 = Unknown10;
  178. calc.Unknown11 = Unknown11;
  179. calc.SeGroup = SeGroup;
  180. calc.TriggerFlag = TriggerFlag;
  181. calc.Trigger = Trigger;
  182. return calc;
  183. }
  184. }
  185. }