Автовставка в текстовый редактор GUI / поле

Я пытаюсь создать сценарий, который обрабатывает выделенный текст от gui (любое количество приложений, как браузер, текстовый редактор, и т.д.) и затем заменяет выделенный текст обработанным текстом автоматически с помощью одной команды клавиатуры.

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

Рабочий процесс:

  • Выберите текст
  • Команда ключа хита
  • Сценарий Bash обрабатывает текст
  • Сценарий Bash вставляет текст в gui редактора, заменяя выбор (<-Это - то, что я не могу выяснить),
  • Пластина

Я считал, что xsel позволяет вставлять, но насколько я могу сказать, он только позволяет производить текст к cli (не действительно вставляющий) или перенаправляющий к чему-то еще. Это может быть тем, в чем я нуждаюсь, но я не понимаю, как сделать это (т.е. к тому, что я перенаправляю вывод, чтобы заставить это автоматически заменять выделенный текст в gui?)

Спасибо!

Дальнейшая информация:

  • Я использую Xubuntu 19.10
  • Я просто хочу заменить простым текстом (например, изменить нижний регистр на верхний регистр)
  • Давайте сохраним это простым - как делают я (использование keycommand) беру текст из сценария удара и вставляю его в gui текстовый редактор / область, где курсор в настоящее время, заменяя выделенный текст, если существует кто-либо?
2
задан 4 March 2020 в 23:38

3 ответа

Так как Вы используете Xorg и ctrl+v ist почти универсально ярлык для вставки, самое легкое решение xdotool (доступный из официальных репозиториев):

xdotool key --clearmodifiers "ctrl+v"

--clearmodifiers отметьте пытается очистить все модификаторы (ctrl, высокий звук...) прежде, чем выпустить нажатия клавиш и восстанавливает их впоследствии. Это полезно при вызове сценария через сочетание клавиш потому что иначе приложение будет также видеть модификаторы, у которых Вы потребовали своего ярлыка, и например, ctrl+alt+v может привести к другой команде.

Иногда, это может привести к состоянию состязания при выпуске модификаторов прежде xdotool восстанавливает их, делая их застрявшими. В этом случае просто нажмите и выпустите застрявшие модификаторы для отклеивания их.

xdotool может сделать намного больше. Читать man xdotool получить обзор. Это также часто используется в сочетании с xbindkeys, который позволяет Вам настроить сочетания клавиш более универсально, чем, например, гнома и также позволяет Вам связать действия с кнопками мыши.

2
ответ дан 17 March 2020 в 00:09

В то время как bash и xdotool определенно обработает простой случай как это, это - точно вид вещи, которую AutoKey был разработан, чтобы сделать.

В AutoKey можно определить простой сценарий, записанный в Python с помощью AutoKey API, чтобы сделать это. Это может быть присвоено горячей клавише и будет работать каждый раз, когда та горячая клавиша нажимается. Это выглядело бы примерно так (непротестированное).

field = clipboard.get_selection()
field = field.lower()
clipboard.fill_selection(field)
keyboard.send_keys("<ctrl>+v")

который получает выделенный текст в переменную, преобразовывает его в нижний регистр, откладывает его в буфере обмена и затем вставляет его назад в текущий выбор, куда он первоначально прибыл из. (Если бы Ваше окно приложения является терминалом, то необходимо было бы использовать "<ctrl>+<shift>+v" вместо этого.)

При выполнении его этот путь имеет несколько преимуществ: возможно легче сделать, чем изменение Вашей клавиатуры. Можно легко изменить горячую клавишу в AutoKey GUI. Можно определить фильтр окна, таким образом, горячая клавиша только работает в окнах по Вашему выбору. Можно включить и выключить эту функциональность по желанию. И, так как Вы имеете всю власть Python в Вашем распоряжении, Вы делаете почти что-либо еще, о чем можно думать.

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

Примечание: Debian и производные дистрибутивы (Ubuntu...) в настоящее время обеспечивают очень старую версию AutoKey. Это фиксируется в тестировании Debian и будет зафиксировано в Ubuntu 20.04. На данный момент можно легко установить пакет с этими инструкциями.

Для помощи посетите наш форум поддержки.

4
ответ дан 17 March 2020 в 00:09

Я соглашаюсь с Joe, что AutoKey идеально подошел бы для того, что Вы хотите сделать. Я думал, что буду включать другой сценарий в качестве примера. Это строковое форматирование использования, чтобы также изменить выделенный текст на нижний регистр (у Вас мог быть он, делает то, что Вы любите вместо того, чтобы то, что он изменить случай):

selection = clipboard.get_selection()
keyboard.send_keys("%s" % selection.lower())
2
ответ дан 17 March 2020 в 00:09

Другие вопросы по тегам:

Похожие вопросы: