Создайте пользовательский ярлык, который печатает содержимое буфера обмена

Я хочу смоделировать ввод с клавиатуры, чтобы я мог «вставить» содержимое моего буфера обмена в приложения, которые этого не разрешают (например, удаленный KVM). Прямо сейчас я пытаюсь использовать xdotool и xclip:

xdotool type "$(xclip -o)"

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

Linux Sendkeys

Если я использую эту горячую клавишу, неожиданное поведение происходит с любым окном, имеющим фокус. например мой размер окна терминала уменьшается (на самом деле это несколько забавно). Аналогичные результаты возникают, если я сохраняю его как скрипт и вызываю скрипт, или если я инкапсулирую команду с помощью sh -c. Как я могу на практике использовать мощную команду xdotool type?

6
задан 18 October 2014 в 08:22

4 ответа

У вас есть две проблемы с этой командой. Во-первых, вам нужно убедиться, что мета-клавиши в привязке не нажимаются при попытке запустить команду. Во-вторых, по умолчанию xclip выбирает буфер XA_Primary, а не XA_CLIPBOARD. Поэтому вы должны передать clipboard в качестве параметра выбора для xclip. Измените команду горячей клавиши на следующее:

sh -c 'sleep 0.5; xdotool type "$(xclip -o -selection clipboard)"'
0
ответ дан 18 October 2014 в 08:22

xdotool создает нажатия клавиш, и он не отпускает клавишу Ctrl для вас ... Самое простое решение - добавить задержку, например sleep 0.5, подождать полсекунды и уверен, что вы отпустите Ctrl достаточно быстро.

0
ответ дан 18 October 2014 в 08:22

sh -c 'xdotool type --clearmodifiers - "$ (xclip -o -selection clipboard)"'

"- clearmodifiers" избавляется от CTRL / ALT / Shift и т. Д., Возможно, означая сон не требуется

«-» означает конец параметров xdotool, так что если вставленный тест начинается с - xdotool не будет пытаться интерпретировать его как параметр

0
ответ дан 18 October 2014 в 08:22

На самом деле есть два буфера, доступных с помощью Ctrl+V (копирование-вставка в буфер обмена) и Shift+Insert (вставка метки мыши и вставка по среднему щелчку мыши).

Если у вас есть сеансы, правильно подключенные к общему буферу обмена, то один из двух должен работать автоматически, нет?

0
ответ дан 18 October 2014 в 08:22

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

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