работа с клавиатурой

PyAutoGUI — работа с клавиатурой

Привет всем! В продолжение записи, посвященной азам работы с библиотекой автоматизации действий PyAutoGUI (в этой записи я сделал описание этой прекрасной библиотеки, рассматривал общие примеры + приводил примеры работы с мышкой) — пришла пора (угу, почти спустя год) написать о методике работы с клавиатурой. Поехали!

Основная функция работы клавиатуры — ввод символов в нужной строке. Делается это следующим образом:

pyautogui.write('Hello, World!')

Если же вам нужно ввести текст с неким интервалом — добавим интервал в команду:

pyautogui.write('Hello, World!', interval = 0.50)

С вводом текста разобрались. А как быть, если нужно нажать какие-либо клавиши? Для этого используем метод press():

pyautogui.press('enter') #Нажимаем клавишу "Ввод"
pyautogui.press('f1') #Нажимаем клавишу F1
pyautogui.press('left') #Нажимаем клавишу "Влево"

Интересно, что функция press() — лишь обертка для функций KeyDown() и KeyUp(), которые имитируют нажатие на клавишу, а потом отпуск этой клавиши. НО! В случае необходимости можно имитировать эти действия самостоятельно:

pyautogui.keyDown('shift')  #Нажимаем клавишу "Shift"
pyautogui.press('left')     #Нажимаем клавишу "Влево"
pyautogui.press('left')     #Нажимаем клавишу "Влево"
pyautogui.press('left')     #Нажимаем клавишу "Влево"
pyautogui.keyUp('shift')    #Отпускаем клавишу "Shift"

Ок, с этим разобрались, едем далее. Теперь разберемся, как оптимизировать все написанное выше (согласитесь, описывать каждое нажатие клавиш — крайне неудобно). Делаем следующее:

pyautogui.press(['left', 'left', 'left']) #Нажали клавишу "Влево" три раза подряд

а можно сделать так:

pyautogui.press('left', presses=3) #Нажали клавишу "Влево" три раза подряд ;) Согласитесь - этот вариант как-то попроще...

Кстати, ничего не мешает удерживать одну клавишу, и нажимать другую. Реализуется это двумя методами. Первый:

with pyautogui.hold('shift'):
pyautogui.press(['left', 'left', 'left']) #На нормальном языке это значит следующее: когда клавиша Shift зажата - три раза нажимаем клавишу "Влево"

Две строки — но на деле они заменяют код, написанный ниже:

pyautogui.keyDown('shift')  #Нажать клавишу "Shift"
pyautogui.press('left')     #Нажать клавишу "Влево"
pyautogui.press('left')     #Нажать клавишу "Влево"
pyautogui.press('left')     #Нажать клавишу "Влево"
pyautogui.keyUp('shift')    #Отпустить клавишу "Shift"

И в конце сегодняшей записи, посвященно работе с клавиатурой с помощью библиотеки Pyautogui расскажу, как реализовать нажатие нескольких клавиш по указанной схеме. Для этого используется метод hotkey(). Пример — ниже:

pyautogui.hotkey('ctrl', 'shift', 'esc')

Одна строка! Элементарно, Ватсон! А если бы мы описывали это с помощью простых нажатий клавиш — нам пришлось бы писать код:

pyautogui.keyDown('ctrl')
pyautogui.keyDown('shift')
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')

Кстати, интервал в нажатии клавиш никто не отменяет 😉 Напоминаю: interval=0.25 — интервал между нажатиями клавиш в милисекундах.

На всякий случай — ниже укажу полный список всего, что можно использовать методах, описанных сегодня (press(), keyDown(), keyUp(), hothey()):

‘\t’, ‘\n’, ‘\r’, ‘ ‘, ‘!’, ‘»‘, ‘#’, ‘$’, ‘%’, ‘&’, «‘», ‘(‘,
‘)’, ‘*’, ‘+’, ‘,’, ‘-‘, ‘.’, ‘/’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
‘8’, ‘9’, ‘:’, ‘;’, ‘<‘, ‘=’, ‘>’, ‘?’, ‘@’, ‘[‘, ‘\’, ‘]’, ‘^’, ‘_’, ‘`’,
‘a’, ‘b’, ‘c’, ‘d’, ‘e’,’f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’,
‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’, ‘{‘, ‘|’, ‘}’, ‘~’,
‘accept’, ‘add’, ‘alt’, ‘altleft’, ‘altright’, ‘apps’, ‘backspace’,
‘browserback’, ‘browserfavorites’, ‘browserforward’, ‘browserhome’,
‘browserrefresh’, ‘browsersearch’, ‘browserstop’, ‘capslock’, ‘clear’,
‘convert’, ‘ctrl’, ‘ctrlleft’, ‘ctrlright’, ‘decimal’, ‘del’, ‘delete’,
‘divide’, ‘down’, ‘end’, ‘enter’, ‘esc’, ‘escape’, ‘execute’, ‘f1’, ‘f10’,
‘f11’, ‘f12’, ‘f13’, ‘f14’, ‘f15’, ‘f16’, ‘f17’, ‘f18’, ‘f19’, ‘f2’, ‘f20’,
‘f21’, ‘f22’, ‘f23’, ‘f24’, ‘f3’, ‘f4’, ‘f5’, ‘f6’, ‘f7’, ‘f8’, ‘f9’,
‘final’, ‘fn’, ‘hanguel’, ‘hangul’, ‘hanja’, ‘help’, ‘home’, ‘insert’, ‘junja’,
‘kana’, ‘kanji’, ‘launchapp1’, ‘launchapp2’, ‘launchmail’,
‘launchmediaselect’, ‘left’, ‘modechange’, ‘multiply’, ‘nexttrack’,
‘nonconvert’, ‘num0’, ‘num1’, ‘num2’, ‘num3’, ‘num4’, ‘num5’, ‘num6’,
‘num7’, ‘num8’, ‘num9’, ‘numlock’, ‘pagedown’, ‘pageup’, ‘pause’, ‘pgdn’,
‘pgup’, ‘playpause’, ‘prevtrack’, ‘print’, ‘printscreen’, ‘prntscrn’,
‘prtsc’, ‘prtscr’, ‘return’, ‘right’, ‘scrolllock’, ‘select’, ‘separator’,
‘shift’, ‘shiftleft’, ‘shiftright’, ‘sleep’, ‘space’, ‘stop’, ‘subtract’, ‘tab’,
‘up’, ‘volumedown’, ‘volumemute’, ‘volumeup’, ‘win’, ‘winleft’, ‘winright’, ‘yen’,
‘command’, ‘option’, ‘optionleft’, ‘optionright’

На этом все что я хотел рассказать сегодня о работе с клавиатурой с помощью библиотеки Pyautogui в Python — заканчивается. Продолжение — скоро (раньше, чем через год, обещаю). И как всегда — в случае возникновения вопросов пишите на почту, или в Телеграм 😉

UPD: видео 😉

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut