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

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

키보드 단축키를 사용하여 기본 선택 항목(예: 마우스로 선택한 텍스트)에서 붙여넣는 방법은 무엇입니까? Shift+InsertPRIMARY 또는 CLIPBOARD에서 붙여넣는 경우 응용 프로그램에 따라 일관성이 없습니다.

배경:

Ctrl+C선택한 텍스트를 클립보드에 복사하고, 마우스 선택 항목도 기본 텍스트에 복사합니다. CLIPBOARD 에서 붙여넣고 Ctrl+VPRIMARY 에서 붙여넣습니다 mouse-middle-click.

터미널 에뮬레이터(gnome-terminal)에서 CLIPBOARD에서 붙여넣습니다 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+ 클립보드에서 붙여넣기 - 즉, + 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와의 일관성을 위해 수행됩니다 KDE(QtQTextEdit Class ) 및 Windows 운영 체제 1.
유일한 예외gnome-terminal. 오랜 논쟁 끝에 개발자들은 (다른 터미널과의 일관성을 유지하기 위해) gnome-terminal+ 는 PRIMARY에서 붙여넣어야 하고 Shift++ 는 CLIPBOARD에서 붙여넣어야 한다고 결정했습니다 (일부 단축키를 사용자 정의하도록 선택할 수 있음).InsertCtrlShiftV


에 관해서는어떻게선택 항목을 붙여넣기 위해 키보드 단축키를 사용하시나요? 쉬운 방법은 없습니다.

가장 쉬운 방법은 실행 중인 스크립트에 바로가기를 할당하는 것입니다 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(또는 ~/.gtkrc-2.02개의 gtk+응용 프로그램)에서 구성 옵션을 설정해야 합니다. 개인적으로 사용해본 적은 없지만 반응은 긍정적입니다.

이상적으로는 소스 파일을 패치하고 "paste-selection"신호를 정의한 다음 Shift+를 대신 Insert에 바인딩할 수 있습니다(위에 링크된 버그 보고서에 첨부됨). 이 작업을 수행하는 방법에 대한 가이드 역할을 할 수 있습니다. 그럼에도 불구하고 이는 애플리케이션에만 영향을 미칩니다(저는 그런 사람이 아니기 때문에 애플리케이션의 동작을 변경하는 방법을 모릅니다 )."paste-selection""paste-clipboard"gtk+KDE/QtQt


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

답변2

죄송합니다. 평판 문제로 댓글을 쓸 수 없어서 답변으로 글을 남깁니다. 이것은 직접적인 해결책은 아니지만 도움이되었습니다 ...

정보 조합을 ​​사용할 수 있습니다.

  1. gtk 테마를 편집하고 필요한 경우 키 바인딩을 허용하세요..

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

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

  4. gnome 터미널 키 바인딩 수정의 예

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

  6. Clipman GUI를 사용하여 여러 버퍼에 액세스(기본 및 클립보드), 자동 동기화 옵션 없음(양방향 자동 동기화 오류 발생)

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

관련 정보