Как сделать нажатие клавиши в определенное время

Добавил пользователь Alex
Обновлено: 04.10.2024

В этом уроке вы узнаете, как использовать модуль клавиатуры для управления клавиатурой вашего компьютера на Python, это, конечно, полезно для многих задач, таких как автоматизация различных рутинных задач рабочего стола, создание агентов обучения с подкреплением и многое другое.

Мы будем использовать модуль клавиатуры, давайте установим его:

Хорошо, откройте интерактивную оболочку Python или записную книжку/лабораторию Jupyter и следуйте инструкциям.
Сначала импортируем модуль:

Добавление горячих клавиш и сокращений

Во-вторых, вы также можете вызывать обратный вызов каждый раз, когда нажимается горячая клавиша:

Проверка нажатия кнопки

Вы также можете проверить, действительно ли нажата кнопка:

Нажатие и отпускание кнопок

Затем вы также можете имитировать нажатие клавиш с помощью функции send() :

Будет сделано нажатие и отпускание кнопки пробела. На самом деле, есть эквивалентная функция press_and_release() , которая делает то же самое.

Вы также можете передать несколько ключей:

Оператор + означает, что мы нажимаем обе кнопки одновременно. Также можно использовать многоступенчатые горячие клавиши:

Но что, если вы хотите нажать определенную клавишу, но не хотите ее отпускать? Что ж, в игру вступают функции press() и release() :

Таким образом, вы нажмете кнопку CTRL, а затем отпустите ее, а пока можете делать все, что угодно, например, поспать несколько секунд и т.д.

Но что теперь, если вы хотите написать длинный текст, а не только определенные кнопки? send() будет неэффективным. К счастью для нас, функция write() делает именно это, она отправляет в ОС искусственные события клавиатуры, имитирующие набор заданного текста, давайте попробуем:

Установка задержки на 0,1 означает 0,1 секунды ожидания между нажатиями клавиш, это будет выглядеть причудливо, как в фильмах о взломе!

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

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

Я передал esc методу record() для записи нажатий и отжатий клавиш до тех пор, пока я не нажму кнопку esc , а затем мы снова проиграем эти события, используя метод play() .

Вы можете изучить, что содержит список событий, просто распечатав его, или вы можете использовать get_typed_strings() для получения типизированных строк:

Вот что я напечатал:

Еще одна интересная функция — функция on_release() , которая принимает обратный вызов, который выполняется всякий раз, когда отпускается клавиша:

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

Наконец, если вы хотите удалить все используемые клавиатурные перехватчики, включая горячие клавиши, сокращения и т.д.:

Заключение

Я только что представил вам модуль, пожалуйста, просмотрите документацию или просто введите help(keyboard) в интерактивной оболочке Python для изучения других функций и методов.

Вы также можете полностью управлять своей мышью, тот же автор этого модуля сделал еще один модуль для работы с мышью!

С такими модулями вы можете создавать сценарии автоматизации рабочего стола, сочетания клавиш, клавиатурные шпионы (хотя автор не несет ответственности) и многое другое!

ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль). Посмотреть больше записей

Как иногда нам не хватает функциональности стандартной клавиатуры компьютера или ноутбука, и приходится слишком многое выполнять кликами мышки – теряя драгоценное время! Даже приобретая мультимедийную клавиатуру можно со временем понять, что потенциал этой самой клавиатуры используется Вами процентов на 50, а то и меньше. Зачастую на таких клавиатурах пользователями используется только блок клавиш управления плеером и звуком, все остальные клавиши остаются не удел. А иногда так хочется оптимизировать свою работу за компьютером и добавить, совсем нелишние, функциональные клавиши….

ATNSoft Key Manager

Программа Key Manager от разработчика ATNSOFT

Хочу представить на ваш суд интересное программное решение, которое позволяет выполнять более чем тонкие настройки клавиатуры и мышки. Вы сможете назначить любое действие на любое сочетание клавиш или отдельную кнопку, установить запуск любой программы или файла по нажатии клавиатурных клавиш, а также ещё целый ряд возможностей, которые так или иначе сделают вашу работу проще…

Установка программы Key Manager

Для начала давайте скачаем программу, а после двойным кликом запустим на установку.

Сам процесс не вызовет у Вас никаких затруднений. Интерфейс инсталляции полностью на русском языке. Всё как обычно, принимаем лицензионное соглашение и, если требуется, добавляем ярлыки программы.

По окончании программа предложит закрыть установку и запустить Key Manager, Вы можете отказаться от единовременного запуска, сняв галочку с соответствующего пункта.

Настройка программы Key Manager

Визуальное оформление программы сделано до невозможного просто, а в сочетании с русским интерфейсом делает знакомство простым даже для начинающего пользователя!

С помощью неё мы и начнём знакомиться с возможностями программы Key Manager, слева боковая панель со списком возможных действий по настройке клавиш (по умолчанию открывается пункт по назначению действий на сочетание клавиш клавиатуры или кнопок мышки).

Чтобы проверить назначенное сочетание клавиш, достаточно, запустить любой установленный у Вас плеер на воспроизведение, а после нажать заданные клавиатурные клавиши. После чего воспроизведение должно остановиться – повторное нажатие того же сочетания запустит воспроизведения дальше. У меня данное назначение сработало на всех имеющихся плеерах в числе четырёх, в том числе и в системном Windows Media Player.

Возможности Key Manager

Вместо послесловия

Хоть программа Key Manager и коммерческая, но вполне достойна той цены, которую просят Вас заплатить после пробного месячного периода использования. Стоимость приемлема, и со слов разработчика ATNSOFT предоставит дальнейшие обновления бесплатно!

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

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

  • С фиксацией – кнопка остаётся нажатой после отпускания, без фиксации – отключается обратно.
  • Нормально разомкнутая (Normal Open, NO) – при нажатии замыкает контакты. Нормально замкнутая (Normal Closed, NC) – при нажатии размыкает контакты.
  • Тактовые кнопки – замыкают или размыкают контакт. У обычных тактовых кнопок ноги соединены вдоль через корпус (см. картинку ниже). Переключатели – обычно имеют три контакта, общий COM, нормально открытый NO и нормально закрытый NC. При отпущенной кнопке замкнута цепь COM-NC, при нажатой замыкается COM-NO.


blank

Подключение и подтяжка

Из урока про цифровые пины вы помните, что микроконтроллер может считывать напряжение со своей ноги. Соответственно кнопка может подать на пин тот уровень, к которому подключена её вторая нога. В том же уроке мы обсуждали, что не подключенный никуда цифровой пин принимает наводки из воздуха, и считанное с него значение будет практически случайным. То есть подключив к пину 5V (сигнал высокого уровня) через кнопку, мы ничего не добьёмся: при нажатой кнопке на пине будет считываться четкий сигнал высокого уровня, а при отпущенной – случайное значение. Для решения этой проблемы существует такое понятие, как подтяжка (pull) пина. Подтяжка выполняется к земле (pull down) или питанию (pull up) микроконтроллера при помощи резистора. Подтяжка выполняется противоположно принимаемому сигналу, т.е. если нужно ловить высокий сигнал, подтяжка выполняется к земле, если ловить нужно сигнал земли – подтяжка выполняется к питанию. Вот два варианта подключения кнопки, с подтяжкой к VCC и GND соответственно: Как выбирается сопротивление резистора? Тут всё очень просто: при нажатии на кнопку через резистор потечёт ток, так как в любом случае замыкается цепь питание-земля. Чем выше ток, больше потери энергии и нагрев резистора, а это никому не нужно, поэтому сопротивление резистора подтяжки обычно выбирается в диапазоне 5-50 кОм. Если ставить больше – подтяжка может не обеспечить стабильный уровень сигнала на пине, а если ставить меньше – будут больше потери энергии в нагрев резистора: при сопротивлении в 1 ком через него потечёт ток величиной 5 В/1000 Ом = 5 мА, для сравнения плата Ардуино с МК в активном режиме потребляет 20-22 мА. Чаще всего для подтяжки используется резистор на 10 кОм. Как вы помните из урока о цифровых пинах, у МК AVR есть встроенные резисторы для всех GPIO, эти резисторы подключены к питанию (к VCC), то есть буквально дублируют первую схему из этого урока и позволяют не использовать внешний резистор. У микроконтроллеров другой архитектуры бывает подтяжка к GND, или вообще может не быть внутренней подтяжки. При использовании подтяжки к питанию мы получим инвертированный сигнал – функция digitalRead() вернёт 1 при отпущенной кнопке, и 0 при нажатой (при использовании нормально-разомкнутой кнопки). Давайте подключим кнопку на пин D3 (и GND):

Алгоритмы

Отработка нажатия

В большинстве реальных применений работать с текущим состоянием кнопки очень неудобно, например когда действие должно быть выполнено однократно при нажатии на кнопку, т.е. по клику. Чуть усложним конструкцию, добавив один флаг, который будет помнить состояние кнопки. Такая конструкция позволяет отслеживать нажатие и отпускание кнопки и реагировать на них однократно:

Дребезг контактов

Кнопка не идеальна, и контакт замыкается не сразу, какое-то время он “дребезжит”. Прогоняя данный алгоритм, система опрашивает кнопку и условия приблизительно за 6 мкс, то есть кнопка опрашивается 166’666 раз в секунду! Этого достаточно, чтобы получить несколько тысяч ложных срабатываний. Избавиться от дребезга контактов можно как аппаратно, так и программно: аппаратно задача решается при помощи RC цепи, то есть резистора (~1-10k) и конденсатора (~100nF). Выглядит это следующим образом:

blank

blank

Программно можно ввести простейший таймер нажатия, основанный на millis() , время гашения дребезга примем 100 миллисекунд. Вот так будет выглядеть код:

Рекомендуется конечно же использовать аппаратный способ, так как он не нагружает ядро лишними расчетами. В 99.99% проектов будет достаточно программного антидребезга, так то смело используйте конструкцию с millis() .

“Импульсное” удержание

В устройствах с управлением кнопкой очень часто бывает нужна возможность изменения значения как однократно кликом по кнопке, так и “автоматически” с тем же шагом – при удержании. Такой вариант реализуется очень просто, добавлением ещё одного условия в наш предыдущий алгоритм, а именно: если кнопка была нажата, но ещё не отпущена, и прошло времени больше, чем задано – условие вернёт true . В примере ниже периодичность “нажатий” при удержании настроена на 500 миллисекунд (2 раза в секунду):

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

Простейший класс кнопки

Вот так предыдущий пример можно сделать классом (мы делали это вот в этом уроке), положить его в отдельный файл (button.h) и пользоваться:

Другие возможности кнопки

Кнопка только с виду кажется простым устройством, дающим 0 и 1, но, подключив фантазию и время, можно придумать гораздо больше применений обычной кнопке. В моей библиотеке GyverButton реализовано очень много всяких интересных возможностей по работе с кнопкой, вот список:

  • Работа с нормально замкнутыми и нормально разомкнутыми кнопками
  • Работа с подключением PULL_UP и PULL_DOWN Опрос кнопки с программным антидребезгом контактов (настраиваемое время)
  • Отработка нажатия, удерживания, отпускания, клика по кнопке (+ настройка таймаутов)
  • Отработка одиночного, двойного и тройного нажатия (вынесено отдельно)
  • Отработка любого количества нажатий кнопки (функция возвращает количество нажатий)
  • Функция изменения значения переменной с заданным шагом и заданным интервалом по времени
  • Возможность работы с “виртуальными” кнопками (все возможности библиотеки используются для матричных и резистивных клавиатур)

Подробное описание библиотеки можно почитать в заголовочном файле на странице библиотеки, также там есть много примеров.

Аналоговые клавиатуры

Аналоговые клавиатуры – достаточно глубокая тема, достойная отдельного урока (у меня его пока что нет). Максимально подробный урок-исследование можно посмотреть на сайте Codius.

Видео

Комбинации клавиш на клавиатуре

Часто читая статьи в интернете или инструкцию по установке какой-либо программы, Вы можете встретить комбинации клавиш (Ctrl-C, Ctrl-V, Win-R, Alt-Tab, Alt-F4 и т.д.). И если Вы, до сих пор не знаете, что они значат, тогда Вы можете ознакомиться с ними в нашей статье.

В данной статье представлен, полный список комбинаций клавиш на клавиатуре, используемые не только в операционной системе Windows.

Разделы по работе с комбинациями клавиш:

  1. Основные комбинации клавиш на клавиатуре
  2. Горячие клавиши общего назначения
  3. Комбинации клавиш предназначенные для работы с текстом
  4. Комбинации клавиш для работы с файлами
  5. Комбинации клавиш для работы в проводнике
  6. Комбинации клавиш для работы с окнами
  7. Комбинации клавиш для работы с диалоговыми окнами
  8. Комбинации клавиш для работы в браузерах (Internet Explorer, Google Chrome, Mozilla)
  9. Специальные возможности

Основные комбинации клавиш на клавиатуре

Alt+Tab - Переключение между окнами
Win+Tab - Переключение между окнами в режиме Flip 3D
Win+Up - Развернуть окноWin+Down - Восстановить / Минимизировать окно
Win+Left - Прикрепить окно к левому краю экрана
Win+Right - Прикрепить окно к правому краю экрана
Win+Shift+Left - Переключиться на левый монитор
Win+Shift+Right - Переключиться на правый монитор
Win+Home - Минимизировать / Восстановить все неактивные окна
Win+Break(или Pause) - Запустить элемент Система из Панели Управления (пункт Свойства при нажатии правой кнопкой мыши на Компьютер в меню Пуск)
Win+Space - Показать рабочий стол
Win+B - Переход в область уведомлений(трей)
Win+D - Свернуть окна или восстановить все окна
Win+E - Запустить Проводник(Explorer)
Win+F - Запустить встроенный диалог поиска Windows
Win+Ctrl+F - Запустить Поиск по компьютеру из домена
Win+F1 - Запустить встроенный диалог Windows: Справка и Поддержка
Win+G - Отобразить гаджеты поверх всех окон
Win+L - Блокировка рабочей станции(текущего сеанса пользователя)
Win+M - Минимизировать все окна
Win+P - Отобразить дополнительные опции дисплея (расширить рабочий стол на 2 монитор и т.п.)
Win+R - Запустить диалоговое окно Выполнить
Win+Т - Выбрать первый элемент в панели задач (Повторное нажатие переключает на следующий элемент, Win+Shift+T - прокручивает в обратном порядке)
Win+U - Запустить Центр специальных возможностей (Ease of Access Center)
Win+X - Запустить Mobility Center
Win+цифра- Запустить приложение с панели задач (Win+1 запускает первое приложения слева, Win+2, второе, и т.к.)
Win + "+" - Увеличить масштаб
Win + "-" - Уменьшить масштаб
Ctrl + колесо мыши (вверх\вниз) на рабочем столе - увеличить\уменьшить иконки рабочего стола.

В Проводнике (Explorer):
Alt+P - Показать / Скрыть Область предпросмотра

Панель задач:
Shift + щелчок на иконке - Открыть новое окно приложения
Ctrl + Shift + щелчок по иконке - Открыть новое окно приложения с привилегиями администратора
Shift + щелчок правой кнопкой на иконке - Показать меню приложения
Shift + щелчок правой кнопкой на группе иконок - Показать меню, восстановить все / cвернуть все / Закрыть все
Ctrl + щелчок по группе икнонок - Развернуть все окна группы

Читайте также: