/// <summary> /// キーアップイベントハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void KeyHookKeyUp_Handler(object sender, KeyboardUtil.HookKeyEventArgs e) { //Ctrlキーの押下チェック if (e.vkCode == KeyboardUtilConstants.VirtualKeyCode.LeftControl) { IsCtrlPressed = false; } //このキーコードをアンプッシュ状態にする var keyDisp = KeyboardDisplay.KeyDisplayInfoCollection.Where(info => info.Key == e.vkCode).FirstOrDefault(); if (keyDisp == null) { //キーコードが存在しない場合何もしない } else { //このキーのオーバーレイを非表示にする keyDisp.Visible = Visibility.Hidden; } }
/// <summary> /// キーダウンイベントハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void KeyHookKeyDown_Handler(object sender, KeyboardUtil.HookKeyEventArgs e) { //Ctrlキーの押下チェック if (e.vkCode == KeyboardUtilConstants.VirtualKeyCode.LeftControl && !IsShiftPressed) { IsCtrlPressed = true; } string inputChar = null; //入力文字を取得する if (this.IsShiftPressed) { if (KeyboardUtilConstants.bigKeyNameDictionary.ContainsKey(e.vkCode)) { //シフトが押されている場合、大文字を取得 inputChar = KeyboardUtilConstants.bigKeyNameDictionary.GetKeyString(e.vkCode); } } else { if (KeyboardUtilConstants.bigKeyNameDictionary.ContainsKey(e.vkCode)) { //シフトが押されている場合、大文字を取得 inputChar = KeyboardUtilConstants.smallKeyNameDictionary.GetKeyString(e.vkCode); } } if (inputChar == null) { //入力文字が取得できなかった場合 return; } //このキーコードをプッシュ状態にする var keyDisp = KeyboardDisplay.KeyDisplayInfoCollection.Where(info => info.Key == e.vkCode).FirstOrDefault(); if (keyDisp == null) { //キーコードが存在しない場合何もしない } else { //特殊キー //全角/半角キー //ひらがな/かたかな //RightWin検証不可 //Appキー検証不可 //このキーのオーバーレイを表示する keyDisp.Visible = Visibility.Visible; } //テキストに入力を反映する switch (e.vkCode) { case KeyboardUtilConstants.VirtualKeyCode.Return: //Enterなら改行する this.inputHistory += Setting.Default.KEYHISTORY_RETURN_SYMBOL + Environment.NewLine; //次の文頭にセパレータは不要 this.IsInsertSeparatorSymbol = false; break; case KeyboardUtilConstants.VirtualKeyCode.Space: //Spaceなら空白を挿入 if (this.IsInsertSeparatorSymbol) { this.inputHistory += Setting.Default.KEYHISTORY_SEPARATOR + Setting.Default.KEYHISTORY_SPACE_SYMBOL; } else { //次の入力文字からセパレータを挿入する this.inputHistory += Setting.Default.KEYHISTORY_SPACE_SYMBOL; this.IsInsertSeparatorSymbol = true; } break; default: //キー入力を反映 if (this.IsInsertSeparatorSymbol) { //セパレータを挿入する this.inputHistory += Setting.Default.KEYHISTORY_SEPARATOR + inputChar; } else { //次の入力文字からセパレータを挿入する this.IsInsertSeparatorSymbol = true; this.inputHistory += inputChar; } break; } //クリアショートカットのチェック if (e.vkCode == KeyboardUtilConstants.VirtualKeyCode.Escape) { //入力クリア inputHistory = ""; return; } }