Автоматизируем щелчки мышкой в Linux: xdotoolИсточник: habrahabr MaGIc2laNTern
Эта очень короткая заметка на примере активации ключей в Steam описывает процесс автоматизации операций, выполняемых при помощи мыши и клавиатуры. Допустим, вы купили несколько наборов игр Humble Bundle. Теперь у вас есть, например, 5 ключей для активации в Steam. А может быть 15 или даже 25. Вы очень не хотите активировать их вручную, потому что это слишком муторно: в клиенте Steam нужно каждый раз наводить курсор на меню "Games", щёлкать, потом наводить курсор на пункт меню "Activate a Product on Steam…", опять щёлкать, потом нажимать Enter, потом ещё раз Enter, и только затем наконец-то вводить ключ (а потом нужно подождать, ещё раз нажать Enter, затем Escape). А потом повторять то же самое для каждого последующего ключа. Как писал Леонид Каганов, стоило ли вообще ради такого "прогресса" спускаться с пальмы и брать в руки каменный топор? В общем, вы решили этот процесс автоматизировать - тем более, что задача-то, на самом деле, очень простая. Для её решения нам потребуются консольные утилиты xdotool и xclip - убедитесь, что они установлены у вас в системе.
9MZ43-42XXZ-0B9X3 I4YYK-CRGVN-VHXCR NQJ6E-GJWNG-GZWVX YCKI8-I0B9T-85CM4 KBFHW-5LE39-WHFMW WFLWX-PPRBT-ZCGAN ER26C-XFT5C-2NDGG J876-XPFC-H0SF-KGMO 37YZQ-93TCM-V9MBY 2GFNA-XHBME-3MB70 Далее вам нужно открыть Steam и определить координаты тех точек, куда нужно будет автоматически перемещать курсор. Таких точек две: во-первых, точка для первого щелчка (меню "Games"), во-вторых, точка для второго щелчка (пункт меню "Activate a Product on Steam…"). Тут по настроению - можете получить координаты с помощью команды getmouselocation, а можете их подобрать. В первом случае можно либо запустить xdotool через watch (для автоматического перевыполнения команды через определённый интервал времени), либо добавить sleep. То есть либо запускаете Во втором случае вы пишете, допустим, Теперь, когда у нас есть нужные координаты, давайте действовать итеративно: прежде всего попробуем автоматически пройти до момента ввода ключа. Для этого будем использовать команды mousemove, click, sleep и key. Список команд, кстати, можно посмотреть в документации по xdotool. Давайте попробуем:
Если в точке, куда в первую очередь перемещается курсор, не Steam, а какое-то другое окно (например, если Steam скрыт за окном терминала), то нужно добавить команды windowactivate/windowfocus, чтобы сначала отобразилось окно Steam, и уже затем выполнялись следующие команды. Например:
Чтобы получить идентификатор активного окна, вы можете использовать команду getactivewindow (если окно Steam будет активно через секунду после выполнения команды Теперь давайте попробуем написать небольшой скрипт, который читает файл с ключами и поочерёдно их активирует. Скрипт можно назвать, например, activate_steam_keys.sh.
А дальше просто смотрим на экран и наслаждаемся процессом. Всё-таки хорошая идея была взять тот каменный топор. Весёлого программирования! |