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
This commit is contained in:
Caian Benedicto 2021-01-11 15:27:55 -03:00 committed by GitHub
parent b81f19613f
commit e57b140429
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 770 additions and 41 deletions

View file

@ -1,4 +1,5 @@
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Cpu;
using Ryujinx.HLE.HOS.Ipc;
using Ryujinx.HLE.HOS.Kernel.Common;
@ -238,6 +239,24 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
return null;
}
[Command(2450)]
// GetIndirectLayerImageMap(s64 width, s64 height, u64 handle, nn::applet::AppletResourceUserId, pid) -> (s64, s64, buffer<bytes, 0x46>)
public ResultCode GetIndirectLayerImageMap(ServiceCtx context)
{
// The size of the layer buffer should be an aligned multiple of width * height
// because it was created using GetIndirectLayerImageRequiredMemoryInfo as a guide.
long layerBuffPosition = context.Request.ReceiveBuff[0].Position;
long layerBuffSize = context.Request.ReceiveBuff[0].Size;
// Fill the layer with zeros.
context.Memory.Fill((ulong)layerBuffPosition, (ulong)layerBuffSize, 0x00);
Logger.Stub?.PrintStub(LogClass.ServiceVi);
return ResultCode.Success;
}
[Command(2460)]
// GetIndirectLayerImageRequiredMemoryInfo(u64 width, u64 height) -> (u64 size, u64 alignment)
public ResultCode GetIndirectLayerImageRequiredMemoryInfo(ServiceCtx context)