Сочетание клавиш для вставки основного выделения

Существуют ли стандартные или обычные сочетания клавиш для вставки основного выделения?

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

Если нет ничего общепринятого или если оно специфично для конкретного приложения и не поддерживается многими, есть ли обходной путь, чтобы это работало глобально? (Или, по крайней мере, в других приложениях.)

40
задан 27 December 2010 в 16:51

7 ответов

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

sh -c 'xsel | xvkbd -xsendevent -file - 2>/dev/null'

xvkbd -text использует несколько последовательностей обратной косой черты, поэтому вместо танца с экранированием -file работает. xvkbd также выводит некоторый текст с предупреждением о модификаторах, но он, похоже, не имеет отношения к этому использованию (но я не хотел видеть его в ~/.xsession-errors).

Я связал это с ярлыком, используя Система> Предпочтения> Сочетания клавиш .

Обратите внимание, что вам нужно установить пакеты xsel и xvkbd:

sudo apt-get install xsel xvkbd
0
ответ дан 27 December 2010 в 16:51

Вы можете получить это при совместном использовании программ xdotool (, чтобы установить ) и xsel (, чтобы установить . ).

xdotool может имитировать ввод текста в окне; xsel выводит содержимое ПЕРВИЧНОГО выбора (по умолчанию); следующая оболочка с одним вкладышем сделает свое дело:

 xdotool type `xsel`

Чтобы связать это с любой клавишей, используя пункт меню Система-> Настройки-> Сочетания клавиш , необходимо обернуть его вызов оболочки:

 sh -c 'xdotool type --clearmodifiers -- "`xsel`"'

Печатание в xdotool не будет работать с некоторыми программами; см. примечания в xdotool документации .

0
ответ дан 27 December 2010 в 16:51

У меня были проблемы с решениями, которые имитируют вставку выделения PRIMARY, поэтому вместо этого я добавил ярлык, который копирует выбор PRIMARY в CLIPBOARD ] . После использования моего ярлыка я вставляю CLIPBOARD обычным способом, с Ctrl+V, Ctrl+Shift+V или Shift+Insert, в зависимости от приложения.

Команда для копирования выбора PRIMARY в CLIPBOARD -

sh -c 'xsel --output --primary | xsel --input --cliboard'

, который я связываю с Ctrl+Insert (произвольный выбор) в настройках ярлыка Gnome в System Settings -> Devices -> Keyboard

Резюме проблем с другими решениями: Я попробовал решения xsel | xvkbd ... и xsel | xdotool ..., но обнаружил, что они не очень хорошо работают, потому что они имитируют типизацию и PRIMARY ] выбор символа за символом, который не совпадает с , вставляя его с помощью среднего щелчка. Проблемы включают: есть большая задержка, в то время как большой выбор вставляется по одному символу за раз; если вы хотите отменить «вставку», вы должны отменить ее посимвольно, что медленно; если вы используете «мертвые ключи», то все портится, например, «склеивание» "e производит ë; xvkdb неправильно обрабатывает символы Юникода.

Предупреждение: Это решение перезаписывает существующее содержимое CLIPBOARD, но ОП запросил решения, которые сохраняют существующее содержимое CLIPBOARD.

0
ответ дан 27 December 2010 в 16:51

У меня была та же проблема, и поиск в интернете мне не сильно помог. Проблема, имитирующая щелчок 2, раздражает, как упоминалось выше.

Проблема с предложенными выше xdotool и xsel заключается в том, что когда xdotool начинает «печатать», вы все еще нажимаете другую клавишу. Это не всегда приводит к какому-либо результату. Например, если вы связываете его с клавишей «вставить», то xdotool отправляет клавиши, в то время как ваш палец нажимает клавишу «вставить», которая ничего не вызывает.

Ниже приведен обходной путь, чтобы связать его с нажатием клавиши:

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

это не идеально, но работает. Теперь у вас есть 0,3 секунды, чтобы завершить выбор нажатия клавиши (и клавиши вверх).

0
ответ дан 27 December 2010 в 16:51

Вызов xdotool click --clearmodifiers 2 имитирует нажатие средней кнопки мыши. Это работает намного лучше, чем использование xsel (по крайней мере, для меня). Хотя вам нужно расположить мышь перед тем, как печатать ...

0
ответ дан 27 December 2010 в 16:51

Я искал ответ на этот же вопрос и нашел этот ответ , в котором говорится, что Shift + Insert работает для вставки первичный отбор. Я работаю на меня. Simpler.

0
ответ дан 27 December 2010 в 16:51

Другое предложение xdotool, работающее в Debian Jessie 8.7 (январь 2017 г.):

xdotool click --delay 0 --clearmodifiers 2
  • xdotool обрабатывает многобайтовые строки (т. Е. UTF-8), в отличие от xvkbd.
  • xdotool click имитирует фактический щелчок, поэтому вам не нужно нажимать на себя, чтобы вставить в положение мыши, как если бы вы использовали xdotool type или xvkbd.

Единственная проблема заключается в том, что --clearmodifiers будет «нажимать» обратно любой модификатор (Ctrl / Alt / Shift / Meta), который вы используете после имитации щелчка. Даже с --delay 0 (вместо 12 мс) выполнение команды занимает немного времени. Если вы отпустите клавиши до того, как они закончатся, ваши модификаторы будут снова «нажаты» и останутся там до тех пор, пока вы не нажмете и не отпустите актуальную клавишу еще раз.

Так что с этим вы должны быть немного «медленными» (50 мс?), Чтобы освободить ваши модификаторы, если вы их используете.

Вы можете проверить это, настроив сочетание клавиш, используя его в текстовом редакторе, а затем нажав клавишу (например, a или стрелку). Буква должна появиться в нижнем регистре. Если что-то происходит, вы слишком быстры, и модификатор застрял (например, Shift, если он написан заглавными буквами, Ctrl, если вы выбрали весь текст, Alt, если вы открыли меню). Нажмите и отпустите ваши модификаторы снова, чтобы сбросить их.

Если вы слишком быстры, вы можете воспользоваться предложением ilkerk:

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

Затем вы должны выпустить их за меньше , чем 300 мс, и подождать полсекунды для текста появляться.

Кроме того, использование xdotool type означает, что вы вставляете текст, как если бы вы печатали, в позиции курсора текста, а не в указателе мыши. Вы можете изменить его на click, если предпочитаете обычное поведение среднего щелчка.

(сделал этот пост, чтобы новичкам не приходилось снова разбирать кусочки головоломки, разбросанные по комментариям)

0
ответ дан 27 December 2010 в 16:51

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

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