Глобальная имитация щелчков клавиатуры и мыши

поэтому я получил внешнее устройство управления движением (Myo) и хочу создать приложение, в котором определенные движения будут в основном имитировать нажатие клавиши или нажатие клавиши в глобальном масштабе (не имеет значения, какое приложение). Это произойдет, пока моя программа работает в фоновом режиме, поэтому она может получать входные данные движения и выходные данные как нажатие на клавиатуру.

Например, если бы я играл в бейсбол на переднем плане (также в полноэкранном режиме) и выполнял бы движение подачи, программа выводит ключ, который будет выполнять шаг в игре (какой бы клавиша это ни была).

Я просмотрел класс SendKeys в С#, но я чувствую, что могут быть ограничения в отношении того, что он может делать (в частности, глобальная отправка нажатия клавиш).

Есть ли хороший способ написать программу, чтобы я мог сопоставить действия с моим контроллером движения с нажатием клавиши с помощью С#? Также было бы хорошо, если бы он мог выполнять key_down и key_up для хранения ключей.


person zerogeneration    schedule 16.01.2015    source источник


Ответы (2)


Самый прямой способ добиться действительно глобальных нажатий клавиш — это эмулировать клавиатуру. Это потребует создания драйвера клавиатуры, который каким-то образом обеспечивает доступ к вашей фоновой программе. Однако это требует достаточно сложного программирования ядра.

Альтернативой является использование SendKeys API в сочетании с некоторой логикой для поиска текущего активного приложения.

person Guvante    schedule 16.01.2015

Я знаю, что это не решение C#, а Myo Script интерфейс в Myo Connect был специально создан для этой цели и, вероятно, был бы самым простым способом тестирования, если не более того.

Чтобы отправить команду клавиатуры с помощью Myo Script, вы можете использовать myo.keyboard() (docs здесь).

Если вы хотите, чтобы скрипт был активен все время, вам нужно последовательно return true в onForegroundWindowChange() и обращать внимание на расположение скрипта в диспетчере приложений. Сценарии в верхней части диспетчера приложений будут проверены в первую очередь, поэтому ваш сценарий может проиграть, если над ним есть другой сценарий, который «хочет» управлять данным приложением.

person Scott Greenberg    schedule 16.01.2015
comment
Привет, Скотт, спасибо за ответ. Я думал об использовании Myo Script, но цель моего проекта — сделать программу хорошо, чтобы она могла создавать свои собственные профили последовательности жестов, в основном привязывая любые последовательности жестов и движений к профилю, и профили могут быть загружены в любое время для использования. Я не знаю, достаточно ли мощны сценарии Myo для чего-то подобного, поскольку у меня также будет довольно подробный анализ данных, чтобы определить, соответствует ли жест + движение профилю. - person zerogeneration; 17.01.2015
comment
А, это имеет смысл. Если вы хотите, чтобы профили выбирались или настраивались пользователем, тогда Myo Script, вероятно, не подходит. - person Scott Greenberg; 17.01.2015