using System; using System.Linq; using System.Collections.Generic; using System.Windows.Forms; using BizHawk.Client.ApiHawk; using BizHawk.Client.Common; namespace BizHawk.Client.EmuHawk { public sealed class InputApi : IInput { public InputApi() : base() { } public Dictionary Get() { var buttons = new Dictionary(); foreach (var kvp in Global.ControllerInputCoalescer.BoolButtons().Where(kvp => kvp.Value)) { buttons[kvp.Key] = true; } return buttons; } public Dictionary GetMouse() { var buttons = new Dictionary(); // TODO - need to specify whether in "emu" or "native" coordinate space. var p = GlobalWin.DisplayManager.UntransformPoint(Control.MousePosition); buttons["X"] = p.X; buttons["Y"] = p.Y; buttons[MouseButtons.Left.ToString()] = (Control.MouseButtons & MouseButtons.Left) != 0; buttons[MouseButtons.Middle.ToString()] = (Control.MouseButtons & MouseButtons.Middle) != 0; buttons[MouseButtons.Right.ToString()] = (Control.MouseButtons & MouseButtons.Right) != 0; buttons[MouseButtons.XButton1.ToString()] = (Control.MouseButtons & MouseButtons.XButton1) != 0; buttons[MouseButtons.XButton2.ToString()] = (Control.MouseButtons & MouseButtons.XButton2) != 0; buttons["Wheel"] = GlobalWin.MainForm.MouseWheelTracker; return buttons; } } }