Keyboard input
The KeyboardInputSimulator class provides keyboard input simulation for Avalonia controls in headless testing.
Basic Key Events
var simulator = new KeyboardInputSimulator();
// Key down
simulator.KeyDown(control, Key.A);
// Key up
simulator.KeyUp(control, Key.A);
// Key press (down + up)
simulator.KeyPress(control, Key.A);
// Key press with modifiers
simulator.KeyPress(control, Key.A, modifiers: KeyModifiers.Control | KeyModifiers.Shift);
Modifier Keys
// Track modifier state
simulator.CtrlDown(control); // Sets CurrentModifiers to Control
simulator.ShiftDown(control); // Adds Shift to CurrentModifiers
simulator.AltDown(control); // Adds Alt to CurrentModifiers
// Release modifiers
simulator.ShiftUp(control);
simulator.CtrlUp(control);
simulator.AltUp(control);
// Check current modifiers
KeyModifiers modifiers = simulator.CurrentModifiers;
// Reset all modifiers
simulator.CtrlUp(control);
simulator.ShiftUp(control);
simulator.AltUp(control);
simulator.MetaUp(control);
Common Shortcuts
// Built-in shortcuts
simulator.CtrlKey(control, Key.A); // Ctrl+A (Select All)
simulator.CtrlKey(control, Key.C); // Ctrl+C (Copy)
simulator.CtrlKey(control, Key.V); // Ctrl+V (Paste)
simulator.CtrlKey(control, Key.X); // Ctrl+X (Cut)
simulator.CtrlKey(control, Key.Z); // Ctrl+Z (Undo)
simulator.CtrlKey(control, Key.Y); // Ctrl+Y (Redo)
// Alt shortcuts
simulator.AltKey(control, Key.F4); // Alt+F4 (Close)
// Shift shortcuts
simulator.ShiftTab(control); // Shift+Tab (Reverse Tab)
// Combined modifiers
simulator.CtrlShiftKey(control, Key.S); // Ctrl+Shift+S
simulator.KeyPress(control, Key.Delete, modifiers: KeyModifiers.Control | KeyModifiers.Alt); // Ctrl+Alt+Delete
Navigation Keys
// Arrow keys
simulator.ArrowUp(control);
simulator.ArrowDown(control);
simulator.ArrowLeft(control);
simulator.ArrowRight(control);
// Special keys
simulator.Tab(control);
simulator.Enter(control);
simulator.Escape(control);
simulator.Space(control);
simulator.Backspace(control);
simulator.Delete(control);
// Page navigation
simulator.PageUp(control);
simulator.PageDown(control);
simulator.Home(control);
simulator.End(control);
Function Keys
// F1-F12
simulator.FunctionKey(control, 1); // F1
simulator.FunctionKey(control, 5); // F5 (Refresh)
simulator.FunctionKey(control, 12); // F12 (Dev tools)
Type Text
// Type a sequence of characters
simulator.TypeText(control, "Hello World!");
// Type with delay between keys
simulator.TypeText(control, "Hello", keyInterval: 50);
Custom Key Sequences
// Execute a sequence of keys
foreach (var key in new[] { Key.H, Key.E, Key.L, Key.L, Key.O })
simulator.KeyPress(control, key);
// Keys with modifiers
foreach (var key in new[] { Key.A, Key.B })
simulator.KeyPress(control, key, modifiers: KeyModifiers.Control);