Mercurial > quickqr
view SetHotkey.cs @ 0:aca8706f4eec default tip
Initial commit
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Mon, 13 Oct 2014 21:28:19 -0500 |
parents | |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; /* * Copyright (c) 2014 Brad Greco <brad@bgreco.net> */ namespace QuickQR { public partial class SetHotkey : Form { private bool capturing = false; public KeyBinding keyBinding; public SetHotkey(KeyBinding keyBinding) { InitializeComponent(); this.keyBinding = new KeyBinding(); hotkeyLabel.Text = keyBinding.toString(); } private void captureButton_Click(object sender, EventArgs e) { capturing = true; hotkeyLabel.Text = "Waiting... (ESC to clear)"; keyBinding.Win = false; } private void SetHotkey_KeyDown(object sender, KeyEventArgs e) { if (capturing && e.KeyCode == Keys.Escape) { capturing = false; keyBinding.key = 0; keyBinding.keyChar = ""; hotkeyLabel.Text = keyBinding.comboString(); } else if (capturing && (e.KeyCode == Keys.LWin || e.KeyCode == Keys.RWin)) { keyBinding.Win = true; } else if (capturing && e.KeyCode != Keys.ShiftKey && e.KeyCode != Keys.Menu && e.KeyCode != Keys.Alt && e.KeyCode != Keys.ControlKey) { keyBinding.key = (int)e.KeyCode; keyBinding.keyChar = e.KeyCode.ToString(); keyBinding.Shift = e.Shift; keyBinding.Alt = e.Alt; keyBinding.Ctrl = e.Control; hotkeyLabel.Text = keyBinding.toString(); } } private void SetHotkey_KeyUp(object sender, KeyEventArgs e) { if (capturing && (e.KeyCode == Keys.LWin || e.KeyCode == Keys.RWin)) { keyBinding.Win = false; } else if (capturing && e.KeyCode != Keys.ShiftKey && e.KeyCode != Keys.Menu && e.KeyCode != Keys.Alt && e.KeyCode != Keys.ControlKey) { capturing = false; } okButton.Enabled = !capturing; } protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Escape && capturing) { keyBinding.key = 0; hotkeyLabel.Text = keyBinding.toString(); capturing = false; okButton.Enabled = true; return true; } return base.ProcessCmdKey(ref msg, keyData); } } }