Нажатие кнопок с помощью Python: руководство по модулю клавиатуры и симуляции нажатий

0
33

Краткая памятка по работе с модулем keyboard

  1. Установите модуль командой pip install keyboard.
  2. Импортируйте модуль: import keyboard.
  3. Для печати текста используйте keyboard.write(‘текст’).
  4. Для нажатия и отпускания клавиши используйте press() и release().
  5. Для записи и воспроизведения действий используйте record() и play().
  6. Для одиночного нажатия используйте keyboard.send(‘клавиша’).
  7. Для создания автозамены используйте add_abreviation().
  8. Для назначения горячих клавиш используйте add_hotkey().
  9. Добавляйте задержки с помощью time.sleep() при необходимости.
  10. Проверяйте права администратора на Linux для работы модуля.
  11. Не используйте автоматизацию в играх, если это запрещено правилами.
  12. Тестируйте скрипты в безопасной среде перед запуском.

Зачем и кому это нужно

py162 - изображение номер один
py162 — изображение номер один
  • автоматизация — создание ботов для сайтов, приложений и игр. Пример: бот для автоматического заполнения форм или кормления/лечения игровых персонажей;
  • тестирование десктопных приложений — перебор возможных действий пользователя и реакций программы;
  • доступность — адаптация интерфейса для людей с ограниченными возможностями здоровья, в том числе за счёт эмуляции мыши (ведь без зрения ею не воспользуешься);
  • оптимизация — переназначение стандартных клавиш и/или замена недостающих кнопок физической клавиатуры.

Узнай, какие ИТ — профессии входят в ТОП-30 с доходом от 210 000 ₽/мес

How to make a clickable button in - изображение номер два
How to make a clickable button in — изображение номер два

ส อ น - изображение номер три
ส อ น — изображение номер три

Программирование на - изображение номер четыре
Программирование на — изображение номер четыре

Как запустить - изображение номер пять
Как запустить — изображение номер пять

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

Push - изображение номер шесть
Push — изображение номер шесть

how to put an image on push button in python gui insert image on push button in - изображение номер семь
how to put an image on push button in python gui insert image on push button in — изображение номер семь

Инструменты питониста для разных платформ

tkinter button click with python - изображение номер восемь
tkinter button click with python — изображение номер восемь

Для симуляции событий клавиатуры и мыши есть кроссплатформенный модуль PyUserInput, который работает поверх библиотек и фрейморков:

pywinauto — набор модулей, который автоматизирует взаимодействие с Microsoft Windows GUI. Библиотека написана на чистом Python — простейшие её функции по обработке событий мыши и клавиатуры работают и в Linux. Но более сложные возможности для работы с текстом заточены именно под Windows и доступны только там.

Актуальные версии этих инструментов поддерживают Python 3, более ранние — Python 2.

Установка модуля клавиатуры

Tkinter - изображение номер девять
Tkinter — изображение номер девять

Версия Python, используемая в этом руководстве, равна 3.8. Однако модуль клавиатуры может работать как с Python 2.x, так и с Python 3.x.

Если вы используете Linnux, чтобы использовать эту библиотеку, вы должны установить ее от root. Если вы этого не сделаете, вы получите:

Управление клавиатурой python - изображение номер десять
Управление клавиатурой python — изображение номер десять

Key - изображение номер одиннадцать
Key — изображение номер одиннадцать

В Windows и macOS, поскольку привилегии работают совсем по-другому — вы можете установить его просто через pip и запустить сценарии:

On - изображение номер двенадцать
On — изображение номер двенадцать

Примечание: Для MacOS вам, возможно, придется разрешить терминалу или другим приложениям изменять состояние вашей машины, например, путем ввода текста. Также имейте в виду, что по состоянию на сентябрь 2026 года библиотека все еще находится в экспериментальном состоянии на MacOS.

Функция модуля клавиатуры

How to simulate key presses in python - изображение номер тринадцать
How to simulate key presses in python — изображение номер тринадцать

В этом модуле есть много функций, которые можно использовать для имитации действий клавиатуры.

  • (message, [delay])- пишет сообщение с задержкой или без нее.
  • (key) — блокирует программу до тех пор, пока не будет нажата клавиша. Ключ передается в виде строки («пробел», «esc» и т.д.)
  • (key)- нажимает клавишу и удерживается до вызова функции release(key)
  • (key)- выпускает ключ.
  • (key)- нажимает и отпускает клавишу.
  • keyboard.add_hotkey(hotkey, function)- создает hotkey, которая при нажатии выполняет function.
  • (key)- записывает активность клавиатуры до нажатия key.
  • (recorded_events, [speed_factor]) — воспроизводит события, записанные with (key) функция, с дополнительным speed_factor.
ЧИТАТЬ ТАКЖЕ:  Функция find в Python: что делает и как использовать метод find()

(key) — блокирует программу до тех пор, пока не будет нажата клавиша. Ключ передается в виде строки («пробел», «esc» и т.д.)

keyboard.add_hotkey(hotkey, function)- создает hotkey, которая при нажатии выполняет function.

keyboard - изображение номер четырнадцать
keyboard — изображение номер четырнадцать

Приветственное сообщение появляется на экране в терминале, как будто вы его написали. Вы можете очень легко автоматизировать команду и создать для нее псевдоним горячей клавиши. Вот (грубый) пример выхода из REPL Python, написания команды curl:

12 - изображение номер пятнадцать
12 — изображение номер пятнадцать

Функции write() и wait() клавиатуры

Learn - изображение номер шестнадцать
Learn — изображение номер шестнадцать

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

Например, мы можем создать импровизированный макрос, привязанный, скажем, к 1, который отвечает на этот ввод новым сообщением. Обратите внимание, что вместо этого есть фактический способ создания горячих клавиш, который мы рассмотрим позже.

Мы создадим бесконечный цикл True, чтобы проверить, нажата ли клавиша, и вы можете запустить сценарий в фоновом режиме:

Mini - изображение номер семнадцать
Mini — изображение номер семнадцать

Примечание: Специальные символы не поддерживаются этой функцией, поэтому, если вы добавите, скажем,! — вы получите исключение остановки.

Функции клавиши press() и release()

Keyboard event loop in pygame - изображение номер восемнадцать
Keyboard event loop in pygame — изображение номер восемнадцать

Поскольку сложно имитировать press () и release(), чтобы действия были видны, мы также увидим в действии record() и play().

Функция press() нажимает клавишу и отпускает ее, когда вы вызываете release() на той же клавише.

How to - изображение номер девятнадцать
How to — изображение номер девятнадцать

Тем не менее, вы можете удерживать некоторые специальные клавиши, такие как [SHIFT] или [CTRL] следующим образом:

python 3 - изображение номер двадцать
python 3 — изображение номер двадцать

Функции клавиатуры record() и play()

Как определить нажатия клавиш на клавиатуре с помощью - изображение номер двадцать один
Как определить нажатия клавиш на клавиатуре с помощью — изображение номер двадцать один

Речь не всегда идет о вводе новых клавиш — иногда вы хотите записать происходящий и воспроизвести это. Имейте в виду, что вам понадобятся права администратора для записи любого подобного ввода, так как технология может быть легко использована для создания кейлоггеров.

Функция record() принимает ключ запуска, до которого она записывает, и возвращает последовательность событий типа KeyboardEvent. Затем вы можете поместить эту последовательность событий в функцию play(), которая точно воспроизводит их, с дополнительным аргументом speed_factor. Он действует как множитель скорости исходных событий:

УПРАВЛЯЕМ - изображение номер двадцать два
УПРАВЛЯЕМ — изображение номер двадцать два

Главное, что нужно знать про клавиатуры - мембранные и механические / - изображение номер двадцать три
Главное, что нужно знать про клавиатуры — мембранные и механические / — изображение номер двадцать три

Функция клавиатуры send()

python - изображение номер двадцать четыре
python — изображение номер двадцать четыре

Функция send() включает в себя press () и release () вместе и используется для отдельных клавиш, в отличие от функции write(), которая используется для целых предложений:

Какие сочетания клавиш упрощают работу на компьютере 3 - изображение номер двадцать пять
Какие сочетания клавиш упрощают работу на компьютере 3 — изображение номер двадцать пять

Функция press() также может принимать комбинации нажатых клавиш. Вы можете отправить комбинацию «ctrl + shift + s», например, и должен появиться диалог для сохранения файла, если вы находитесь в приложении, которое поддерживает эту операцию:

Хотя это неправильный способ добавить горячие клавиши. Также вы можете использовать функцию add_hotkey().

ЧИТАТЬ ТАКЖЕ:  Подсчет количества символов в строке Python: методы len() и ручной цикл

Функция клавиатуры add_abreviation()

Post #3267 - изображение номер двадцать шесть
Post #3267 — изображение номер двадцать шесть

Функция add_abbreviation() является довольно изящной, так как она позволяет определять сокращения для длинных входных данных и заменяет сокращенные версии сохраненными полными версиями.

Например, подобно тому, как такие службы, как Google, сохраняют вашу электронную почту для большинства форм ввода, вы можете создать свою собственную аббревиатуру и запустить ее через [SPACE]:

Ввод и вывод данных в - изображение номер двадцать семь
Ввод и вывод данных в — изображение номер двадцать семь

Во время выполнения, если вы введете @, за которым следует [ПРОБЕЛ] — ввод в длинной форме заменит введенный @.

Функция клавиатуры add_hotkey()

Python-скрипт для эмуляции горячих клавиш - изображение номер двадцать восемь
Python-скрипт для эмуляции горячих клавиш — изображение номер двадцать восемь

Функция add_hotkey() принимает горячую клавишу, которую вы хотите сохранить, или комбинацию клавиш и функцию. Здесь легко передать анонимные лямбда-функции, хотя вы также можете добавить именованные функции.

Например, давайте добавим горячую клавишу для CTRL+j, которая запускает лямбда-функцию, регистрирующей это:

Горячие клавиши - изображение номер двадцать девять
Горячие клавиши — изображение номер двадцать девять

Горячая клавиша ctrl + alt + p сохраняется, и при нажатии этой комбинации вы должны увидеть вывод лямбды.

Как это работает: примеры

В директории examples каталога pywinauto на GitHub собраны два десятка наглядных примеров по использованию библиотеки. С их помощью вы можете прямо сейчас создавать ботов, которые умеют устанавливать/удалять программы, скачивать web-страницы, перетаскивать файлы между окнами, пакетно обрабатывать изображения в MS Paint и решать другие задачи.

Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Button in - изображение номер тридцать
Button in — изображение номер тридцать

50 золотых советов для повышения продуктивности - изображение номер тридцать один
50 золотых советов для повышения продуктивности — изображение номер тридцать один

Хорошо? Представьте, что вам нужно перенастроить приложение из дефолтного состояния на N-ном количестве компьютеров — выбрать нужные пункты меню, заполнить нужные поля. Или вы тестируете свою программу вдоль и поперёк, чтобы выявить сбои при обращении к GUI. Скрипт, который вам потребуется, будет длиннее, чем в примере выше, но по сути усложнится незначительно.

Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней

Simple - изображение номер тридцать два
Simple — изображение номер тридцать два

03 - изображение номер тридцать три
03 — изображение номер тридцать три

Python button click event - изображение номер тридцать четыре
Python button click event — изображение номер тридцать четыре

Добавьте сюда возможность работать с любыми приложениями на Win32 GUI и виджетами под интерфейс MS UI Automation.

Устанавливается pywinauto как обычный пакет — через pip install — и автоматически ставит еще несколько полезных компонентов: библиотеку pyWin32, COM-клиент и серверный фрейморк comtypes, библиотеку six, которая обеспечивает совместимость Python 2 (начиная с 2.6) и 3. Всё это пригодится начинающему разработчику не только для создания ботов, но и в разработке собственных программных продуктов.

Часто задаваемые вопросы по автоматизации нажатий в Python

Вопрос: Как установить модуль keyboard в Python?
Ответ: Используйте команду pip install keyboard в командной строке.

Вопрос: Какая функция модуля keyboard отвечает за нажатие и отпускание клавиши?
Ответ: Функции press() и release().

Вопрос: Как записать и воспроизвести последовательность нажатий?
Ответ: Используйте функции record() и play().

Вопрос: Чем отличается функция send() от write()?
Ответ: send() нажимает и отпускает клавишу, а write() печатает строку текста.

Вопрос: Как создать горячую клавишу для запуска скрипта?
Ответ: Используйте функцию add_hotkey(), указав комбинацию клавиш и функцию-обработчик.

Вопрос: Можно ли автоматизировать нажатия в играх с помощью Python?
Ответ: Да, но это может нарушать правила игры и привести к блокировке аккаунта.

Вопрос: Как добавить автозамену текста с помощью модуля keyboard?
Ответ: Используйте функцию add_abreviation(), где первый аргумент — сокращение, второй — полный текст.

Вопрос: Работает ли модуль keyboard на macOS и Linux?
Ответ: Да, но на Linux могут потребоваться права root.

Вопрос: Как сделать паузу между нажатиями клавиш?
Ответ: Используйте функцию time.sleep() из модуля time.

Вопрос: Как проверить, нажата ли определенная клавиша в данный момент?
Ответ: Используйте функцию is_pressed() из модуля keyboard.