
Как вставить из ПЕРВИЧНОГО выделения (например, выделенного мышью текста) с помощью сочетания клавиш? Shift+Insert
непоследовательно вставляет из ПЕРВИЧНОГО выделения или БУФЕРА ОБМЕНА в зависимости от приложения.
Фон:
Ctrl+C
Копирует выделенный текст в БУФЕР ОБМЕНА, а выделение мышью копирует в ПЕРВИЧНЫЙ. Вставить из БУФЕРА ОБМЕНА с помощью Ctrl+V
и вставить из ПЕРВИЧНОГО с помощью mouse-middle-click
.
В эмуляторе терминала (gnome-terminal) вставьте из БУФЕРА ОБМЕНА с помощью Ctrl+Shift+V
. (Вставьте из ПЕРВИЧНОГО с помощью mouse-middle-click
still.)
Я хочу вставить из PRIMARY с помощью сочетания клавиш. В gnome-terminal это Shift+Insert
, но в gedit и Firefox Shift+Insert
вставляет из БУФЕРА ОБМЕНА. Мне нужна комбинация клавиш, которая последовательно вставляет из БУФЕРА ОБМЕНА, и другая комбинация клавиш, которая последовательно вставляет из PRIMARY.
Я использую Ubuntu 14.04 с xmonad и Firefox 34.0.
решение1
Все приложения, которые вы упомянули,gtk+
приложениями, поэтому ответить на них довольно легко.Почему... Потому что ввсе gtk+
Программы (Кроме одного), Shift+ Insertвставляет из БУФЕРА ОБМЕНА - т.е. эквивалентно Ctrl+ V. Сочетание клавиш жестко закодировано вgtkentry.c
(строка 2022) иgtktextview.c
(строка 1819):
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
"paste-clipboard", 0);
Это также задокументировано вСправочное руководство GTK+ 3подGtkEntry
:
The “paste-clipboard” signal
void
user_function (GtkEntry *entry,
gpointer user_data)
The ::paste-clipboard signal is a keybinding signal which gets emitted
to paste the contents of the clipboard into the text view.
The default bindings for this signal are Ctrl-v and Shift-Insert.
Насколько мне известно, это было сделано для согласованности с другими DE (см. привязки KDE
клавиш Qt
вQTextEdit Class
) и ОС Windows 1 .
только исключениеявляется gnome-terminal
. После долгих дебатов разработчики решили (для согласованности с другими терминалами), что в gnome-terminal
+ Shiftследует Insertвставлять из ПЕРВИЧНОГО, а Ctrl++ Shiftследует Vвставлять из БУФЕРА ОБМЕНА (хотя у вас есть возможность настроить некоторые сочетания клавиш).
ОтносительноКаквставить выделенный фрагмент с помощью сочетания клавиш... простого способа нет.
Самый простой способ — назначить ярлык для скрипта, который запускается xdotool click 2
(имитирует нажатие средней кнопки мыши). Хотя это работает (и должно работать со всеми или большинством DE и наборов инструментов), это работает только в том случае, если курсор мыши находится над полем ввода текста, в противном случае это не сработает.
Другой относительно простой способ — через Gnome Accessibility, если он доступен в вашей системе. Он также требует наличия цифровой клавиатуры. Перейдите в Universal Access
>> Pointing & Clicking
и включите Mouse Keys
. Убедитесь, NumLock
что он выключен. Затем вы можете использовать клавиши цифровой клавиатуры для перемещения курсора и щелчка. Чтобы имитировать щелчок средней кнопкой мыши, нажмите (и отпустите) *(звездочка), затем нажмите 5(вот краткийгид). Это решение, кажется, всегда работает в gtk+
среде. Недостатком является то, что оно требует Gnome Accessibility
и цифровой клавиатуры. Кроме того, вы не можете настроить сочетание клавиш.
Интересное решение было предложеноgnome-bugzilla (ошибка 643391). (Обновление 2018: проблема перемещеназдесь.) Требуется исправление некоторых исходных файлов и настройка параметров конфигурации ~/.config/gtk-3.0/gtk.css
(или ~/.gtkrc-2.0
для gtk+
2 приложений). Я не пробовал это лично, но отзывы положительные.
В идеале вы бы исправили исходные файлы и определили "paste-selection"
сигнал, а затем связали бы Shift+ Insertс "paste-selection"
вместо "paste-clipboard"
. Код Энди (прикрепленный в отчете об ошибке, ссылка на который приведена выше) мог бы послужить руководством о том, как это сделать. Даже в этом случае это повлияло бы только на gtk+
приложения (я не KDE/Qt
парень, поэтому понятия не имею, как изменить Qt
поведение приложений).
1: (не говоря уже о CUA от IBM)
решение2
Извините: я не могу написать комментарий из-за репутации, поэтому пишу в качестве ответа. Это не прямое решение, но оно мне помогает...
Вы можете использовать комбинацию информации:
Измените тему GTK и разрешите привязку клавиш по своему усмотрению..
Пример переопределения привязок клавиш gtk и отмены привязки.
Автоматический запуск autocutsel с параметрами по умолчанию для синхронизации БУФЕРА ОБМЕНА с CUTBUFFER(это необязательно). Эта ссылка предназначена только для получения информации о проблеме.
Используйте clipman для графического доступа к нескольким буферам(ПЕРВИЧНЫЙ и БУФЕР ОБМЕНА), без выбора автоматической синхронизации (двунаправленная автоматическая синхронизация делает ошибку).
Поэтому я просто выбираю тему gtk и изменяю CSS темы, чтобы назначить необходимые сочетания клавиш для сигналов копирования в буфер обмена (Ctrl+Insert) и вставки в буфер обмена (Shift+Insert).