Чому Shift + Insert вставляє з CLIPBOARD в одних додатках і ПЕРШИЙ в інших?


29

Як вставити з вибору PRIMARY (наприклад, текст, вибраний мишею) за допомогою комбінації клавіш? Shift+Insertнепослідовно вставляє пасти з PRIMARY або CLIPBOARD, залежно від програми.

Фон:

Ctrl+Cкопіює вибраний текст у CLIPBOARD, тоді як вибір миші копіює PRIMARY. Вставити з CLIPBOARD з Ctrl+Vі вставити з PRIMARY з mouse-middle-click.

У термінальний емулятор (gnome-terminal) вставте CLIPBOARD з Ctrl+Shift+V. (Вставити з PRIMARY з mouse-middle-clickнерухомим.)

Я хочу вставити з PRIMARY за допомогою комбінації клавіш. У gnome-терміналі це Shift+Insert, але в gedit та Firefox - Shift+Insertпасти із CLIPBOARD. Я хочу ярлик, який послідовно вставляє з CLIPBOARD, і інший ярлик, який послідовно вставляє з PRIMARY.

Я запускаю Ubuntu 14.04 з xmonad та Firefox 34.0

Відповіді:


30

Усі згадані вами gtk+програми - це додатки, тому відповісти на це питання досить просто. Тому що ... У всіх gtk+ додатках ( крім одного ) Shift+ Insertвставки CLIPBOARD - тобто еквівалентні Ctrl+ V. Ярлик кодується в gtkentry.cрядку (рядок 2022) та gtktextview.c(рядок 1506):

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 OS 1 . Єдиним винятком є . Після тривалих дебатів розробники вирішили (на узгодження з іншими терміналами), що в , + слід вставити з PRIMARY і + + слід вставити з CLIPBOARD (хоча у вас є варіанти налаштувати деякі ярлики).
gnome-terminalgnome-terminalShiftInsertCtrlShiftV


Щодо того, як вставити вибір за допомогою комбінації клавіш ... прямого шляху немає.

Найпростіший спосіб - призначити ярлик для запущеного сценарію xdotool click 2(імітує натискання середньої кнопки миші). Хоча це працює (і він повинен працювати з усіма або більшістю DE та наборів інструментів), він працює лише в тому випадку, якщо курсор миші насправді знаходиться над полем для введення тексту, інакше він не працює.

Ще один порівняно простий спосіб - через доступність Gnome, якщо він доступний у вашій системі. Для цього також потрібна наявність нумерації. Перейдіть до Universal Access>> Pointing & Clickingта увімкніть Mouse Keys. Переконайтесь, що NumLockвимкнено. Потім ви можете використовувати клавіші numpad для переміщення курсору та клацання. Щоб імітувати середню кнопку миші, натисніть (і відпустіть) *(зірочку), а потім натисніть 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
Дякую за пояснення. Шкода, що немає кращого рішення, я дуже пропускаю послідовну комбінацію клавіш для ПОЧАТКОВОГО. Емуляція миші не дуже допомагає, оскільки суть ярлика полягає в тому, щоб уникнути необхідності мати справу з мишею.
didi_X8

1

Мені шкода: я не можу написати коментар через репутацію, тому пишу як відповідь. Це не пряме рішення, але це допомагає мені ...

Ви можете використовувати комбінацію інформації:

  1. Відредагуйте тему gtk та дозвольте прив’язку клавіш за вашим бажанням .

  2. Приклад створення gtk 3.0 прив'язки клавіш у css теми .

  3. Приклад переосмислення gtk прив'язки клавіш та відключення .

  4. Приклад модифікації прив'язки клавіш для gnome-terminal

  5. Автоматичний запуск автокрутки з параметрами за замовчуванням для синхронізації CLIPBOARD з CUTBUFFER (це необов'язково). Це посилання призначене лише для інформації про проблему.

  6. Використовуйте clipman для доступу до декількох буферів (PRIMARY і CLIPBOARD), без автоматичного вибору синхронізації (двонаправлена ​​автоматична синхронізація робить неправильну).

Тому я просто вибираю gtk тему і змінюю CSS теми до потрібних сполучень клавіш для копіювання буфера обміну (Ctrl + Insert) та вставлення буфера обміну (Shift + Insert).


1
Це може стати початком хорошої відповіді, якщо ви візьмете вміст цих посилань і об'єднаєте інформацію. На даний момент це лише колекція посилань, і це ставить під загрозу їх видалення. Будь ласка, заповніть інформацію, щоб вона була безпосередньо у відповіді, і я впевнений, що ви отримаєте резюме (тим самим надаючи достатньо репутації для коментарів). Спасибі!
Toby Speight
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.