Profile editor: - Cockpit-style encoder gauges centered over the Upper Middle MFD: Z left, X/Y right, and L/R/Rz arranged as a big "U". - [JoyStick] section surfaced as a vertical "Axis" toggle column (6 inverts + ZR mix), written back to the profile's calibration. - Tighten the panel layout (close gaps, trim empty border columns); colour the Secondary/Screen columns yellow; rename the "Joystick / Hat" board to "Joystick"; add an "Import .ini..." tray entry. - "RIO commands (live)" button group (all RioCommandCodes) fired at the live RIO. Serial-port handling: - Start dormant; only take the COM port for a profiled game (auto-switch) or while editing, so the native games can open the port without clashing. - Editor sessions hold the port but route keyboard/mouse/joystick to no-op sinks (NullInputSink), so button function can be checked without injecting input; RioRuntime.ButtonActivity drives a live cyan press indicator and lamp feedback still applies. - AutoSwitchWatcher.Reset() re-syncs the watcher after an editor session. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 lines
593 B
C#
18 lines
593 B
C#
namespace RioJoy.Core.Mapping;
|
|
|
|
/// <summary>
|
|
/// A no-op <see cref="IInputSink"/>: swallows all keyboard/mouse output. Used while
|
|
/// a profile is being edited so the RIO can be exercised to check button function
|
|
/// without injecting keystrokes/clicks into the OS (lamp feedback still applies).
|
|
/// </summary>
|
|
public sealed class NullInputSink : IInputSink
|
|
{
|
|
public void KeyDown(byte virtualKey, bool extended) { }
|
|
|
|
public void KeyUp(byte virtualKey, bool extended) { }
|
|
|
|
public void MouseMove(int dx, int dy) { }
|
|
|
|
public void MouseButton(MouseButton button, bool down) { }
|
|
}
|