コード例 #1
0
ファイル: KeyTracker.cs プロジェクト: MasonFlint44/Copypasta
        private void OnKeyUp(object sender, IKeyboardHookEventArgs e)
        {
            var isModifier = false;

            if (_leftModifierMappings.TryGetValue(e.Key, out var modifier))
            {
                _leftModifiers = _leftModifiers ^ modifier;
                Modifiers      = _leftModifiers | _rightModifiers;
                isModifier     = true;
            }
            else if (_rightModifierMappings.TryGetValue(e.Key, out modifier))
            {
                _rightModifiers = _rightModifiers ^ modifier;
                Modifiers       = _leftModifiers | _rightModifiers;
                isModifier      = true;
            }
            _pressed.Remove(e.Key);

            var args = new KeyTrackerEventArgs
            {
                Handled    = e.Handled,
                Key        = e.Key,
                IsModifier = isModifier
            };

            KeyUnpressed?.Invoke(this, args);

            e.Handled = args.Handled;
        }
コード例 #2
0
 /// <summary>키보드 후킹 콜백</summary>
 private static int Callback(int nCode, int wParam, ref KeyData lParam)
 {
     if (0 <= nCode)
     {
         var next = true;
         if (wParam == WM_KEYDOWN)
         {
             KeyPressed?.Invoke((Keys)lParam.vkCode, ref next);
         }
         else if (wParam == WM_KEYUP)
         {
             KeyUnpressed?.Invoke((Keys)lParam.vkCode, ref next);
         }
         if (!next)
         {
             return(1);       //
         }
     }
     return(CallNextHookEx(hHook, nCode, wParam, ref lParam));
 }