private void OnKeyboardEvent(KeyboardEventArgs e) { if (KeyboardEvent != null) { KeyboardEvent(this, e); } }
public static bool IsPrintable(KeyboardEventArgs evtData) { if (evtData.Alt || evtData.Control || evtData.Win) { return false; } var keyCode = evtData.KeyCode; if (keyCode >= Keys.D0 && keyCode <= Keys.Z) { return true; } if (keyCode >= Keys.Oem1 && keyCode <= Keys.OemBackslash) { return true; } return false; }
void kbdHook_KeyboardEvent(object sender, KeyboardEventArgs e) { if (currentTextBox != null) { var vk = e.KeyCode; if (vk != Keys.LMenu && vk != Keys.RMenu && vk != Keys.LWin && vk != Keys.RWin && vk != Keys.LShiftKey && vk != Keys.RShiftKey && vk != Keys.LControlKey && vk != Keys.RControlKey) { e.Handled = true; } Invoke((MethodInvoker)delegate { currentTextBox.Text = e.ToString(); }); currentHotkey = e; } }
void ResetCurrentHotkey(bool clear) { switch (currentHotkeyType) { case HotKeyType.Switch: currentHotkey = clear ? null : settings.SwitchHotkey; break; case HotKeyType.Convert: currentHotkey = clear ? null : settings.ConvertSelectionHotkey; break; case HotKeyType.SwitchLayout: currentHotkey = clear ? null : settings.SwitchLayoutHotkey; break; default: currentHotkey = null; break; } SetCurrentHotkeyInputText(currentHotkey == null ? "None" : ReplaceCtrls(currentHotkey.ToString())); }
void kbdHook_KeyboardEvent(object sender, KeyboardEventArgs e) { if (currentHotkeyType != HotKeyType.None) { var vk = e.KeyCode; if (vk == Keys.Escape || vk == Keys.Back) { e.Handled = true; ResetCurrentHotkey(vk == Keys.Back); return; } if (vk != Keys.LMenu && vk != Keys.RMenu && vk != Keys.LWin && vk != Keys.RWin && vk != Keys.LShiftKey && vk != Keys.RShiftKey && vk != Keys.LControlKey && vk != Keys.RControlKey) { e.Handled = true; } SetCurrentHotkeyInputText(e.ToString()); currentHotkey = e; } }
public static Keys[] ParseKeys(KeyboardEventArgs keyArgs) { List <Keys> keys = new List <Keys>(); if (keyArgs.Alt) { keys.Add(Keys.Alt); } if (keyArgs.Control) { keys.Add(Keys.Control); } if (keyArgs.Shift) { keys.Add(Keys.Shift); } if (keyArgs.Win) { keys.Add(Keys.LWin); } keys.Add(keyArgs.KeyCode); return(keys.ToArray()); }
// returns true if event is handled private bool ProcessKeyPressInt(int nCode, IntPtr wParam, IntPtr lParam) { try { if (nCode < 0) return false; Func<Keys, bool> KeyPressed = LowLevelAdapter.KeyPressed; switch (wParam.ToInt32()) { case LowLevelAdapter.WM_KEYDOWN: case LowLevelAdapter.WM_SYSKEYDOWN: var keybdinput = (KEYBDINPUT)Marshal.PtrToStructure(lParam, typeof(KEYBDINPUT)); var keyData = (Keys)keybdinput.Vk; keyData |= KeyPressed(Keys.ControlKey) ? Keys.Control : 0; keyData |= KeyPressed(Keys.Menu) ? Keys.Alt : 0; keyData |= KeyPressed(Keys.ShiftKey) ? Keys.Shift : 0; var winPressed = KeyPressed(Keys.LWin) || KeyPressed(Keys.RWin); var args = new KeyboardEventArgs(keyData, winPressed); OnKeyboardEvent(args); return args.Handled; } } catch { } return false; }
void ResetCurrentHotkey() { switch (currentHotkeyType) { case HotKeyType.Switch: currentHotkey = settings.SwitchHotkey; break; case HotKeyType.Convert: currentHotkey = settings.ConvertSelectionHotkey; break; default: currentHotkey = null; break; } SetCurrentHotkeyInputText(currentHotkey == null ? "" : currentHotkey.ToString()); }
void kbdHook_KeyboardEvent(object sender, KeyboardEventArgs e) { if (currentHotkeyType != HotKeyType.None) { var vk = e.KeyCode; if (vk == Keys.Escape) { e.Handled = true; ResetCurrentHotkey(); return; } if (vk != Keys.LMenu && vk != Keys.RMenu && vk != Keys.LWin && vk != Keys.RWin && vk != Keys.LShiftKey && vk != Keys.RShiftKey && vk != Keys.LControlKey && vk != Keys.RControlKey) { e.Handled = true; } SetCurrentHotkeyInputText(e.ToString()); currentHotkey = e; } }
private void AddToCurrentWord(KeyboardEventArgs data) { currentWord.Add(data); }
// evtData.Handled must be set to true if the key is recognized as hotkey and doesn't need further processing private void ProcessKeyPress(object sender, KeyboardEventArgs evtData) { try { OnKeyPress(evtData); } catch (Exception ex) { OnError(ex); } }
private void OnKeyPress(KeyboardEventArgs evtData) { var vkCode = evtData.KeyCode; if (evtData.Equals(SwitchHotkey)) { ConvertLast(); evtData.Handled = true; return; } if (evtData.Equals(ConvertSelectionHotkey)) { ConvertSelection(); } if (this.HaveTrackingKeys(evtData)) return; var notModified = !this.HaveModifiers(evtData); if (vkCode == Keys.Space && notModified) { AddToCurrentWord(evtData); return; } if (vkCode == Keys.Back && notModified) { RemoveLast(); return; } if (IsPrintable(evtData)) { if (GetPreviousVkCode() == Keys.Space) { BeginNewWord(); } AddToCurrentWord(evtData); return; } // default: BeginNewWord(); }
private bool HaveTrackingKeys(KeyboardEventArgs evtData) { var vkCode = evtData.KeyCode; return evtData.KeyCode == Keys.ControlKey || vkCode == Keys.LControlKey || vkCode == Keys.RControlKey || // yes, don't interrupt the tracking on PrtSc! vkCode == Keys.PrintScreen || vkCode == Keys.ShiftKey || vkCode == Keys.RShiftKey || vkCode == Keys.LShiftKey || vkCode == Keys.NumLock || vkCode == Keys.Scroll; }
private bool HaveModifiers(KeyboardEventArgs evtData) { var ctrl = evtData.Control; var alt = evtData.Alt; var win = evtData.Win; return ctrl || alt || win; }