NetSequences.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. namespace TerminalGuiFluentTesting;
  2. class NetSequences
  3. {
  4. public static ConsoleKeyInfo [] Down = new []
  5. {
  6. new ConsoleKeyInfo('\x1B', ConsoleKey.Enter, false, false, false),
  7. new ConsoleKeyInfo('[', ConsoleKey.None, false, false, false),
  8. new ConsoleKeyInfo('B', ConsoleKey.None, false, false, false),
  9. };
  10. public static ConsoleKeyInfo [] Up = new []
  11. {
  12. new ConsoleKeyInfo('\x1B', ConsoleKey.Enter, false, false, false),
  13. new ConsoleKeyInfo('[', ConsoleKey.None, false, false, false),
  14. new ConsoleKeyInfo('A', ConsoleKey.None, false, false, false),
  15. };
  16. public static ConsoleKeyInfo [] Left = new []
  17. {
  18. new ConsoleKeyInfo('\x1B', ConsoleKey.Enter, false, false, false),
  19. new ConsoleKeyInfo('[', ConsoleKey.None, false, false, false),
  20. new ConsoleKeyInfo('D', ConsoleKey.None, false, false, false),
  21. };
  22. public static ConsoleKeyInfo [] Right = new []
  23. {
  24. new ConsoleKeyInfo('\x1B', ConsoleKey.Enter, false, false, false),
  25. new ConsoleKeyInfo('[', ConsoleKey.None, false, false, false),
  26. new ConsoleKeyInfo('C', ConsoleKey.None, false, false, false),
  27. };
  28. public static IEnumerable<ConsoleKeyInfo> Click (int button, int screenX, int screenY)
  29. {
  30. // Adjust for 1-based coordinates
  31. int adjustedX = screenX + 1;
  32. int adjustedY = screenY + 1;
  33. // Mouse press sequence
  34. var sequence = $"\x1B[<{button};{adjustedX};{adjustedY}M";
  35. foreach (char c in sequence)
  36. {
  37. yield return new ConsoleKeyInfo (c, ConsoleKey.None, false, false, false);
  38. }
  39. // Mouse release sequence
  40. sequence = $"\x1B[<{button};{adjustedX};{adjustedY}m";
  41. foreach (char c in sequence)
  42. {
  43. yield return new ConsoleKeyInfo (c, ConsoleKey.None, false, false, false);
  44. }
  45. }
  46. }