virtual public void ResetKeyboardLayout() { bool isReseted = false; foreach (Grid grdRow in this.Children) { foreach (KeyCap keyCap in grdRow.Children) { UpdateKeyCapLayout(keyCap, false); if (keyCap.LayoutRoot.Children[0] is ToggleButton) { if (!isReseted && keyCap.KeyCapType != KeyCapTypes.Function) { isReseted = (bool)(keyCap.LayoutRoot.Children[0] as ToggleButton).IsChecked; } (keyCap.LayoutRoot.Children[0] as ToggleButton).IsChecked = false; } } } if (isReseted) { KeyCapEventArgs args = new KeyCapEventArgs(); args.KeyCapType = KeyCapTypes.Esc; args.KeyCode = 41; //ESC코드 OnKeyboardLayoutReseted(args); } }
protected virtual void OnLanguageKeyCapTap(KeyCapEventArgs e) { if (LanguageKeyCapTap != null) { LanguageKeyCapTap(this, e); } }
protected virtual void OnFunctionKeyCapChecked(KeyCapEventArgs e) { if (FunctionKeyCapChecked != null) { FunctionKeyCapChecked(this, e); } }
protected virtual void OnKeyCapUnchecked(KeyCapEventArgs e) { if (KeyCapUnchecked != null) { KeyCapUnchecked(this, e); } }
protected virtual void OnSymbolKeyCapTap(KeyCapEventArgs e) { if (SymbolKeyCapTap != null) { SymbolKeyCapTap(this, e); } }
protected virtual void OnKeyCapReleased(KeyCapEventArgs e) { if (KeyCapReleased != null) { KeyCapReleased(this, e); } }
protected virtual void OnKeyboardLayoutReseted(KeyCapEventArgs e) { if (KeyboardLayoutReseted != null) { KeyboardLayoutReseted(this, e); } }
void keyCap_Tap(object sender, System.Windows.Input.GestureEventArgs e) { KeyCap keyCap = sender as KeyCap; ContentControl cc = keyCap.LayoutRoot.Children[0] as ContentControl; //데이터 셋팅 KeyCapEventArgs keyCapEventArgs = GetKeyCapEventArgs(keyCap); //키데이터 셋팅 if (keyCap.KeyCapType == KeyCapTypes.Symbol) { OnSymbolKeyCapTap(keyCapEventArgs); } else if (keyCap.KeyCapType == KeyCapTypes.Language) { OnLanguageKeyCapTap(keyCapEventArgs); } }
private KeyCapEventArgs GetKeyCapEventArgs(KeyCap keyCap) { KeyCapEventArgs keyCapEventArgs = new KeyCapEventArgs() { ImeKey = keyCap.KeyCapType == KeyCapTypes.Language ? this.LanguageKeyboard.OriginalKeyboardLayoutType : this.OriginalKeyboardLayoutType, KeyCapType = keyCap.KeyCapType, KeyCode = keyCap.KeyCode }; foreach (Grid grd in this.Children) { foreach (KeyCap kc in grd.Children) { if (kc.LayoutRoot.Children[0] is ToggleButton) { ToggleButton tb = kc.LayoutRoot.Children[0] as ToggleButton; switch (kc.KeyCapType) { case KeyCapTypes.Shift: keyCapEventArgs.IsShiftKey = (bool)tb.IsChecked; break; case KeyCapTypes.Control: keyCapEventArgs.IsControlKey = (bool)tb.IsChecked; break; case KeyCapTypes.Alt: keyCapEventArgs.IsAltKey = (bool)tb.IsChecked; break; case KeyCapTypes.Window: keyCapEventArgs.IsWindowKey = (bool)tb.IsChecked; break; default: break; } } } } return(keyCapEventArgs); }
void keyCap_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { KeyCap keyCap = sender as KeyCap; ContentControl cc = keyCap.LayoutRoot.Children[0] as ContentControl; //데이터 셋팅 KeyCapEventArgs keyCapEventArgs = GetKeyCapEventArgs(keyCap); //릴리즈 데이터 keyCapEventArgs.KeyCode = 0; //키데이터 셋팅 if (cc is Button) { OnKeyCapReleased(keyCapEventArgs); } else if (cc is ToggleButton && (cc as ToggleButton).IsChecked == false) { if (keyCap.KeyCapType == KeyCapTypes.Function) { OnFunctionKeyCapUnchecked(keyCapEventArgs); } else { OnKeyCapUnchecked(keyCapEventArgs); if (keyCapEventArgs.KeyCapType == KeyCapTypes.Shift) { foreach (Grid grd in this.Children) { foreach (KeyCap kc in grd.Children) { if (kc.KeyCapType == KeyCapTypes.Normal || kc.KeyCapType == KeyCapTypes.Backspace) { UpdateKeyCapLayout(kc, false); } } } } } } }