| 123456789101112131415161718192021222324252627282930313233343536 |
- using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common;
- using Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Mouse;
- namespace Ryujinx.HLE.HOS.Services.Hid
- {
- public class MouseDevice : BaseDevice
- {
- public MouseDevice(Switch device, bool active) : base(device, active) { }
- public void Update(int mouseX, int mouseY, uint buttons = 0, int scrollX = 0, int scrollY = 0, bool connected = false)
- {
- ref RingLifo<MouseState> lifo = ref _device.Hid.SharedMemory.Mouse;
- ref MouseState previousEntry = ref lifo.GetCurrentEntryRef();
-
- MouseState newState = new MouseState()
- {
- SamplingNumber = previousEntry.SamplingNumber + 1,
- };
- if (Active)
- {
- newState.Buttons = (MouseButton)buttons;
- newState.X = mouseX;
- newState.Y = mouseY;
- newState.DeltaX = mouseX - previousEntry.DeltaX;
- newState.DeltaY = mouseY - previousEntry.DeltaY;
- newState.WheelDeltaX = scrollX;
- newState.WheelDeltaY = scrollY;
- newState.Attributes = connected ? MouseAttribute.IsConnected : MouseAttribute.None;
- }
- lifo.Write(ref newState);
- }
- }
- }
|