Exemplo n.º 1
0
 // Callback function for Keyboard hook.
 private static IntPtr HookCallback(
     int nCode, IntPtr wParam, IntPtr lParam)
 {
     if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
     {
         IntPtr active = GetForegroundWindow();
         if (active.Equals(self.MainWindowHandle))
         {
             currDoc = ThisAddIn.getCurrDocument();
             if (!typing)
             {
                 // Register place for starting typing.
                 typing   = true;
                 selStart = currDoc.Application.Selection.Start;
             }
             int vkCode = Marshal.ReadInt32(lParam);
             //Messenger.message(((Keys)vkCode).ToString());
             resetTimer();
         }
     }
     return(CallNextHookEx(_hookID, nCode, wParam, lParam));
 }
Exemplo n.º 2
0
 public static void message(String msg)
 {
     Word.Document doc = ThisAddIn.getCurrDocument();
     Word.Range    rng = doc.Range(0, 0);
     rng.Text = msg;
 }
Exemplo n.º 3
0
        // Callback function for Keyboard hook.
        private static IntPtr HookCallback(
            int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
            {
                IntPtr active = GetForegroundWindow();
                if (!(active.Equals(self.MainWindowHandle) || active.Equals(GUIManager.GUIHandle)))
                {
                    inputStatus = KEYBOARD_IDLE;
                    GUIManager.disappear();
                }

                #region KeyCheck
                else
                {
                    currDoc = ThisAddIn.getCurrDocument();
                    int vkCode = Marshal.ReadInt32(lParam);

                    if (active.Equals(GUIManager.GUIHandle))
                    {
                        hotkeyTimer.Start();

                        int maxCount = tempList.Count - wrappedPage * REFERENCE_PER_PAGE - 1;

                        if (vkCode == KeyboardMapping.Keys["1"])
                        {
                            selectedItem = Math.Min(0, maxCount);
                        }
                        else if (vkCode == KeyboardMapping.Keys["2"])
                        {
                            selectedItem = Math.Min(1, maxCount);
                        }
                        else if (vkCode == KeyboardMapping.Keys["3"])
                        {
                            selectedItem = Math.Min(2, maxCount);
                        }
                        else if (vkCode == KeyboardMapping.Keys["4"])
                        {
                            selectedItem = Math.Min(3, maxCount);
                        }
                        else if (vkCode == KeyboardMapping.Keys["5"])
                        {
                            selectedItem = Math.Min(4, maxCount);
                        }
                        else if (vkCode == KeyboardMapping.Keys["VK_LEFT"])
                        {
                            if (wrappedPage > 0)
                            {
                                wrappedPage -= 1;
                            }
                            selectedItem = 0;
                        }
                        else if (vkCode == KeyboardMapping.Keys["VK_RIGHT"])
                        {
                            if (wrappedPage < maxPage)
                            {
                                wrappedPage += 1;
                                selectedItem = 0;
                            }
                            else
                            {
                                selectedItem = maxCount;
                            }
                        }

                        GUIManager.chooseItem(selectedItem, wrappedPage);
                    }


                    if (inputStatus == KEYBOARD_IDLE)
                    {
                        // Register place for starting typing.
                        inputStatus = KEYBOARD_TYPING;
                        Messenger.message("User is Typing!");
                        selStart = currDoc.Application.Selection.End;

                        //start Timer
                        resetTimer();
                    }
                    else if (inputStatus == KEYBOARD_TYPING)
                    {
                        resetTimer();
                    }
                    else if (inputStatus == KEYBOARD_PREFLISTSHOWED)
                    {
                        if (checkHotKey(vkCode, extendSentenceHotKey, 1))
                        {
                            string extending = tempList[wrappedPage * REFERENCE_PER_PAGE + selectedItem].getContent();

                            sentenceLength.Add(extending.Length);
                            int tempPos = selEnd;

                            // Print string
                            currDoc.Application.Selection.Start = selEnd;
                            currDoc.Application.Selection.End   = selEnd;
                            currDoc.Application.Selection.TypeText(extending);

                            // Move cursor
                            selEnd   = tempPos + extending.Length;
                            selStart = tempPos;
                            rng      = currDoc.Range(selStart, selEnd);
                            rng.Select();

                            Messenger.message("Sentence Extended!");
                        }
                        else if (checkHotKey(vkCode, deleteSentenceHotKey, 4))
                        {
                            if (sentenceLength.Any())
                            {
                                int lastAdded = sentenceLength.Count - 1;
                                selStart = selEnd - sentenceLength[lastAdded];
                                rng      = currDoc.Range(selStart, selEnd);
                                rng.Delete();
                                sentenceLength.RemoveAt(lastAdded);

                                if (sentenceLength.Any())
                                {
                                    lastAdded = sentenceLength.Count - 1;
                                    selEnd    = selStart;
                                    selStart  = selEnd - sentenceLength[lastAdded];
                                    rng       = currDoc.Range(selStart, selEnd);
                                    rng.Select();
                                }
                                else
                                {
                                    selEnd = selStart;
                                    rng    = currDoc.Range(selStart, selEnd);
                                    rng.Select();
                                }

                                Messenger.message("Sentence Reverted!");
                            }
                            else
                            {
                                Messenger.message("Nothing extended yet!");
                            }
                        }
                        else if (vkCode == KeyboardMapping.Keys["SPACE"])
                        {
                            Messenger.message("KeyboardStatRestored!\n");

                            selStart = selEnd;
                            rng      = currDoc.Range(selStart, selEnd);
                            rng.Select();

                            GUIManager.disappear();
                            inputStatus    = KEYBOARD_TYPING;
                            sentenceLength = new List <int>();
                        }
                    }
                }
                #endregion
            }
            return(CallNextHookEx(_hookID, nCode, wParam, lParam));
        }