private void _kHookEventRaised(object sender, KeyboardHookEventArgs e)
 {
     if (e.Message == KeyboardMessage.WM_KEYDOWN || e.Message == KeyboardMessage.WM_SYSKEYDOWN)
     {
         var key = e.VkCode.KeyCodeToUnicodeString(e.ScanCode, _activeWindow, _keyboardEvents.Keys.Skip(_keyboardEvents.Count - 3).Take(3).ToArray());
         if (key == "RButton" || key == "LButton" || key == "MButton" || key == "XButton1" || key == "XButton2")
             return; // TODO: decide what need to do with mouse keys
         if (_keyboardEvents.ContainsKey(key))
             _keyboardEvents[key] += 1;
         else
             _keyboardEvents.Add(key, 1);
     }
 }
 private void OnEventRaised(KeyboardHookEventArgs e)
 {
     if (EventRaised != null)
         EventRaised(this, e);
 }