@Phantomrus
Project Manager в крупной финтех компании

Как сэмулировать нажатие клавишы Пробел на Arduino?

Всем привет!

На интернет-странице есть кнопка. Если она в данный момент является выбранным элементом на странице, то по нажатии клавишы Пробел данная кнопка нажимается. (Выбрать её можно или нажав на неё мышкой или с помощью Tab, перебирая все элементы на странице)

Постановка задачи: Нужно, чтобы Arduino по хлопку эмулировало нажатие клавишы Пробел и кнопка (уже выбранная) нажималась.

С инициированием действия по хлопку проблем не возникает. Сложность с эмуляцией клавиатуры.
Arduino Leonardo умеет притворяться клавиатурой. Функция Keyboard.press() эмулирует нажатие и удерживание какой-либо клавиши. Однако, насколько я понимаю, кнопка на странице ждет именно нажатия клавиши Пробел, а не передачи ей символа " " (№32 в ASCII). Предположение оказалось неверным. Эмуляция 32 символа работает как надо. Достаточно использовать Keyboard.press(' ') И если с помощью Keyboard.press() я могу сэмулировать нажатие Ctrl или Backspace, то эмуляция Space поставила меня в тупик.
Подскажите, есть ли решение данной проблемы?

Извините, не смог сформулировать проблему менее запутанно. Готов ответить на вопросы.
Заранее спасибо!
  • Вопрос задан
  • 1562 просмотра
Решения вопроса 1
@tayanov
Keyboard.press(' '); ради прикола пробовал?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Странно: если ардуина — USB-клавиатура, то она передаёт именно нажатие физической клавиши «пробел».
Впрочем, у вас тут стоит пробел в кавычках " ". Скорее всего, именно в этом ошибка: при плохой проверке типов, присущей Си, в функцию (которая требует char) будет передан адрес строки «пробел».

Надо Keyboard.press(' '); или Keyboard.write(' ');. В одиночных кавычках. То есть целое число.

Кроме того, Keyboard.press только нажимает на кнопку, и разбирай, как эту кнопку «отпустить». По крайней мере, моя «лисичка» требует именно ОТПУСКАНИЯ пробела. Как вариант — тот же Keyboard.write, который жмёт и отпускает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы