Бывает такое, что необходимо вставить текст туда, где не предусмотрена возможность вставки текста.
Не работает Ctrl+v и нет других способов вставить скопированный текст.
Например, это может быть удаленный рабочий стол Windows или терминал сервера, расшареный в браузере или просто Вы подключились к консоли KVM.

Я попал в такую ситуацию, мне надо было ввести длинный текст в консоль KVM и я сделал себе утилиту, которая позволят это делать. Она умеет вставлять любой одно-строчный текст в такие "неудобные места", эмулируя нажатие клавиш на клавиатуре.

Я не проверял его работу в Windows или Mac, я работаю в Ubuntu. Вот тут можно почитать подробнее и допилить для работы с Вашей OS.

Спешу поделиться с сообществом инструментом, который выручил меня.

Его очень легко использовать, достаточно скрипту указать нужный текст и задержку в секундах, чтоб успеть установить курсор.

Вот ссылка на github, там сам код, ман по установке и использованию.

https://github.com/viktor-gorinskiy/prints/blob/main/static/demonstration.gif

Комментарии (25)


  1. amarao
    04.04.2022 20:17
    +4

    man xdotool


    1. skozharinov
      04.04.2022 20:34

      не работает под wayland
      EDIT: решение автора, похоже, тоже
      EDIT2: работает с XWayland


      1. amarao
        04.04.2022 20:46
        +1

        ... Если бы это было наибольшее из того, что не работает под wayland... /сарказм

        Я погуглил, говорят, есть https://github.com/atx/wtype, но я даже близко к нему не подходил (потому что моя видеокарта не wayland, а апгрейд ещё только где-то на горизонте).


        1. skozharinov
          04.04.2022 20:55

          погуглил, вроде как протокол virtual-keyboard пока не поддерживают ни GNOME, ни KDE.
          видимо, Wayland, а вместе с ним и год Linux'а на десктопе настанет ещё не скорою


          1. amarao
            04.04.2022 20:56
            +1

            Ну, я, например, сижу на циннамоне и мне уйти трудно (я пытался). :/ Плюс видяха не умеет. Плюс, плюс, плюс...

            С одной стороны точная уверенность мейнтенеров, что X мертвы, с другой стороны потребительское наблюдение, что wayland ещё не полностью втянут во всё.


  1. bungu
    04.04.2022 21:47
    +2

    Не работает Ctrl+v

    про Shift+Insert слышали?


    1. skozharinov
      04.04.2022 22:13

      как минимум в браузерном noVNC не работает, он тупо отправляет нажатия клавиш на сервер


    1. ugenk
      04.04.2022 23:27

      А теперь то же самое, но в java-апплете ipmi, запущенном через rdp ;-)


    1. krylov_sn
      05.04.2022 10:54

      тоже хотел предложить - часто блокируют именно правую кнопку мыши и Ctrl+V, остальное - нет


  1. Andrey_Solomatin
    05.04.2022 00:36

    Не аккуратно, опечатки. Не стоит торопиться показывать такой код.

    Это видимо копипаста, откуда не нужно. six==1.16.0



  1. Andy_U
    05.04.2022 00:46
    +2

    Например, это может быть удаленный рабочий стол Windows

    В remote desktop нужно всего-лишь галочку в настройках поставить. И не только copy-paste в обе стороны будут работать, но еще с удаленной машины можно поиметь доступ к дискам локальной.


    1. Ash666 Автор
      05.04.2022 00:52

      Да, но пароль и логин в некоторые формы не вставляется копипастом, даже при локальном использовании.


      1. Andy_U
        05.04.2022 01:28

        Ни разу не сталкивался - под Windows.


        1. Ash666 Автор
          05.04.2022 01:35

          Даже на экране входа?

          Или при повышении привелегий пользователя?


          1. Andy_U
            05.04.2022 01:57

            А где бы я на экране ввода copy смог сделать? Только если из поля user в поле пароля, если в домен логиниться? В VMWare Workstation, кcтати, работает - только через меню VMWare.


    1. dartraiden
      05.04.2022 01:17
      +1

      Даже с галочкой вы не сможете вставить пароль, скажем, на экране входа в Windows. Там не предусмотрена вставка в принципе.


      1. Andy_U
        05.04.2022 01:36

        В remote desktop'е Вы же вводите credentials в своей машине?


        1. Ash666 Автор
          05.04.2022 01:57

          Я не понтмаю к чему вы ведёте?

          Я как и многи знают про то, что можно поставит нужные галочки в клиенте rdp и там-же можно укзать пары логин/пароль домен и тд.

          Я сам лично пользуюсь Remmina и мне не приходилось ни когда вручную вводить пары логин/пароль при старте системы.

          Запустите у себя что-нибудь от имени администратора из под гостевой учетной записи и попробуйте вставить логин и пароль.


          1. Andy_U
            05.04.2022 02:14

            Я не понтмаю к чему вы ведёте?

            Я просто обратил внимание на неточность в Вашей фразе.

            Запустите у себя что-нибудь от имени администратора из под гостевой учетной записи и попробуйте вставить логин и пароль.

            Нет у меня гостя. Но, из соображений секьюрности, наверное, Вы правы. А ваш скрипт кстати, сработает (если его из-под гостя запустить)? Если да, а не дыра ли это в системе безопасности Windows?


        1. dartraiden
          05.04.2022 09:40

          Бывают изредка случаи, когда подключаться приходится локально через расширенный сеанс Hyper-V. Оно работает примерно как RDP, но учётные данные уже нужно вводить на удалённой машине, а не на своей.


          1. Andy_U
            05.04.2022 09:48

            Не сталкивался. Но и в Virtualbox, и в vmvare workstation можно воспользоваться их системным меню, если не в полноэкранном режиме.


            1. dartraiden
              05.04.2022 09:50
              +1

              Ещё бывают случаи, когда виртуалка на базе XP, при таком раскладе учётные данные не запрашиваются на хосте и приходится либо вводить руками на экране входа гостя, либо писать костыли типа

              cmd /c "cmdkey /generic:TERMSRV/192.168.1.103 /user:user /pass:p@ssw0rd && start /b mstsc /v:192.168.1.103"

              В общем, Hyper-V это такая боль в заднице.


  1. dartraiden
    05.04.2022 01:20
    +1

    Я не проверял его работу в Windows
    Нормально (собрал в исполняемый файл с помощью Pyinstaller). Давно собирался что-то подобное себе сделать, но руки не доходили.


    1. Ash666 Автор
      05.04.2022 02:01

      Спасибо! Добавлю в статью, что в windows тоже работает.

      Значит я не зря писал статью!


  1. SquareRootOfZero
    05.04.2022 16:56

    Подобный подход ещё помогает при заполнении всяких дурацких веб-форм, например: копи-паст как бы есть, но только в каждое поле по-отдельности, а полей этих сто пятьсот. Хранишь все данные в обычном текстовом файле, типа cvs, например, и пишешь простенький скрипт с pyautogui, pynput и т. п., который всё, что нужно прокликает, наберёт или скопипастит.