HowToDoIt - Емулатор на мишката

  • DSP (15)
  • Невронни мрежи (1)
  • Цифрова аудио обработка (14)
  • Вградени системи (4)
  • FPGA (1)
  • Програмиране (11)
  • C# (4)
  • C++(7)
  • Разни (6)
  • Разпознаване на реч (1)
  • Системи за контрол на версиите (4)
  • рубрика облак

    Открихте грешка на страницата?

    Маркирайте грешката и щракнете

    емулатор

    Емулатор на мишката

    Въведение

    Един ден, докато работех на стар компютър, се натъкнах на проблем. USB портът беше повреден и PS/2 мишката липсваше. Реших да напиша проста програма, която да замени липсващото ми устройство.

    Да се ​​заемем с работата

    Разработката на "виртуална мишка" е следната. Първо, трябва да изберете и зададете клавиши за съответните действия с мишката. След дълго обсъждане бяха избрани следните ключови команди:

    • преместете показалеца наляво(NUM4);
    • преместете показалеца надясно(NUM6);
    • преместете показалеца нагоре(NUM8);
    • преместете показалеца надолу(NUM5);
    • щракнете с левия бутон(NUM7);
    • щракнете с десния бутон върху(NUM9).

    Изходният код за тези задания е както следва:

    След това трябва да зададем клавиш (може да бъде комбинация от клавиши), който може да контролира включеното или изключеното състояние на "виртуалната мишка". В кода пишем следното:

    Следващите стъпки са:

    • създаване на функция за обработка на натиснати клавиши;
    • стартиране на "кука" от "главната" функция main();

    Каква е тази кука? Куката е механизъм, чрез който приложенията могатприхващане на събития като съобщения, действия с мишката и натискания на клавиши. Функциите, които прихващат събития от определен тип, са известни като процедури "кука". Hook процедура може да обработи събитие, което получава, и след това да го промени или отмени [1]. За да стартирате кука на клавиатурата, трябва да напишете функция за обратно извикване, която ще бъде извикана и обработена при щракване върху бутона. функция за обратно извикване:

    Тук функцията CheckKey(...) е манипулатор за команди, получени от клавиатурата. Съдържанието (скелетът) на тази функция е представено по-долу:

    Можете да стартирате куката от функцията "main":

    За повече информация относно функцията SetWindowsHookEx(…) вижте [2].

    За предпочитане е да използвате техника за откриване на стъпки, за да преместите курсора в зависимост от това дали бутон на клавиатурата е натиснат дълго или кратко. Следната функция е отговорна за тази идея:

    Тук speedMax е променлива, която определя най-голямата стъпка (40 пиксела) за преместване на курсора при продължително натискане на клавиша на клавиатурата. Стойността dt характеризира разликата във времето между две натискания на един и същ клавиш (продължителното натискане на клавиш се третира като многократно).