namespace VoiceCat.App.Forms; /// /// Shows "Press any key…" and captures the next KeyDown as the PTT key. /// Press Escape to cancel without changing the key. /// public sealed class PttKeyCaptureDialog : Form { private readonly Label _label; public Keys CapturedKey { get; private set; } public PttKeyCaptureDialog(Keys current) { CapturedKey = current; _label = new Label { Text = $"Current PTT key: {current}\n\nPress any key to set a new PTT key,\nor press Escape to keep the current key.", AutoSize = false, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleCenter, TabIndex = 0, }; AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(340, 130); Controls.Add(_label); FormBorderStyle = FormBorderStyle.FixedDialog; KeyPreview = true; MaximizeBox = false; MinimizeBox = false; StartPosition = FormStartPosition.CenterParent; Text = "Set PTT key"; KeyDown += (_, e) => { e.SuppressKeyPress = true; if (e.KeyCode == Keys.Escape) { DialogResult = DialogResult.Cancel; } else { CapturedKey = e.KeyCode; DialogResult = DialogResult.OK; } Close(); }; } }