From e57b14042910eac2f876549b4a1e6fd5ba027368 Mon Sep 17 00:00:00 2001
From: Caian Benedicto <caianbene@gmail.com>
Date: Mon, 11 Jan 2021 15:27:55 -0300
Subject: Add support for inline software keyboard (#1868)

* Add background mode configuration to SoftwareKeyboardApplet

* Add placeholder text generator for Software Keyboard in background mode

* Add stub for GetIndirectLayerImageMap

* Fix default state of DecidedCancel response

* Add GUI text input to Software Keyboard in background mode

* Fix graphical glitch when Inline Software Keyboard appears

* Improve readability of InlineResponses class

* Improve code styling and fix compiler warnings

* Replace ServiceDisplay log class by ServiceVi

* Replace static readonly by const

* Add proper finalization to the keyboard applet in inline mode

* Rename constants to start with uppercase

* Fix inline keyboard not working with some games

* Improve code readability

* Fix code styling
---
 .../SoftwareKeyboard/SoftwareKeyboardCalc.cs       | 84 ++++++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs

(limited to 'Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs')

diff --git a/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs b/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs
new file mode 100644
index 00000000..6213c2e4
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Applets/SoftwareKeyboard/SoftwareKeyboardCalc.cs
@@ -0,0 +1,84 @@
+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, Pack=1, CharSet = CharSet.Unicode)]
+    struct SoftwareKeyboardCalc
+    {
+        private const int InputTextLength = 505;
+
+        public uint Unknown;
+
+        public ushort Size;
+
+        public byte Unknown1;
+        public byte Unknown2;
+
+        public ulong Flags;
+
+        public SoftwareKeyboardInitialize Initialize;
+
+        public float Volume;
+
+        public int CursorPos;
+
+        public SoftwareKeyboardAppear Appear;
+
+        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = InputTextLength + 1)]
+        public string InputText;
+
+        public byte Utf8Mode;
+
+        public byte Unknown3;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public bool BackspaceEnabled;
+
+        public short Unknown4;
+        public byte Unknown5;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public byte KeytopAsFloating;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public byte FooterScalable;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public byte AlphaEnabledInInputMode;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public byte InputModeFadeType;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public byte TouchDisabled;
+
+        [MarshalAs(UnmanagedType.I1)]
+        public byte HardwareKeyboardDisabled;
+
+        public uint Unknown6;
+        public uint Unknown7;
+
+        public float KeytopScale0;
+        public float KeytopScale1;
+        public float KeytopTranslate0;
+        public float KeytopTranslate1;
+        public float KeytopBgAlpha;
+        public float FooterBgAlpha;
+        public float BalloonScale;
+
+        public float Unknown8;
+        public uint Unknown9;
+        public uint Unknown10;
+        public uint Unknown11;
+
+        public byte SeGroup;
+
+        public byte TriggerFlag;
+        public byte Trigger;
+
+        public byte Padding;
+    }
+}
-- 
cgit v1.2.3-70-g09d2