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


29

단축키로 PRIMARY 선택 (예 : 마우스 선택 텍스트)에서 붙여 넣기를 어떻게합니까? Shift+Insert응용 프로그램에 따라 PRIMARY 또는 CLIPBOARD에서 일관되지 않은 붙여 넣기.

배경:

Ctrl+C마우스 선택은 기본으로 복사하는 동안 선택한 텍스트를 CLIPBOARD로 복사합니다. 클립 보드에서 붙여 넣기 Ctrl+V와와 PRIMARY에서 붙여 넣습니다 mouse-middle-click.

터미널 에뮬레이터 (그놈 터미널)에서 CLIPBOARD에서로 붙여 넣습니다 Ctrl+Shift+V. (기본으로 PRIMARY에서 붙여 넣기 mouse-middle-click)

키보드 단축키로 PRIMARY에서 붙여 넣기를 원합니다. 그놈 터미널에서 이것은 Shift+Insert이지만 gedit와 Firefox에서는 Shift+InsertCLIPBOARD에서 붙여 넣습니다. CLIPBOARD에서 일관되게 붙여 넣는 바로 가기와 PRIMARY에서 일관되게 붙여 넣는 다른 바로 가기가 필요합니다.

xmonad 및 Firefox 34.0과 함께 Ubuntu 14.04를 실행 중입니다.

답변:


30

언급 한 모든 응용 프로그램은 gtk+응용 프로그램이므로 대답하기가 쉽습니다. ... 모든 gtk+ 응용 프로그램 ( 하나 제외 )에서 Shift+ InsertCLIPBOARD의 + 붙여 넣기-즉 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 Reference Manual의 아래에 문서화되어 있습니다.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 . 유일한 예외는 있다 . 긴 논의 후, 그 DEVS에서 (다른 단말과 일관성) 결정 , + PRIMARY로부터 붙여한다 +
gnome-terminalgnome-terminalShiftInsertCtrlShift +는 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". Andy의 코드 (위에 링크 된 버그 보고서에 첨부)는이를 수행하는 방법에 대한 지침이 될 수 있습니다. 그럼에도 불구하고 gtk+앱 에만 영향을 미칩니다 (나는 KDE/Qt사람이 아니므로 Qt앱 동작 을 변경하는 방법을 모릅니다 ).


1 : (IBM의 CUA는 말할 것도 없습니다)


2
그 설명에 감사드립니다. 더 나은 해결책이없는 것은 유감입니다. PRIMARY의 일관된 키보드 단축키가 많이 없습니다. 바로 가기의 요점은 마우스를 다루지 않아도되는 것이므로 마우스 에뮬레이션 해결 방법은 큰 도움이되지 않습니다.
didi_X8

1

죄송합니다 : 평판 때문에 댓글을 작성할 수 없으므로 답변으로 작성하십시오. 직접적인 해결책은 아니지만 도움이됩니다 ...

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

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

  2. css of theme에서 gtk 3.0 키 바인딩을 작성하는 예제 .

  3. gtk 키 바인딩을 오버라이드하고 unbind하는 예제 .

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

  5. CLIPBOARD를 CUTBUFFER로 동기화하기위한 기본 옵션으로 자동 자르기 자동 시작 (선택 사항). 이 링크는 문제에 대한 정보입니다.

  6. 자동 동기화를 선택하지 않고 clipman을 사용하여 여러 버퍼 (PRIMARY 및 CLIPBOARD)에 GUI 액세스합니다 (양방향 자동 동기화가 잘못됨).

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


1
링크의 내용을 취하고 정보를 결합하면 좋은 답변의 시작이 될 수 있습니다. 그것이 의미하는 바와 같이, 그것은 단지 링크 모음 일 뿐이며, 삭제 될 위험이 있습니다. 답변에 직접 입력 할 수 있도록 정보를 입력하십시오. 귀하는 공감대를 얻게 될 것입니다 (따라서 의견을 제출할 수있는 충분한 평판을 제공함). 감사!
Toby Speight
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.