78 instantiations of AspireTerminalKey
Aspire.Hosting (77)
ApplicationModel\AspireTerminalKey.cs (77)
56
public static AspireTerminalKey A =>
new
(Hex1bKey.A, Hex1bModifiers.None, nameof(A));
59
public static AspireTerminalKey B =>
new
(Hex1bKey.B, Hex1bModifiers.None, nameof(B));
62
public static AspireTerminalKey C =>
new
(Hex1bKey.C, Hex1bModifiers.None, nameof(C));
65
public static AspireTerminalKey D =>
new
(Hex1bKey.D, Hex1bModifiers.None, nameof(D));
68
public static AspireTerminalKey E =>
new
(Hex1bKey.E, Hex1bModifiers.None, nameof(E));
71
public static AspireTerminalKey F =>
new
(Hex1bKey.F, Hex1bModifiers.None, nameof(F));
74
public static AspireTerminalKey G =>
new
(Hex1bKey.G, Hex1bModifiers.None, nameof(G));
77
public static AspireTerminalKey H =>
new
(Hex1bKey.H, Hex1bModifiers.None, nameof(H));
80
public static AspireTerminalKey I =>
new
(Hex1bKey.I, Hex1bModifiers.None, nameof(I));
83
public static AspireTerminalKey J =>
new
(Hex1bKey.J, Hex1bModifiers.None, nameof(J));
86
public static AspireTerminalKey K =>
new
(Hex1bKey.K, Hex1bModifiers.None, nameof(K));
89
public static AspireTerminalKey L =>
new
(Hex1bKey.L, Hex1bModifiers.None, nameof(L));
92
public static AspireTerminalKey M =>
new
(Hex1bKey.M, Hex1bModifiers.None, nameof(M));
95
public static AspireTerminalKey N =>
new
(Hex1bKey.N, Hex1bModifiers.None, nameof(N));
98
public static AspireTerminalKey O =>
new
(Hex1bKey.O, Hex1bModifiers.None, nameof(O));
101
public static AspireTerminalKey P =>
new
(Hex1bKey.P, Hex1bModifiers.None, nameof(P));
104
public static AspireTerminalKey Q =>
new
(Hex1bKey.Q, Hex1bModifiers.None, nameof(Q));
107
public static AspireTerminalKey R =>
new
(Hex1bKey.R, Hex1bModifiers.None, nameof(R));
110
public static AspireTerminalKey S =>
new
(Hex1bKey.S, Hex1bModifiers.None, nameof(S));
113
public static AspireTerminalKey T =>
new
(Hex1bKey.T, Hex1bModifiers.None, nameof(T));
116
public static AspireTerminalKey U =>
new
(Hex1bKey.U, Hex1bModifiers.None, nameof(U));
119
public static AspireTerminalKey V =>
new
(Hex1bKey.V, Hex1bModifiers.None, nameof(V));
122
public static AspireTerminalKey W =>
new
(Hex1bKey.W, Hex1bModifiers.None, nameof(W));
125
public static AspireTerminalKey X =>
new
(Hex1bKey.X, Hex1bModifiers.None, nameof(X));
128
public static AspireTerminalKey Y =>
new
(Hex1bKey.Y, Hex1bModifiers.None, nameof(Y));
131
public static AspireTerminalKey Z =>
new
(Hex1bKey.Z, Hex1bModifiers.None, nameof(Z));
134
public static AspireTerminalKey D0 =>
new
(Hex1bKey.D0, Hex1bModifiers.None, nameof(D0));
137
public static AspireTerminalKey D1 =>
new
(Hex1bKey.D1, Hex1bModifiers.None, nameof(D1));
140
public static AspireTerminalKey D2 =>
new
(Hex1bKey.D2, Hex1bModifiers.None, nameof(D2));
143
public static AspireTerminalKey D3 =>
new
(Hex1bKey.D3, Hex1bModifiers.None, nameof(D3));
146
public static AspireTerminalKey D4 =>
new
(Hex1bKey.D4, Hex1bModifiers.None, nameof(D4));
149
public static AspireTerminalKey D5 =>
new
(Hex1bKey.D5, Hex1bModifiers.None, nameof(D5));
152
public static AspireTerminalKey D6 =>
new
(Hex1bKey.D6, Hex1bModifiers.None, nameof(D6));
155
public static AspireTerminalKey D7 =>
new
(Hex1bKey.D7, Hex1bModifiers.None, nameof(D7));
158
public static AspireTerminalKey D8 =>
new
(Hex1bKey.D8, Hex1bModifiers.None, nameof(D8));
161
public static AspireTerminalKey D9 =>
new
(Hex1bKey.D9, Hex1bModifiers.None, nameof(D9));
164
public static AspireTerminalKey F1 =>
new
(Hex1bKey.F1, Hex1bModifiers.None, nameof(F1));
167
public static AspireTerminalKey F2 =>
new
(Hex1bKey.F2, Hex1bModifiers.None, nameof(F2));
170
public static AspireTerminalKey F3 =>
new
(Hex1bKey.F3, Hex1bModifiers.None, nameof(F3));
173
public static AspireTerminalKey F4 =>
new
(Hex1bKey.F4, Hex1bModifiers.None, nameof(F4));
176
public static AspireTerminalKey F5 =>
new
(Hex1bKey.F5, Hex1bModifiers.None, nameof(F5));
179
public static AspireTerminalKey F6 =>
new
(Hex1bKey.F6, Hex1bModifiers.None, nameof(F6));
182
public static AspireTerminalKey F7 =>
new
(Hex1bKey.F7, Hex1bModifiers.None, nameof(F7));
185
public static AspireTerminalKey F8 =>
new
(Hex1bKey.F8, Hex1bModifiers.None, nameof(F8));
188
public static AspireTerminalKey F9 =>
new
(Hex1bKey.F9, Hex1bModifiers.None, nameof(F9));
191
public static AspireTerminalKey F10 =>
new
(Hex1bKey.F10, Hex1bModifiers.None, nameof(F10));
194
public static AspireTerminalKey F11 =>
new
(Hex1bKey.F11, Hex1bModifiers.None, nameof(F11));
197
public static AspireTerminalKey F12 =>
new
(Hex1bKey.F12, Hex1bModifiers.None, nameof(F12));
200
public static AspireTerminalKey Enter =>
new
(Hex1bKey.Enter, Hex1bModifiers.None, nameof(Enter));
203
public static AspireTerminalKey Tab =>
new
(Hex1bKey.Tab, Hex1bModifiers.None, nameof(Tab));
206
public static AspireTerminalKey Escape =>
new
(Hex1bKey.Escape, Hex1bModifiers.None, nameof(Escape));
209
public static AspireTerminalKey Backspace =>
new
(Hex1bKey.Backspace, Hex1bModifiers.None, nameof(Backspace));
212
public static AspireTerminalKey Delete =>
new
(Hex1bKey.Delete, Hex1bModifiers.None, nameof(Delete));
215
public static AspireTerminalKey Insert =>
new
(Hex1bKey.Insert, Hex1bModifiers.None, nameof(Insert));
218
public static AspireTerminalKey Space =>
new
(Hex1bKey.Spacebar, Hex1bModifiers.None, nameof(Space));
221
public static AspireTerminalKey Up =>
new
(Hex1bKey.UpArrow, Hex1bModifiers.None, nameof(Up));
224
public static AspireTerminalKey Down =>
new
(Hex1bKey.DownArrow, Hex1bModifiers.None, nameof(Down));
227
public static AspireTerminalKey Left =>
new
(Hex1bKey.LeftArrow, Hex1bModifiers.None, nameof(Left));
230
public static AspireTerminalKey Right =>
new
(Hex1bKey.RightArrow, Hex1bModifiers.None, nameof(Right));
233
public static AspireTerminalKey Home =>
new
(Hex1bKey.Home, Hex1bModifiers.None, nameof(Home));
236
public static AspireTerminalKey End =>
new
(Hex1bKey.End, Hex1bModifiers.None, nameof(End));
239
public static AspireTerminalKey PageUp =>
new
(Hex1bKey.PageUp, Hex1bModifiers.None, nameof(PageUp));
242
public static AspireTerminalKey PageDown =>
new
(Hex1bKey.PageDown, Hex1bModifiers.None, nameof(PageDown));
245
public static AspireTerminalKey Comma =>
new
(Hex1bKey.OemComma, Hex1bModifiers.None, nameof(Comma));
248
public static AspireTerminalKey Period =>
new
(Hex1bKey.OemPeriod, Hex1bModifiers.None, nameof(Period));
251
public static AspireTerminalKey Minus =>
new
(Hex1bKey.OemMinus, Hex1bModifiers.None, nameof(Minus));
254
public static AspireTerminalKey EqualsSign =>
new
(Hex1bKey.OemPlus, Hex1bModifiers.None, nameof(EqualsSign));
257
public static AspireTerminalKey Slash =>
new
(Hex1bKey.OemQuestion, Hex1bModifiers.None, nameof(Slash));
260
public static AspireTerminalKey Semicolon =>
new
(Hex1bKey.Oem1, Hex1bModifiers.None, nameof(Semicolon));
263
public static AspireTerminalKey LeftBracket =>
new
(Hex1bKey.Oem4, Hex1bModifiers.None, nameof(LeftBracket));
266
public static AspireTerminalKey Backslash =>
new
(Hex1bKey.Oem5, Hex1bModifiers.None, nameof(Backslash));
269
public static AspireTerminalKey RightBracket =>
new
(Hex1bKey.Oem6, Hex1bModifiers.None, nameof(RightBracket));
272
public static AspireTerminalKey Apostrophe =>
new
(Hex1bKey.Oem7, Hex1bModifiers.None, nameof(Apostrophe));
275
public static AspireTerminalKey Backtick =>
new
(Hex1bKey.OemTilde, Hex1bModifiers.None, nameof(Backtick));
288
return
new
(key.Key, key.Modifiers | Hex1bModifiers.Control, key._name!);
302
return
new
(key.Key, key.Modifiers | Hex1bModifiers.Shift, key._name!);
316
return
new
(key.Key, key.Modifiers | Hex1bModifiers.Alt, key._name!);
Aspire.Hosting.Tests (1)
Terminals\AspireTerminalKeyTests.cs (1)
143
var second = new
AspireTerminalKey
();
345 references to AspireTerminalKey
Aspire.Hosting (96)
ApplicationModel\AspireTerminal.cs (5)
104
/// Use the named values on <see cref="
AspireTerminalKey
"/> and combine them with
105
/// <see cref="
AspireTerminalKey
.Ctrl"/>, <see cref="
AspireTerminalKey
.Shift"/>, and
106
/// <see cref="
AspireTerminalKey
.Alt"/>. For example, <c>AspireTerminalKey.Ctrl(AspireTerminalKey.R)</c>
117
public Task SendKeyAsync(
AspireTerminalKey
key, CancellationToken cancellationToken = default)
ApplicationModel\AspireTerminalKey.cs (87)
38
public readonly struct AspireTerminalKey : IEquatable<
AspireTerminalKey
>
56
public static
AspireTerminalKey
A => new(Hex1bKey.A, Hex1bModifiers.None, nameof(A));
59
public static
AspireTerminalKey
B => new(Hex1bKey.B, Hex1bModifiers.None, nameof(B));
62
public static
AspireTerminalKey
C => new(Hex1bKey.C, Hex1bModifiers.None, nameof(C));
65
public static
AspireTerminalKey
D => new(Hex1bKey.D, Hex1bModifiers.None, nameof(D));
68
public static
AspireTerminalKey
E => new(Hex1bKey.E, Hex1bModifiers.None, nameof(E));
71
public static
AspireTerminalKey
F => new(Hex1bKey.F, Hex1bModifiers.None, nameof(F));
74
public static
AspireTerminalKey
G => new(Hex1bKey.G, Hex1bModifiers.None, nameof(G));
77
public static
AspireTerminalKey
H => new(Hex1bKey.H, Hex1bModifiers.None, nameof(H));
80
public static
AspireTerminalKey
I => new(Hex1bKey.I, Hex1bModifiers.None, nameof(I));
83
public static
AspireTerminalKey
J => new(Hex1bKey.J, Hex1bModifiers.None, nameof(J));
86
public static
AspireTerminalKey
K => new(Hex1bKey.K, Hex1bModifiers.None, nameof(K));
89
public static
AspireTerminalKey
L => new(Hex1bKey.L, Hex1bModifiers.None, nameof(L));
92
public static
AspireTerminalKey
M => new(Hex1bKey.M, Hex1bModifiers.None, nameof(M));
95
public static
AspireTerminalKey
N => new(Hex1bKey.N, Hex1bModifiers.None, nameof(N));
98
public static
AspireTerminalKey
O => new(Hex1bKey.O, Hex1bModifiers.None, nameof(O));
101
public static
AspireTerminalKey
P => new(Hex1bKey.P, Hex1bModifiers.None, nameof(P));
104
public static
AspireTerminalKey
Q => new(Hex1bKey.Q, Hex1bModifiers.None, nameof(Q));
107
public static
AspireTerminalKey
R => new(Hex1bKey.R, Hex1bModifiers.None, nameof(R));
110
public static
AspireTerminalKey
S => new(Hex1bKey.S, Hex1bModifiers.None, nameof(S));
113
public static
AspireTerminalKey
T => new(Hex1bKey.T, Hex1bModifiers.None, nameof(T));
116
public static
AspireTerminalKey
U => new(Hex1bKey.U, Hex1bModifiers.None, nameof(U));
119
public static
AspireTerminalKey
V => new(Hex1bKey.V, Hex1bModifiers.None, nameof(V));
122
public static
AspireTerminalKey
W => new(Hex1bKey.W, Hex1bModifiers.None, nameof(W));
125
public static
AspireTerminalKey
X => new(Hex1bKey.X, Hex1bModifiers.None, nameof(X));
128
public static
AspireTerminalKey
Y => new(Hex1bKey.Y, Hex1bModifiers.None, nameof(Y));
131
public static
AspireTerminalKey
Z => new(Hex1bKey.Z, Hex1bModifiers.None, nameof(Z));
134
public static
AspireTerminalKey
D0 => new(Hex1bKey.D0, Hex1bModifiers.None, nameof(D0));
137
public static
AspireTerminalKey
D1 => new(Hex1bKey.D1, Hex1bModifiers.None, nameof(D1));
140
public static
AspireTerminalKey
D2 => new(Hex1bKey.D2, Hex1bModifiers.None, nameof(D2));
143
public static
AspireTerminalKey
D3 => new(Hex1bKey.D3, Hex1bModifiers.None, nameof(D3));
146
public static
AspireTerminalKey
D4 => new(Hex1bKey.D4, Hex1bModifiers.None, nameof(D4));
149
public static
AspireTerminalKey
D5 => new(Hex1bKey.D5, Hex1bModifiers.None, nameof(D5));
152
public static
AspireTerminalKey
D6 => new(Hex1bKey.D6, Hex1bModifiers.None, nameof(D6));
155
public static
AspireTerminalKey
D7 => new(Hex1bKey.D7, Hex1bModifiers.None, nameof(D7));
158
public static
AspireTerminalKey
D8 => new(Hex1bKey.D8, Hex1bModifiers.None, nameof(D8));
161
public static
AspireTerminalKey
D9 => new(Hex1bKey.D9, Hex1bModifiers.None, nameof(D9));
164
public static
AspireTerminalKey
F1 => new(Hex1bKey.F1, Hex1bModifiers.None, nameof(F1));
167
public static
AspireTerminalKey
F2 => new(Hex1bKey.F2, Hex1bModifiers.None, nameof(F2));
170
public static
AspireTerminalKey
F3 => new(Hex1bKey.F3, Hex1bModifiers.None, nameof(F3));
173
public static
AspireTerminalKey
F4 => new(Hex1bKey.F4, Hex1bModifiers.None, nameof(F4));
176
public static
AspireTerminalKey
F5 => new(Hex1bKey.F5, Hex1bModifiers.None, nameof(F5));
179
public static
AspireTerminalKey
F6 => new(Hex1bKey.F6, Hex1bModifiers.None, nameof(F6));
182
public static
AspireTerminalKey
F7 => new(Hex1bKey.F7, Hex1bModifiers.None, nameof(F7));
185
public static
AspireTerminalKey
F8 => new(Hex1bKey.F8, Hex1bModifiers.None, nameof(F8));
188
public static
AspireTerminalKey
F9 => new(Hex1bKey.F9, Hex1bModifiers.None, nameof(F9));
191
public static
AspireTerminalKey
F10 => new(Hex1bKey.F10, Hex1bModifiers.None, nameof(F10));
194
public static
AspireTerminalKey
F11 => new(Hex1bKey.F11, Hex1bModifiers.None, nameof(F11));
197
public static
AspireTerminalKey
F12 => new(Hex1bKey.F12, Hex1bModifiers.None, nameof(F12));
200
public static
AspireTerminalKey
Enter => new(Hex1bKey.Enter, Hex1bModifiers.None, nameof(Enter));
203
public static
AspireTerminalKey
Tab => new(Hex1bKey.Tab, Hex1bModifiers.None, nameof(Tab));
206
public static
AspireTerminalKey
Escape => new(Hex1bKey.Escape, Hex1bModifiers.None, nameof(Escape));
209
public static
AspireTerminalKey
Backspace => new(Hex1bKey.Backspace, Hex1bModifiers.None, nameof(Backspace));
212
public static
AspireTerminalKey
Delete => new(Hex1bKey.Delete, Hex1bModifiers.None, nameof(Delete));
215
public static
AspireTerminalKey
Insert => new(Hex1bKey.Insert, Hex1bModifiers.None, nameof(Insert));
218
public static
AspireTerminalKey
Space => new(Hex1bKey.Spacebar, Hex1bModifiers.None, nameof(Space));
221
public static
AspireTerminalKey
Up => new(Hex1bKey.UpArrow, Hex1bModifiers.None, nameof(Up));
224
public static
AspireTerminalKey
Down => new(Hex1bKey.DownArrow, Hex1bModifiers.None, nameof(Down));
227
public static
AspireTerminalKey
Left => new(Hex1bKey.LeftArrow, Hex1bModifiers.None, nameof(Left));
230
public static
AspireTerminalKey
Right => new(Hex1bKey.RightArrow, Hex1bModifiers.None, nameof(Right));
233
public static
AspireTerminalKey
Home => new(Hex1bKey.Home, Hex1bModifiers.None, nameof(Home));
236
public static
AspireTerminalKey
End => new(Hex1bKey.End, Hex1bModifiers.None, nameof(End));
239
public static
AspireTerminalKey
PageUp => new(Hex1bKey.PageUp, Hex1bModifiers.None, nameof(PageUp));
242
public static
AspireTerminalKey
PageDown => new(Hex1bKey.PageDown, Hex1bModifiers.None, nameof(PageDown));
245
public static
AspireTerminalKey
Comma => new(Hex1bKey.OemComma, Hex1bModifiers.None, nameof(Comma));
248
public static
AspireTerminalKey
Period => new(Hex1bKey.OemPeriod, Hex1bModifiers.None, nameof(Period));
251
public static
AspireTerminalKey
Minus => new(Hex1bKey.OemMinus, Hex1bModifiers.None, nameof(Minus));
254
public static
AspireTerminalKey
EqualsSign => new(Hex1bKey.OemPlus, Hex1bModifiers.None, nameof(EqualsSign));
257
public static
AspireTerminalKey
Slash => new(Hex1bKey.OemQuestion, Hex1bModifiers.None, nameof(Slash));
260
public static
AspireTerminalKey
Semicolon => new(Hex1bKey.Oem1, Hex1bModifiers.None, nameof(Semicolon));
263
public static
AspireTerminalKey
LeftBracket => new(Hex1bKey.Oem4, Hex1bModifiers.None, nameof(LeftBracket));
266
public static
AspireTerminalKey
Backslash => new(Hex1bKey.Oem5, Hex1bModifiers.None, nameof(Backslash));
269
public static
AspireTerminalKey
RightBracket => new(Hex1bKey.Oem6, Hex1bModifiers.None, nameof(RightBracket));
272
public static
AspireTerminalKey
Apostrophe => new(Hex1bKey.Oem7, Hex1bModifiers.None, nameof(Apostrophe));
275
public static
AspireTerminalKey
Backtick => new(Hex1bKey.OemTilde, Hex1bModifiers.None, nameof(Backtick));
284
public static
AspireTerminalKey
Ctrl(
AspireTerminalKey
key)
298
public static
AspireTerminalKey
Shift(
AspireTerminalKey
key)
312
public static
AspireTerminalKey
Alt(
AspireTerminalKey
key)
324
public bool Equals(
AspireTerminalKey
other) => Key == other.Key && Modifiers == other.Modifiers;
331
public override bool Equals(object? obj) => obj is
AspireTerminalKey
other && Equals(other);
366
public static bool operator ==(
AspireTerminalKey
left,
AspireTerminalKey
right) => left.Equals(right);
374
public static bool operator !=(
AspireTerminalKey
left,
AspireTerminalKey
right) => !left.Equals(right);
ApplicationModel\Hex1bAspireTerminal.cs (1)
300
public async Task SendKeyAsync(
AspireTerminalKey
key, CancellationToken cancellationToken = default)
ApplicationModel\ITerminalBackend.cs (1)
20
Task SendKeyAsync(
AspireTerminalKey
key, CancellationToken cancellationToken);
ApplicationModel\ResourceAspireTerminal.cs (1)
110
public async Task SendKeyAsync(
AspireTerminalKey
key, CancellationToken cancellationToken = default)
ApplicationModel\TerminalAutomation.cs (1)
34
AspireTerminalKey
key,
Aspire.Hosting.Tests (249)
Terminals\AspireTerminalKeyTests.cs (171)
18
var properties = typeof(
AspireTerminalKey
).GetProperties(BindingFlags.Public | BindingFlags.Static);
22
Assert.All(properties, property => Assert.Equal(typeof(
AspireTerminalKey
), property.PropertyType));
41
(
AspireTerminalKey
Value, Hex1bModifiers Modifiers)[] modifiedKeys =
43
(
AspireTerminalKey
.Ctrl(key), Hex1bModifiers.Control),
44
(
AspireTerminalKey
.Shift(key), Hex1bModifiers.Shift),
45
(
AspireTerminalKey
.Alt(key), Hex1bModifiers.Alt),
46
(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(key)), Hex1bModifiers.Control | Hex1bModifiers.Shift),
47
(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(key)), Hex1bModifiers.Control | Hex1bModifiers.Alt),
48
(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(key)), Hex1bModifiers.Alt | Hex1bModifiers.Shift),
49
(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(key))), Hex1bModifiers.Control | Hex1bModifiers.Alt | Hex1bModifiers.Shift)
66
Func<
AspireTerminalKey
,
AspireTerminalKey
>[] factories =
68
AspireTerminalKey
.Ctrl,
69
AspireTerminalKey
.Shift,
70
AspireTerminalKey
.Alt
75
var
allModifiers =
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(key)));
90
AspireTerminalKey
[] permutations =
92
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(key))),
93
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(
AspireTerminalKey
.Alt(key))),
94
AspireTerminalKey
.Alt(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(key))),
95
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(
AspireTerminalKey
.Ctrl(key))),
96
AspireTerminalKey
.Shift(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(key))),
97
AspireTerminalKey
.Shift(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Ctrl(key)))
100
foreach (
var
permutation in permutations)
112
var
first =
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(
AspireTerminalKey
.E));
113
var
second =
AspireTerminalKey
.Shift(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.E));
114
var
differentKey =
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(
AspireTerminalKey
.F));
115
var
differentModifiers =
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.E);
116
IEquatable<
AspireTerminalKey
> equatable = first;
126
foreach (
var
different in new[] { differentKey, differentModifiers, default })
142
var
first = default(
AspireTerminalKey
);
143
var
second = new AspireTerminalKey();
155
(
AspireTerminalKey
Key, string Expected)[] cases =
157
(
AspireTerminalKey
.E, "E"),
158
(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.E), "Ctrl+E"),
159
(
AspireTerminalKey
.Alt(
AspireTerminalKey
.E), "Alt+E"),
160
(
AspireTerminalKey
.Shift(
AspireTerminalKey
.E), "Shift+E"),
161
(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(
AspireTerminalKey
.E)), "Ctrl+Alt+E"),
162
(
AspireTerminalKey
.Shift(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.E)), "Ctrl+Shift+E"),
163
(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(
AspireTerminalKey
.E)), "Alt+Shift+E"),
164
(
AspireTerminalKey
.Shift(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.E))), "Ctrl+Alt+Shift+E"),
165
(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Delete), "Ctrl+Delete"),
166
(
AspireTerminalKey
.Shift(
AspireTerminalKey
.D1), "Shift+D1"),
167
(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Backtick), "Alt+Backtick"),
182
var
key = default(
AspireTerminalKey
);
190
Assert.Throws<ArgumentException>("key", () =>
AspireTerminalKey
.Ctrl(default));
191
Assert.Throws<ArgumentException>("key", () =>
AspireTerminalKey
.Shift(default));
192
Assert.Throws<ArgumentException>("key", () =>
AspireTerminalKey
.Alt(default));
195
private static (string Name,
AspireTerminalKey
Value, Hex1bKey NativeKey)[] GetNamedKeys() =>
197
("A",
AspireTerminalKey
.A, Hex1bKey.A),
198
("B",
AspireTerminalKey
.B, Hex1bKey.B),
199
("C",
AspireTerminalKey
.C, Hex1bKey.C),
200
("D",
AspireTerminalKey
.D, Hex1bKey.D),
201
("E",
AspireTerminalKey
.E, Hex1bKey.E),
202
("F",
AspireTerminalKey
.F, Hex1bKey.F),
203
("G",
AspireTerminalKey
.G, Hex1bKey.G),
204
("H",
AspireTerminalKey
.H, Hex1bKey.H),
205
("I",
AspireTerminalKey
.I, Hex1bKey.I),
206
("J",
AspireTerminalKey
.J, Hex1bKey.J),
207
("K",
AspireTerminalKey
.K, Hex1bKey.K),
208
("L",
AspireTerminalKey
.L, Hex1bKey.L),
209
("M",
AspireTerminalKey
.M, Hex1bKey.M),
210
("N",
AspireTerminalKey
.N, Hex1bKey.N),
211
("O",
AspireTerminalKey
.O, Hex1bKey.O),
212
("P",
AspireTerminalKey
.P, Hex1bKey.P),
213
("Q",
AspireTerminalKey
.Q, Hex1bKey.Q),
214
("R",
AspireTerminalKey
.R, Hex1bKey.R),
215
("S",
AspireTerminalKey
.S, Hex1bKey.S),
216
("T",
AspireTerminalKey
.T, Hex1bKey.T),
217
("U",
AspireTerminalKey
.U, Hex1bKey.U),
218
("V",
AspireTerminalKey
.V, Hex1bKey.V),
219
("W",
AspireTerminalKey
.W, Hex1bKey.W),
220
("X",
AspireTerminalKey
.X, Hex1bKey.X),
221
("Y",
AspireTerminalKey
.Y, Hex1bKey.Y),
222
("Z",
AspireTerminalKey
.Z, Hex1bKey.Z),
223
("D0",
AspireTerminalKey
.D0, Hex1bKey.D0),
224
("D1",
AspireTerminalKey
.D1, Hex1bKey.D1),
225
("D2",
AspireTerminalKey
.D2, Hex1bKey.D2),
226
("D3",
AspireTerminalKey
.D3, Hex1bKey.D3),
227
("D4",
AspireTerminalKey
.D4, Hex1bKey.D4),
228
("D5",
AspireTerminalKey
.D5, Hex1bKey.D5),
229
("D6",
AspireTerminalKey
.D6, Hex1bKey.D6),
230
("D7",
AspireTerminalKey
.D7, Hex1bKey.D7),
231
("D8",
AspireTerminalKey
.D8, Hex1bKey.D8),
232
("D9",
AspireTerminalKey
.D9, Hex1bKey.D9),
233
("F1",
AspireTerminalKey
.F1, Hex1bKey.F1),
234
("F2",
AspireTerminalKey
.F2, Hex1bKey.F2),
235
("F3",
AspireTerminalKey
.F3, Hex1bKey.F3),
236
("F4",
AspireTerminalKey
.F4, Hex1bKey.F4),
237
("F5",
AspireTerminalKey
.F5, Hex1bKey.F5),
238
("F6",
AspireTerminalKey
.F6, Hex1bKey.F6),
239
("F7",
AspireTerminalKey
.F7, Hex1bKey.F7),
240
("F8",
AspireTerminalKey
.F8, Hex1bKey.F8),
241
("F9",
AspireTerminalKey
.F9, Hex1bKey.F9),
242
("F10",
AspireTerminalKey
.F10, Hex1bKey.F10),
243
("F11",
AspireTerminalKey
.F11, Hex1bKey.F11),
244
("F12",
AspireTerminalKey
.F12, Hex1bKey.F12),
245
("Enter",
AspireTerminalKey
.Enter, Hex1bKey.Enter),
246
("Tab",
AspireTerminalKey
.Tab, Hex1bKey.Tab),
247
("Escape",
AspireTerminalKey
.Escape, Hex1bKey.Escape),
248
("Backspace",
AspireTerminalKey
.Backspace, Hex1bKey.Backspace),
249
("Delete",
AspireTerminalKey
.Delete, Hex1bKey.Delete),
250
("Insert",
AspireTerminalKey
.Insert, Hex1bKey.Insert),
251
("Space",
AspireTerminalKey
.Space, Hex1bKey.Spacebar),
252
("Up",
AspireTerminalKey
.Up, Hex1bKey.UpArrow),
253
("Down",
AspireTerminalKey
.Down, Hex1bKey.DownArrow),
254
("Left",
AspireTerminalKey
.Left, Hex1bKey.LeftArrow),
255
("Right",
AspireTerminalKey
.Right, Hex1bKey.RightArrow),
256
("Home",
AspireTerminalKey
.Home, Hex1bKey.Home),
257
("End",
AspireTerminalKey
.End, Hex1bKey.End),
258
("PageUp",
AspireTerminalKey
.PageUp, Hex1bKey.PageUp),
259
("PageDown",
AspireTerminalKey
.PageDown, Hex1bKey.PageDown),
260
("Comma",
AspireTerminalKey
.Comma, Hex1bKey.OemComma),
261
("Period",
AspireTerminalKey
.Period, Hex1bKey.OemPeriod),
262
("Minus",
AspireTerminalKey
.Minus, Hex1bKey.OemMinus),
263
("EqualsSign",
AspireTerminalKey
.EqualsSign, Hex1bKey.OemPlus),
264
("Slash",
AspireTerminalKey
.Slash, Hex1bKey.OemQuestion),
265
("Semicolon",
AspireTerminalKey
.Semicolon, Hex1bKey.Oem1),
266
("LeftBracket",
AspireTerminalKey
.LeftBracket, Hex1bKey.Oem4),
267
("Backslash",
AspireTerminalKey
.Backslash, Hex1bKey.Oem5),
268
("RightBracket",
AspireTerminalKey
.RightBracket, Hex1bKey.Oem6),
269
("Apostrophe",
AspireTerminalKey
.Apostrophe, Hex1bKey.Oem7),
270
("Backtick",
AspireTerminalKey
.Backtick, Hex1bKey.OemTilde)
Terminals\AspireTerminalTests.cs (11)
47
List<(
AspireTerminalKey
Key, CancellationToken Token)> calls = [];
58
var keys = typeof(
AspireTerminalKey
).GetProperties(BindingFlags.Public | BindingFlags.Static)
59
.Where(property => property.PropertyType == typeof(
AspireTerminalKey
))
60
.Select(property => Assert.IsType<
AspireTerminalKey
>(property.GetValue(null)))
64
AspireTerminalKey
.Ctrl(key),
65
AspireTerminalKey
.Shift(key),
66
AspireTerminalKey
.Alt(key),
67
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(
AspireTerminalKey
.Alt(key)))
71
foreach (
var
key in keys)
Terminals\Hex1bAspireTerminalTests.cs (10)
57
blockingInput = terminal.SendKeyAsync(
AspireTerminalKey
.Alt(
AspireTerminalKey
.E));
63
"key" => terminal.SendKeyAsync(
AspireTerminalKey
.Enter, cts.Token),
64
"modified-key" => terminal.SendKeyAsync(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.R), cts.Token),
65
"alt-letter" => terminal.SendKeyAsync(
AspireTerminalKey
.Alt(
AspireTerminalKey
.E), cts.Token),
120
() => terminal.SendKeyAsync(
AspireTerminalKey
.Enter, cts.Token)).DefaultTimeout();
411
await Assert.ThrowsAsync<InvalidOperationException>(() => terminal.SendKeyAsync(
AspireTerminalKey
.Enter));
469
await terminal.SendKeyAsync(
AspireTerminalKey
.Enter).DefaultTimeout();
Terminals\ResourceAspireTerminalTests.cs (1)
43
await terminal.SendKeyAsync(
AspireTerminalKey
.Enter).DefaultTimeout();
Terminals\TerminalKeyInputTests.cs (52)
72
await terminal.SendKeyAsync(
AspireTerminalKey
.Home).DefaultTimeout();
78
private static IEnumerable<(
AspireTerminalKey
Key, string Expected)> GetKeyInputs(bool applicationCursor)
80
var keys = typeof(
AspireTerminalKey
).GetProperties(BindingFlags.Public | BindingFlags.Static)
81
.Where(property => property.PropertyType == typeof(
AspireTerminalKey
))
82
.ToDictionary(property => property.Name, property => Assert.IsType<
AspireTerminalKey
>(property.GetValue(null)));
85
yield return (
AspireTerminalKey
.Up, cursorPrefix + "A");
92
yield return (
AspireTerminalKey
.Ctrl(keys[name]), "\x1b[1;5" + suffix);
93
yield return (
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(keys[name])), "\x1b[1;4" + suffix);
111
var
key = keys[letter.ToString()];
116
yield return (
AspireTerminalKey
.Shift(key), upper);
117
yield return (
AspireTerminalKey
.Ctrl(key), control);
118
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(key)), control);
119
yield return (
AspireTerminalKey
.Alt(key), "\x1b" + lower);
120
yield return (
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(key)), "\x1b" + upper);
121
yield return (
AspireTerminalKey
.Alt(
AspireTerminalKey
.Ctrl(key)), "\x1b" + control);
122
yield return (
AspireTerminalKey
.Alt(
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(key))), "\x1b" + control);
128
var
key = keys[$"D{digit}"];
130
yield return (
AspireTerminalKey
.Shift(key), shiftedDigits[digit].ToString());
142
yield return (
AspireTerminalKey
.Shift(keys[name]), shifted);
145
yield return (
AspireTerminalKey
.Shift(
AspireTerminalKey
.Tab), "\x1b[Z");
146
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Tab), "\t");
147
yield return (
AspireTerminalKey
.Shift(
AspireTerminalKey
.Enter), "\r");
148
yield return (
AspireTerminalKey
.Alt(
AspireTerminalKey
.Enter), "\x1b\r");
149
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Backspace), "\b");
150
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Space), "\0");
151
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.LeftBracket), "\x1b");
152
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(
AspireTerminalKey
.Left)), "\x1b[1;6D");
153
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Delete)), "\x1b[3;7~");
154
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Shift(
AspireTerminalKey
.F1)), "\x1b[1;6P");
155
yield return (
AspireTerminalKey
.Ctrl(
AspireTerminalKey
.Alt(
AspireTerminalKey
.Shift(
AspireTerminalKey
.F12))), "\x1b[24;8~");
Terminals\TerminalServiceTests.cs (1)
31
[InlineData(typeof(
AspireTerminalKey
))]
Utils\TestTerminalBackend.cs (2)
16
public Func<
AspireTerminalKey
, CancellationToken, Task>? OnSendKey { get; set; }
21
public Task SendKeyAsync(
AspireTerminalKey
key, CancellationToken cancellationToken = default)
WithTerminalTests.cs (1)
34
[InlineData(typeof(
AspireTerminalKey
))]