Example #1
0
        /// <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;
            }
        }
Example #2
0
        /// <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;
            }
        }