예제 #1
0
        /// <summary>
        /// This is the callback method that is called whenever a low level keyboard event is triggered.
        /// We use it to call our individual custom events.
        /// </summary>
        private IntPtr KeyboardHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                var lParamStruct = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
                var e            = new KeyboardHookEventArgs(lParamStruct);
                switch ((KeyboardMessages)wParam)
                {
                case KeyboardMessages.WmKeydown:
                    e.KeyboardEventName = KeyboardEventNames.KeyDown;
                    OnKeyDown(e);
                    break;

                case KeyboardMessages.WmKeyup:
                    e.KeyboardEventName = KeyboardEventNames.KeyUp;
                    OnKeyUp(e);
                    break;

                case KeyboardMessages.WmSyskeydown:
                    e.KeyboardEventName = KeyboardEventNames.SystemKeyDown;
                    OnKeyDown(e);
                    break;

                case KeyboardMessages.WmSyskeyup:
                    e.KeyboardEventName = KeyboardEventNames.SystemKeyUp;
                    OnKeyUp(e);
                    break;
                }
            }
            return(NativeMethods.CallNextHookEx(hookId, nCode, wParam, lParam));
        }
예제 #2
0
 /// <summary>
 /// This is the callback method that is called whenever a low level keyboard event is triggered.
 /// We use it to call our individual custom events.
 /// </summary>
 private IntPtr KeyboardHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         var lParamStruct = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
         var e = new KeyboardHookEventArgs(lParamStruct);
         switch ((KeyboardMessages)wParam)
         {
             case KeyboardMessages.WmKeydown:
                 e.KeyboardEventName = KeyboardEventNames.KeyDown;
                 OnKeyDown(e);
                 break;
             case KeyboardMessages.WmKeyup:
                 e.KeyboardEventName = KeyboardEventNames.KeyUp;
                 OnKeyUp(e);
                 break;
             case KeyboardMessages.WmSyskeydown:
                 e.KeyboardEventName = KeyboardEventNames.SystemKeyDown;
                 OnKeyDown(e);
                 break;
             case KeyboardMessages.WmSyskeyup:
                 e.KeyboardEventName = KeyboardEventNames.SystemKeyUp;
                 OnKeyUp(e);
                 break;
         }
     }
     return NativeMethods.CallNextHookEx(hookId, nCode, wParam, lParam);
 }
예제 #3
0
 private void OnKeyEvent(KeyboardHookEventArgs e)
 {
     if (KeyEvent != null)
     {
         KeyEvent(this, e);
     }
 }
예제 #4
0
 private void OnKeyUp(KeyboardHookEventArgs e)
 {
     if (KeyUp != null)
     {
         KeyUp(this, e);
     }
     OnKeyEvent(e);
 }
예제 #5
0
 private void OnKeyDown(KeyboardHookEventArgs e)
 {
     if (KeyDown != null)
     {
         KeyDown(this, e);
     }
     OnKeyEvent(e);
 }
예제 #6
0
 private void HandleKey(KeyboardHookEventArgs e)
 {
     if (e.KeyboardEventName == KeyboardEventNames.KeyUp || e.KeyboardEventName == KeyboardEventNames.KeyDown)
     {
         // check if the key is mapped ( LEDBlinkyInputMap.xml is parsed into KeyCodes[] already )
        int index = Array.IndexOf(KeyCodes, ((WindowsVirtualKey)e.VirtualKeyCode).ToString());
        if ( index >= 0)
        {
            using (var client = new MailslotClient("LagomLitenLedMailSlot"))
            {
                // change so it tries to send, if server is down it will fail as it is now
                client.SendMessage(index + "," + e.KeyboardEventName.ToString() );
            }
        }
     }
 }
예제 #7
0
 void KHookKeyEvent(object sender, KeyboardHookEventArgs e)
 {
     HandleKey(e);
 }
예제 #8
0
 private void OnKeyUp(KeyboardHookEventArgs e)
 {
     if (KeyUp != null)
         KeyUp(this, e);
     OnKeyEvent(e);
 }
예제 #9
0
 private void OnKeyEvent(KeyboardHookEventArgs e)
 {
     if (KeyEvent != null)
         KeyEvent(this, e);
 }
예제 #10
0
 private void OnKeyDown(KeyboardHookEventArgs e)
 {
     if (KeyDown != null)
         KeyDown(this, e);
     OnKeyEvent(e);
 }
예제 #11
0
 private void WriteKey(KeyboardHookEventArgs e)
 {
     if (e.Char == '\0')
     {
         KeyboardWriter.Write(e.KeyString);
     }
     else
     {
         if (e.KeyboardEventName == KeyboardEventNames.KeyUp)
             KeyboardWriter.Write(e.KeyString);
     }
 }