Forge
csharp4405de34
1namespace CascadeIDE.Services.ChordNotation;
2
3/// <summary>
4/// Модификаторы одновременного аккорда (семантика, без привязки к строке hotkeys / платформе).
5/// </summary>
6[Flags]
7public enum ChordModifierKeys
8{
9 None = 0,
10 Control = 1,
11 Alt = 2,
12 Shift = 4,
13 /// <summary>Meta / Super / Win / ⌘ — единый флаг; рендер в UI может отличаться по ОС.</summary>
14 Meta = 8
15}
16
17/// <summary>
18/// Нормализованная последовательность шагов: аккорды (модификаторы+клавиша) и «голые» клавиши (CascadeChord, FMS-токены).
19/// </summary>
20public sealed record NormalizedKeySequence(IReadOnlyList<NormalizedSequenceStep> Steps)
21{
22 public static NormalizedKeySequence Empty { get; } = new(Array.Empty<NormalizedSequenceStep>());
23}
24
25public abstract record NormalizedSequenceStep;
26
27/// <summary>Одновременное нажатие: Ctrl+K, ⌘K, &lt;C-m&gt; после нормализации.</summary>
28public sealed record NormalizedChordStep(ChordModifierKeys Modifiers, string KeySymbol) : NormalizedSequenceStep;
29
30/// <summary>Шаг без модификаторов: буква аккорда, Esc, L1, …</summary>
31public sealed record NormalizedPlainKeyStep(string KeySymbol) : NormalizedSequenceStep;
32
View only · write via MCP/CIDE