일부 응용프로그램에서는 Shift+Insert가 CLIPBOARD에서 붙여넣고 다른 응용프로그램에서는 PRIMARY에서 붙여넣는 이유는 무엇입니까?

일부 응용프로그램에서는 Shift+Insert가 CLIPBOARD에서 붙여넣고 다른 응용프로그램에서는 PRIMARY에서 붙여넣는 이유는 무엇입니까?

키보드 단축키를 사용하여 기본 선택 항목(예: 마우스로 선택한 텍스트)에서 붙여넣으려면 어떻게 해야 합니까? Shift+Insert응용프로그램에 따라 PRIMARY 또는 CLIPBOARD에서 일관되지 않게 붙여넣습니다.

배경:

Ctrl+C마우스 선택이 PRIMARY에 복사되는 동안 선택한 텍스트가 CLIPBOARD에 복사됩니다. 를 사용하여 CLIPBOARD에서 붙여넣고 Ctrl+V를 사용하여 PRIMARY에서 붙여넣습니다 mouse-middle-click.

터미널 에뮬레이터(gnome-terminal)에서 Ctrl+Shift+V. (정지와 함께 PRIMARY의 붙여넣기 mouse-middle-click)

키보드 단축키를 사용하여 PRIMARY에서 붙여넣고 싶습니다. gnome-terminal에서는 이지만 Shift+Insertgedit 및 Firefox에서는 Shift+InsertCLIPBOARD에서 붙여넣습니다. CLIPBOARD에서 일관되게 붙여넣는 단축키와 PRIMARY에서 일관되게 붙여넣는 다른 단축키를 원합니다.

xmonad 및 Firefox 34.0과 함께 Ubuntu 14.04를 실행하고 있습니다.

답변1

말씀하신 앱은 모두 gtk+앱이므로 답변이 매우 쉽습니다.... 왜냐면모두 gtk+앱(하나만 빼고), Shift+ CLIPBOARD에서 붙여넣기 - 즉, + Insert와 동일합니다 . 바로가기가 하드코딩되어 있습니다.CtrlVgtkentry.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와의 일관성을 위해 수행되었습니다( KDEQt키 바인딩 참조).QTextEdit Class) 및 Windows OS 1 .
그만큼유일한 예외이다 gnome-terminal. 오랜 논쟁 끝에 개발자들은 (다른 터미널과의 일관성을 위해) 에서 +는 PRIMARY에서 붙여넣어야 하고 ++는 CLIPBOARD에서 붙여넣어야 한다고 결정했습니다 gnome-terminal( Shift일부 Insert단축키 CtrlShift사용자 V정의할 수 있는 옵션이 있음에도 불구하고).


에 관해서어떻게키보드 단축키로 선택 항목을 붙여넣으시나요... 간단한 방법은 없습니다.

가장 쉬운 방법은 실행되는 스크립트에 바로가기를 할당하는 것입니다 xdotool click 2(마우스 가운데 버튼 클릭을 시뮬레이션). 이것이 작동하는 동안(모든 또는 대부분의 DE 및 툴킷에서 작동해야 함) 마우스 커서가 실제로 텍스트 입력 상자 위에 있는 경우에만 작동하고 그렇지 않으면 실패합니다.

상대적으로 쉬운 또 다른 방법은 시스템에서 사용 가능한 경우 Gnome 접근성을 이용하는 것입니다. 또한 숫자 패드가 필요합니다. 이동Universal Access >>Pointing & Clicking 활성화합니다 Mouse Keys. NumLock꺼져 있는지 확인하세요 . 그런 다음 숫자 패드 키를 사용하여 커서를 이동하고 클릭할 수 있습니다. 마우스 가운데 버튼 클릭을 시뮬레이션하려면 *별표를 누른 후 놓습니다 5(여기에 짧은 설명이 있습니다).가이드). 이 솔루션은 항상 다음과 같은 상황에서 작동하는 것 같습니다.gtk+ 환경에서 작동하는 것 같습니다. 단점은 Gnome Accessibility숫자 패드가 필요하다는 것입니다. 또한 바로가기를 사용자 정의할 수 없습니다.

흥미로운 해결책이 제안되었습니다.gnome-bugzilla(버그 643391). (업데이트 2018: 이제 문제가 이동되었습니다.여기.) 일부 소스 파일을 패치하고 ~/.config/gtk-3.0/gtk.css(또는 2개의 앱 ~/.gtkrc-2.0에 대해 gtk+) 구성 옵션을 설정해야 합니다. 직접 사용해본 적은 없지만 반응은 긍정적입니다.

이상적으로는 소스 파일을 패치하고 "paste-selection"신호를 정의한 다음 Shift+ 대신 Insert에 바인딩하는 것입니다 . Andy의 코드(위에 링크된 버그 보고서에 첨부됨)는 이를 수행하는 방법에 대한 가이드 역할을 할 수 있습니다. 그렇더라도 이는 앱에만 영향을 미칩니다. (저는 남자가 아니기 때문에 앱 동작을 변경하는 방법을 모릅니다 .)"paste-selection""paste-clipboard"gtk+KDE/QtQt


1: (IBM의 CUA는 말할 것도 없고)

답변2

죄송합니다. 평판이 좋지 않아 댓글을 쓸 수 없어서 답변으로 씁니다. 직접적인 해결책은 아니지만 도움이 됩니다...

다음과 같은 정보 조합을 ​​사용할 수 있습니다.

  1. gtk 테마를 편집하고 원하는 대로 키 바인딩을 허용하세요..

  2. 테마의 CSS에서 gtk 3.0 키바인딩을 생성하는 예.

  3. gtk 키 바인딩 재정의 및 바인딩 해제의 예.

  4. gnome-terminal의 키 바인딩 수정 예

  5. CLIPBOARD를 CUTBUFFER에 동기화하기 위한 기본 옵션을 사용하여 자동 절단 자동 시작(이것은 선택 사항입니다). 이 링크는 문제에 대한 정보만을 제공합니다.

  6. 여러 버퍼에 GUI에 액세스하려면 Clipman을 사용하세요.(PRIMARY 및 CLIPBOARD), 자동 동기화 선택 없음(양방향 자동 동기화가 잘못됨)

그래서 gtk 테마를 선택하고 테마 CSS를 클립보드 복사(Ctrl+Insert) 및 클립보드 붙여넣기(Shift+Insert) 신호에 필요한 키 바인딩으로 수정했습니다.

관련 정보