вставка x выделения (не содержимого буфера обмена) с помощью клавиатуры

<p>я хотел бы иметь возможность вставить выделение x с помощью клавиатуры. в настоящее время я должен использовать среднюю кнопку мыши, чтобы сделать это.</p><p>я понимаю, что подделать нажатие средней кнопки мыши довольно легко, но такое решение также потребовало бы перемещения указателя мыши в положение курсора текста.</p><p>есть лучший способ сделать это?</p>

<p>в некоторых настройках linux по умолчанию, <kbd>shift</kbd>+<kbd>insert</kbd> будет выполнять <code>x-selection-paste</code>. как вы заметили, это заметно отличается от <code>x-clipboard-paste</code> команда, привязка к которой часто зависит от приложения. если это не сработает, вот пара других ключей:</p><ul> <li> <p><kbd>ctrl</kbd>+<kbd>v</kbd></p> </li> <li> <p><kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>v</kbd></p> </li> <li> <p><kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>insert</kbd></p> </li> </ul><p>нет идти? ваша среда рабочего стола или диспетчер окон, вероятно, не настроили их, и это сложно, потому что даже под знаменем одного de или wm каждый инструментарий (например, gtk, qt и т.д.) может иметь разные привязки по умолчанию. некоторые программы (например, <code>gvim</code>) даже имеют свои собственные внутренние регистры копирования, которые не обязательно синхронизируются с графической средой, в которой они работают. в довершение, даже когда программа использует систему x-буфера обмена, x имеет несколько систем на выбор. два самых основных - это буфер выбора, который всегда имеет то, что было выбрано последним (за исключением случаев, когда это не так), и буфер копирования, в который обычно нужно специально копировать вещи. чтобы сделать явное копирование в последнюю систему, вы можете попробовать любой из них для размера:</p><ul> <li> <p><kbd>ctrl</kbd>+<kbd>c</kbd></p> </li> <li> <p><kbd>shift</kbd>+<kbd>ctrl</kbd>+<kbd>c</kbd></p> </li> <li> <p><kbd>ctrl</kbd>+<kbd>insert</kbd></p> </li> </ul><hr><p>если ничего из этого не работает для вас волшебным образом, вы можете пойти двумя путями.</p><ol> <li> <p><em> для этого есть приложение! </em> ™ используйте одну из различных программ менеджера буфера обмена, чтобы справиться с этим за вас. наиболее популярными являются <a href="http://parcellite.sourceforge.net/">parcellite</a> и <a href="https://launchpad.net/glippy">glippy</a> , но вы можете проверить <a href="http://alternativeto.net/software/glippy/?platform=linux">другие альтернативы здесь</a> . смотрите также это <a href="https://unix.stackexchange.com/q/15497/1925">вопрос о продвинутых менеджерах буфера обмена</a> </p> </li> <li> <p>взломай это сам.</p> </li> </ol><h3>допустим, вы хотите взломать его.</h3><p>если не считать написания собственного кода и подключения к x api, хакерские инструменты для работы - это пара небольших утилит командной строки, которые дают вам представление о x. просто маленькое окошко, весь вид слишком пугающий ,.</p><p>первый инструмент - <code>xsel</code>. этот маленький работник будет выплевывать то, что находится в буфере выбора x в любой момент времени.</p><p>теперь вам нужно включить это в свою программу. для этого есть два варианта. одним из них является <code>xdotool</code>, который позволяет имитировать отправку событий в систему ввода xorg. вы можете использовать его <em> метод типа </em> как <code>xdotool type foo\_bar</code> для имитации ввода 'foo\_bar' в курсор. в сочетании вы получите что-то вроде этого:</p><pre><code>$ xdotool type $(xsel) </code></pre><p>другой - <code>xvkbd</code>, который отправляет события клавиатуры из нижней подсистемы. вы можете направить нажатия клавиш на stdin. в сочетании с <code>xsel</code> вы получите что-то вроде этого:</p><pre><code>$ xsel | xvkbd -xsendevent -file - отлично. теперь для этого связывания клавиш для запуска этого материала. если вы запускаете gnome-2, вы можете добавить собственный ярлык в  система -> настройки -> сочетания клавиш . если вы используете другой de или wm, этот размер оставляется на усмотрение читателя.последнее замечание заключается в том, что при привязке команд к сочетаниям клавиш часто необходимо иметь только одну команду, а не две команды, связанные с конвейером, как мы использовали выше. это можно сделать, вызвав команду piped в виде командной строки argumetn для новой оболочки, например:sh -c 'xsel | xvkbd -xsendevent -file -' sh -c 'xdotool type "$(xsel)"' </code></pre>

<p>по всей видимости <kbd>shift</kbd>+<kbd>insert</kbd> может не работать должным образом на некоторых установках gtk 3, по крайней мере на freebsd. проблема описывается как:</p><blockquote> <p>shift-insert не вставляет первичный выбор. вместо этого он должен вставить буфер обмена (для которого уже используется control-v). следовательно, нет единственного способа ввода первичного выделения с клавиатуры. нужно перетащить мышью туда и средний щелчок. это делает взаимодействие между терминалами и gtk неудобным.</p> </blockquote><p>недавний (на момент написания) отчет об ошибке и патч доступны:</p><p> <a href="http://www.freebsd.org/cgi/query-pr.cgi?pr=188264">http://www.freebsd.org/cgi/query-pr.cgi?pr=188264</a> </p>

<pre><code>xdotool click 2 </code></pre><p>это имитирует щелчок кнопки мыши напрямую и не требует использования <code>xsel</code>/<code>xdotool type ...</code>.</p>

<p>я использую ubuntu 12 и у меня возникла проблема с вставкой текста из xterm в gedit (и любое другое приложение). кроме того, я использую ноутбук без средней кнопки мыши, как и многие люди (для пользователей linux без средних кнопок нет пощады буфера обмена, и нет: щелчок правой кнопкой мыши + left\_click не работает в качестве замены).</p><p>хотя я думаю, что метод "xsel | xvkbd -xsendevent -file -" довольно крутой. я обнаружил, что самым простым решением было запустить предустановленный "gnome-терминал" вместо "xterminal". "gnome-терминал" поддерживает команду копирования в буфер обмена, щелкнув правой кнопкой мыши. затем я мог бы "edit menu-> paste" в gedit или использовать shift-insert. "gnome-терминал" был предустановлен с ubuntu 12. другие установки debian/gnome должны быть в состоянии установить его через:</p><pre><code>sudo apt-get install gnome-terminal </code></pre><p>в ubuntu добавьте его в левую панель запуска, нажав кнопку "dash home" в верхней части панели запуска. в появившемся окне поиска введите терминал. вы можете перетащить значок "терминал" на панель запуска.</p>