csharp4405de34 | 1 | namespace CascadeIDE.Services.ChordNotation; |
| 2 | |
| 3 | /// <summary> |
| 4 | /// Модификаторы одновременного аккорда (семантика, без привязки к строке hotkeys / платформе). |
| 5 | /// </summary> |
| 6 | [Flags] |
| 7 | public 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> |
| 20 | public sealed record NormalizedKeySequence(IReadOnlyList<NormalizedSequenceStep> Steps) |
| 21 | { |
| 22 | public static NormalizedKeySequence Empty { get; } = new(Array.Empty<NormalizedSequenceStep>()); |
| 23 | } |
| 24 | |
| 25 | public abstract record NormalizedSequenceStep; |
| 26 | |
| 27 | /// <summary>Одновременное нажатие: Ctrl+K, ⌘K, <C-m> после нормализации.</summary> |
| 28 | public sealed record NormalizedChordStep(ChordModifierKeys Modifiers, string KeySymbol) : NormalizedSequenceStep; |
| 29 | |
| 30 | /// <summary>Шаг без модификаторов: буква аккорда, Esc, L1, …</summary> |
| 31 | public sealed record NormalizedPlainKeyStep(string KeySymbol) : NormalizedSequenceStep; |
| 32 | |
View only · write via MCP/CIDE