Пример #1
0
        public static void Run(FingerList Fingers)
        {
            List <Finger> sortedFingers = Fingers.OrderBy(Finger => Finger.TimeVisible).ToList();

            sortedFingers.Reverse();

            List <TouchContact>     updatedContacts = new List <TouchContact>();
            List <PointerTouchInfo> toInject        = new List <PointerTouchInfo>();

            for (int i = 0; i <= sortedFingers.Count - 1; i++)
            {
                int   ID   = sortedFingers[i].Id;
                int   xPos = (int)(sortedFingers[i].TipPosition.x * Properties.Settings.Default.TouchCursorSpeed) + 1000;  //1000
                int   yPos = -(int)(sortedFingers[i].TipPosition.y * Properties.Settings.Default.TouchCursorSpeed) + 3300; // speed 15: add 2500
                float zPos = sortedFingers[i].TipPosition.z;

                updatedContacts.Add(new TouchContact(xPos, yPos, zPos, ID));

                int foundIndex = contacts.FindIndex(TouchContact => TouchContact.ID == updatedContacts[i].ID);
                if (foundIndex >= 0) //a matching ID was found
                {
                    //transfer the data to the updated contacts
                    updatedContacts[i].Holding      = contacts[foundIndex].Holding;
                    updatedContacts[i].JustPressed  = contacts[foundIndex].JustPressed;
                    updatedContacts[i].JustReleased = contacts[foundIndex].JustReleased;
                }
            }
            // sort the contacts by ID so they keep consistent indexes over time
            //contacts = updatedContacts.OrderBy(TouchContact => TouchContact.ID).ToList();
            contacts = updatedContacts;


            for (int i = 0; i <= sortedFingers.Count - 1; i++)
            {
                PointerTouchInfo touchPoint = MakePointerTouchInfo(contacts[i].PosX, contacts[i].PosY, (uint)contacts[i].ID);

                if (i <= injector.Length - 1)
                {
                    //injector[i].PointerInfo.PointerId = (uint)contacts[i].ID;

                    if (contacts[i].PosZ < Properties.Settings.Default.TouchThreshold && contacts[i].Holding == false) // pressed
                    {
                        contacts[i].JustPressed = true;
                        contacts[i].Holding     = true;
                    }

                    if (contacts[i].PosZ > Properties.Settings.Default.TouchThreshold && contacts[i].Holding == true) // released
                    {
                        contacts[i].JustReleased = true;
                        contacts[i].Holding      = false;
                    }


                    if (contacts[i].JustPressed)
                    {
                        contacts[i].JustPressed             = false;
                        touchPoint.PointerInfo.PointerFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                    }
                    else if (contacts[i].JustReleased)
                    {
                        contacts[i].JustReleased            = false;
                        touchPoint.PointerInfo.PointerFlags = PointerFlags.UP | PointerFlags.INRANGE;
                    }
                    else if (contacts[i].Holding)
                    {
                        touchPoint.PointerInfo.PointerFlags = PointerFlags.UPDATE | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                    }
                    else
                    {
                        touchPoint.PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UPDATE; //set to "hover mode"
                    }

                    toInject.Add(touchPoint);
                }
            }

            //injector.Length
            bool s = TouchInjector.InjectTouchInput(toInject.Count, toInject.ToArray());


            SettingsWindow.debugText[2] = "contacts: ";
            foreach (TouchContact c in contacts)
            {
                SettingsWindow.debugText[2] += " " + c.ID; //  + " " + c.Holding
            }
            //List<TouchContact> newContacts = new List<TouchContact>();

            ////List<PointerTouchInfo> toFire = new List<PointerTouchInfo>();

            //foreach (Finger finger in Fingers)
            //{

            //    int xPos = (int)(finger.TipPosition.x * multFactor) + 1000; // speed 15: 1000
            //    int yPos = -(int)(finger.TipPosition.y * multFactor) + 2500; // speed 15: add 2500
            //    float zPos = finger.TipPosition.z;

            //    //injectorList.Add(MakePointerTouchInfo(xPos, yPos, (uint)finger.Id));
            //    newContacts.Add(new TouchContact(xPos, yPos, zPos, finger.Id));
            //}

            ////injector = injectorList.ToArray();
            ////injectorList.Clear();


            //List<TouchContact> updatedContacts = new List<TouchContact>();
            //int foundIndex;

            ////todo: combine with foreach finger loop
            ////newContacts.Count - 1
            //for (int i = 0; i <= newContacts.Count - 1; i++)
            //{
            //    updatedContacts.Add(newContacts[i]);

            //    foundIndex = contacts.FindIndex(TouchContact => TouchContact.ID == updatedContacts[i].ID);
            //    if (foundIndex >= 0) //a matching ID was found
            //    {
            //        //transfer the data to the updated contacts
            //        updatedContacts[i].Holding = contacts[foundIndex].Holding;
            //        updatedContacts[i].JustPressed = contacts[foundIndex].JustPressed;
            //        updatedContacts[i].JustReleased = contacts[foundIndex].JustReleased;
            //    }
            //}

            //contacts = updatedContacts;


            ////contacts.Count - 1
            //for (int i = 0; i <= Fingers.Count - 1; i++)
            //{
            //    if (i <= injector.Length - 1)
            //    {
            //        //injector[i].PointerInfo.PointerId = (uint)contacts[i].ID;

            //        if (contacts[i].PosZ < touchThreshold && contacts[i].Holding == false) // pressed
            //        {
            //            contacts[i].JustPressed = true;
            //            contacts[i].Holding = true;
            //        }

            //        if (contacts[i].PosZ > touchThreshold && contacts[i].Holding == true) // released
            //        {
            //            contacts[i].JustReleased = true;
            //            contacts[i].Holding = false;
            //        }


            //        if (contacts[i].JustPressed)
            //        {
            //            contacts[i].JustPressed = false;
            //            injector[i].PointerInfo.PointerFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;
            //        }
            //        else if (contacts[i].JustReleased)
            //        {
            //            contacts[i].JustReleased = false;
            //            injector[i].PointerInfo.PointerFlags = PointerFlags.UP | PointerFlags.INRANGE;
            //        }
            //        else if (contacts[i].Holding)
            //        {
            //            injector[i].PointerInfo.PointerFlags = PointerFlags.UPDATE | PointerFlags.INRANGE | PointerFlags.INCONTACT;
            //        }
            //        else
            //        {
            //            injector[i].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UPDATE; //set to "hover mode"
            //        }

            //        injector[i].PointerInfo.PtPixelLocation.X = (int)(Fingers[i].TipPosition.x * multFactor) + 800; // speed 15: 1000
            //        injector[i].PointerInfo.PtPixelLocation.Y = -(int)(Fingers[i].TipPosition.y * multFactor) + 1800; // speed 15: add 2500
            //    }

            //}

            ////Form1.debugText[3] = "Fingers:  ";
            ////foreach (Finger f in Fingers)
            ////    Form1.debugText[3] += " " + f.Id;

            ////if (released)
            ////    Form1.debugText[3] += "r";

            ////released = false;


            ////injector.Length
            //bool s = TouchInjector.InjectTouchInput(Fingers.Count, injector);

            ////Form1.debugText[1] = "Injector length: " + injector.Length + "  contacts count: " + contacts.Count;



            //Form1.debugText[2] = "contacts: ";
            //foreach (TouchContact c in contacts)
            //    Form1.debugText[2] += " " + c.ID + " " + c.Holding;

            ////Form1.debugText[3] = "";

            ////Form1.debugText[4] = "" + s;
        }
Пример #2
0
        public static void RunMouse(FingerList Fingers)
        {
            List <Finger> sortedFingers = Fingers.OrderBy(Finger => Finger.TimeVisible).ToList();

            sortedFingers.Reverse();

            float speed = Properties.Settings.Default.MouseCursorSpeed;
            int   max   = 1;

            int numFingers = sortedFingers.Count;

            if (sortedFingers.Count >= max)
            {
                numFingers = max;
            }

            //numFingers - 1
            for (int i = 0; i <= numFingers - 1; i++)
            {
                if (sortedFingers[i].TipPosition.z < Properties.Settings.Default.TouchThreshold)
                {
                    isTouching[i] = true;
                }
                else
                {
                    isTouching[i] = false;
                }

                if (isTouching[i] == true && Holding[i] == false) // pressed
                {
                    JustPressed[i] = true;
                    Holding[i]     = true;
                }

                if (isTouching[i] == false && Holding[i] == true) // released
                {
                    JustReleased[i] = true;
                    Holding[i]      = false;
                }


                if (JustPressed[i])
                {
                    JustPressed[i] = false;
                    //MouseSimulator.ClickLeftMouseButton();
                    MouseSimulator.LeftMouseDown();
                }

                if (JustReleased[i])
                {
                    JustReleased[i] = false;
                    MouseSimulator.LeftMouseUp();
                }

                if (sortedFingers.Count > 1 && sortedFingers[1].TipPosition.z < Properties.Settings.Default.TouchThreshold)
                {
                    if (rightClickTimer <= 0)
                    {
                        MouseSimulator.ClickRightMouseButton();
                        rightClickTimer = 50;
                    }
                }
                if (rightClickTimer > 0)
                {
                    rightClickTimer--;
                }

                //if (Holding[i] == false)

                injector[i].PointerInfo.PtPixelLocation.X = (int)(sortedFingers[i].TipPosition.x * Properties.Settings.Default.TouchCursorSpeed) + 1000;  // 1000, 900
                injector[i].PointerInfo.PtPixelLocation.Y = -(int)(sortedFingers[i].TipPosition.y * Properties.Settings.Default.TouchCursorSpeed) + 2500; // speed 15: add 2500, 700
            }

            MouseSimulator.getCoords();

            if (sortedFingers[0].TipPosition.z < Properties.Settings.Default.TouchThreshold + 30)
            {
                MouseSimulator.MoveCursor(MouseSimulator.mousePos.X + (int)(sortedFingers[0].TipVelocity.x * speed), MouseSimulator.mousePos.Y - (int)(sortedFingers[0].TipVelocity.y * speed));
            }

            SettingsWindow.debugText[1] = "Screen Coords:\n" + "X:" + MouseSimulator.mousePos.X + "  Y: " + MouseSimulator.mousePos.Y;

            SettingsWindow.debugText[2] = "RCT: " + rightClickTimer;

            SettingsWindow.debugText[4] = "Finger IDs: ";
            foreach (Finger f in sortedFingers)
            {
                SettingsWindow.debugText[4] += " " + f.Id;
            }
        }
Пример #3
0
        //FingerList
        public static void RunOne(FingerList Fingers)
        {
            List <Finger> sortedFingers = Fingers.OrderBy(Finger => Finger.TimeVisible).ToList();

            sortedFingers.Reverse();
            //List<Finger> sortedFingers = Fingers.ToList(); //temp

            int   max = 1;
            float X, Y = 0;
            int   speed = Properties.Settings.Default.TouchCursorSpeed;

            int numFingers = sortedFingers.Count;

            if (sortedFingers.Count >= max)
            {
                numFingers = max;
            }

            //numFingers - 1
            for (int i = 0; i <= numFingers - 1; i++)
            {
                if (sortedFingers[i].TipPosition.z < Properties.Settings.Default.TouchThreshold)
                {
                    isTouching[i] = true;
                }
                else
                {
                    isTouching[i] = false;
                }

                if (isTouching[i] == true && Holding[i] == false) // pressed
                {
                    JustPressed[i] = true;
                    Holding[i]     = true;
                }

                if (isTouching[i] == false && Holding[i] == true) // released
                {
                    JustReleased[i] = true;
                    Holding[i]      = false;
                }

                if (JustPressed[i])
                {
                    JustPressed[i] = false;
                    injector[i].PointerInfo.PointerFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                    //MouseSimulator.ClickLeftMouseButton();
                    bool s0 = TouchInjector.InjectTouchInput(numFingers, injector);
                    injector[i].PointerInfo.PointerFlags = PointerFlags.UPDATE | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                }

                if (JustReleased[i])
                {
                    JustReleased[i] = false;
                    injector[i].PointerInfo.PointerFlags = PointerFlags.UP | PointerFlags.INRANGE;
                    bool s1 = TouchInjector.InjectTouchInput(numFingers, injector);
                }

                if (Holding[i] == false)
                {
                    injector[i].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UPDATE; //set to "hover mode"
                }
                X = sortedFingers[i].StabilizedTipPosition.x;
                Y = sortedFingers[i].StabilizedTipPosition.y;

                //X = sortedFingers[i].TipPosition.x;
                //Y = sortedFingers[i].TipPosition.y;

                //if (sortedFingers[i].TipVelocity.z > -20)

                injector[i].PointerInfo.PtPixelLocation.X = (int)(X * speed) + 1000;  // 1000
                injector[i].PointerInfo.PtPixelLocation.Y = -(int)(Y * speed) + 2700; // speed 15: add 2500
            }

            bool s = TouchInjector.InjectTouchInput(numFingers, injector);

            SettingsWindow.debugText[1] = "Screen Coords:\n" + "X: " + injector[0].PointerInfo.PtPixelLocation.X + "Y: " + injector[0].PointerInfo.PtPixelLocation.Y;

            SettingsWindow.debugText[2] = "Z Velocity: " + sortedFingers[0].TipVelocity.z;

            SettingsWindow.debugText[4] = "Finger IDs:  ";
            foreach (Finger f in sortedFingers)
            {
                SettingsWindow.debugText[4] += " " + f.Id;
            }
        }
Пример #4
0
        public static void RunTwo(FingerList Fingers)
        {
            List <Finger> sortedFingers = Fingers.OrderBy(Finger => Finger.TimeVisible).ToList();

            sortedFingers.Reverse();
            //List<Finger> sortedFingers = Fingers.ToList(); //temp

            int max = 2;

            int numFingers = sortedFingers.Count;

            if (sortedFingers.Count >= max)
            {
                numFingers = max;
            }

            //numFingers - 1
            for (int i = 0; i <= numFingers - 1; i++)
            {
                if (sortedFingers[i].TipPosition.z < Properties.Settings.Default.TouchThreshold)
                {
                    isTouching[i] = true;
                }
                else
                {
                    isTouching[i] = false;
                }

                if (isTouching[i] == true && Holding[i] == false) // pressed
                {
                    JustPressed[i] = true;
                    Holding[i]     = true;
                }

                if (isTouching[i] == false && Holding[i] == true) // released
                {
                    JustReleased[i] = true;
                    Holding[i]      = false;
                }


                if (JustPressed[i])
                {
                    JustPressed[i] = false;
                    injector[i].PointerInfo.PointerFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                    //MouseSimulator.ClickLeftMouseButton();
                    bool s0 = TouchInjector.InjectTouchInput(numFingers, injector);
                    injector[i].PointerInfo.PointerFlags = PointerFlags.UPDATE | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                }

                if (JustReleased[i])
                {
                    JustReleased[i] = false;
                    injector[i].PointerInfo.PointerFlags = PointerFlags.UP | PointerFlags.INRANGE;
                    bool s1 = TouchInjector.InjectTouchInput(numFingers, injector);
                }

                if (Holding[i] == false)
                {
                    injector[i].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UPDATE; //set to "hover mode"
                }
                //* Properties.Settings.Default.TouchCursorSpeed

                injector[i].PointerInfo.PtPixelLocation.X = (int)(sortedFingers[i].TipPosition.x * 10) + 1000;  // 1000, 900
                injector[i].PointerInfo.PtPixelLocation.Y = -(int)(sortedFingers[i].TipPosition.y * 10) + 1500; // speed 15: add 2500, 700
            }

            //Fingers.Count
            bool s = TouchInjector.InjectTouchInput(numFingers, injector);

            //MouseSimulator.MoveCursor(injector[0].PointerInfo.PtPixelLocation.X, injector[0].PointerInfo.PtPixelLocation.Y);
            //MouseSimulator.MoveCursor(1920 / 2, 1180 / 2);


            //MouseSimulator.MoveCursor(MouseSimulator.mousePos.X + (int)(sortedFingers[0].TipVelocity.x * 0.5), MouseSimulator.mousePos.Y - (int)(sortedFingers[0].TipVelocity.y * 0.5));

            SettingsWindow.debugText[4] = "Finger IDs: ";
            foreach (Finger f in sortedFingers)
            {
                SettingsWindow.debugText[4] += " " + f.Id;
            }



            //List<PointerTouchInfo> toInject = new List<PointerTouchInfo>();

            //int numFingers = Fingers.Count;
            //if (Fingers.Count > 1)
            //    numFingers = 1;

            ////Fingers.Count - 1
            //for (int i = 0; i <= numFingers; i++)
            //{
            //    int ID = Fingers[i].Id;
            //    int xPos = (int)(Fingers[i].TipPosition.x * multFactor) + 1000;
            //    int yPos = -(int)(Fingers[i].TipPosition.y * multFactor) + 2500; // speed 15: add 2500

            //    PointerTouchInfo touchPoint = MakePointerTouchInfo(xPos, yPos, (uint)ID);

            //    if (Fingers[i].TipPosition.z < touchThreshold)
            //        isTouching[i] = true;
            //    else
            //        isTouching[i] = false;

            //    if (isTouching[i] == true && Holding[i] == false) // pressed
            //    {
            //        JustPressed[i] = true;
            //        Holding[i] = true;
            //    }

            //    if (isTouching[i] == false && Holding[i] == true) // released
            //    {
            //        JustReleased[i] = true;
            //        Holding[i] = false;
            //    }


            //    if (JustPressed[i])
            //    {
            //        JustPressed[i] = false;
            //        touchPoint.PointerInfo.PointerFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;
            //    }
            //    else if (JustReleased[i])
            //    {
            //        JustReleased[i] = false;
            //        touchPoint.PointerInfo.PointerFlags = PointerFlags.UP | PointerFlags.INRANGE;
            //    }
            //    else if (Holding[i])
            //        touchPoint.PointerInfo.PointerFlags = PointerFlags.UPDATE | PointerFlags.INRANGE | PointerFlags.INCONTACT;
            //    else
            //        touchPoint.PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UPDATE; //set to "hover mode"

            //    toInject.Add(touchPoint);
            //}
            //bool s = TouchInjector.InjectTouchInput(toInject.Count, toInject.ToArray());
        }