키보드로 X 선택 (클립 보드 내용이 아님) 붙여 넣기


83

키보드를 사용하여 X 선택을 붙여 넣을 수 있기를 원합니다. 현재이 작업을 수행하려면 가운데 마우스 버튼을 사용해야합니다.

마우스 가운데 버튼을 누르는 것은 매우 쉬운 일이지만, 이러한 솔루션을 사용하려면 마우스 포인터를 텍스트 캐럿의 위치로 이동해야합니다.

더 좋은 방법이 있습니까?


답변:


93

일부 기본 Linux 설정에서 Shift+ Insert는을 수행합니다 X-selection-paste. 언급했듯이, 이것은 X-clipboard-paste명령과 분명히 다르며 바인딩은 종종 응용 프로그램에 따라 다릅니다. 그래도 작동하지 않으면 몇 가지 다른 키를 사용해보십시오.

  • Ctrl+V

  • Ctrl+ Shift+V

  • Ctrl+ Shift+Insert

안가요? 데스크탑 환경 또는 창 관리자에는 구성되지 않았을 수 있으며, 하나의 DE 또는 WM 배너 아래에서도 툴킷 (예 : GTK, Qt 등)마다 기본 바인딩이 다를 수 있으므로 복잡합니다. 일부 프로그램 (예 gvim:)에는 실행중인 그래픽 환경과 반드시 ​​동기화되지 않는 자체 내부 복사 레지스터도 있습니다. 프로그램이 X- 클립 보드 시스템을 사용하는 경우에도 X는 선택할 수있는 여러 시스템이 있습니다. 가장 기본적인 두 가지 선택 버퍼는 선택 버퍼 (마지막으로 선택한 항목이 있으면 항상 실행)와 복사 버퍼 (일반적으로 특별히 복사해야하는 항목)입니다. 후자의 시스템에 명시 적으로 복사하려면 크기에 대해 다음 중 하나를 시도하십시오.

  • Ctrl+C

  • Shift+ Ctrl+C

  • Ctrl+Insert


그중 아무것도 마술처럼 당신을 위해 일하지 않는다면, 갈 수있는 두 가지 방법이 있습니다.

  1. 이를위한 앱이 있습니다! ™ 다양한 클립 보드 관리자 프로그램 중 하나를 사용하여이를 처리하십시오. 가장 인기있는 것은 ParcelliteGlippy 인 것 같지만 여기 에서 다른 대안을 확인할 수 있습니다 . 고급 클립 보드 관리자에 대한질문 도 참조하십시오.

  2. 직접 해킹하십시오.

해킹하고 싶다고 해봅시다.

자신의 코드를 작성하지 않고 X API를 활용하는 작업에 대한 해커 도구는 X의 마음에 창을 제공하는 몇 가지 작은 명령 줄 유틸리티입니다. .

첫 번째 도구는 xsel입니다. 이 작은 일꾼은 주어진 시간에 X의 선택 버퍼에있는 것을 뱉어냅니다.

이제 프로그램으로 가져와야합니다. 여기에는 두 가지 옵션이 있습니다. 하나는 xdotoolXorg 입력 시스템으로 이벤트를 보내는 것을 흉내낼 수있게합니다. 커서에서 'foo_bar'입력을 모방하는 것과 같은 유형 방법을 사용할 수 있습니다 xdotool type foo_bar. 결합하면 다음과 같은 결과가 나타납니다.

$ xdotool type $(xsel)

다른 하나는 xvkbd하위 시스템에서 키보드 이벤트를 보내는 것입니다. STDIN에서 키 입력을 키 입력으로 파이프 할 수 있습니다. 와 결합 xsel하면 다음과 같은 결과가 나타납니다.

$ xsel | xvkbd -xsendevent -file -

큰. 이제 키 바인딩을 사용하여이 작업을 수행하십시오. Gnome-2를 실행하면 시스템-> 환경 설정-> 키보드 단축키 에서 사용자 정의 단축키를 추가 할 수 있습니다 . 다른 DE 또는 WM을 사용하는 경우이 excersize는 독자에게 달려 있습니다.

마지막 참고 사항은 명령을 키보드 단축키에 바인딩 할 때 위에서 사용하는 것처럼 파이프에 연결된 두 개의 명령이 아니라 하나의 명령 만 필요하다는 것입니다. 파이프 된 명령을 다음과 같이 새 쉘에 대한 명령 문자열 인수로 호출하여이를 수행 할 수 있습니다.

sh -c 'xsel | xvkbd -xsendevent -file -'
sh -c 'xdotool type "$(xsel)"'

1
확실히 "더 나은"자격이 있습니다. 감사!
intuited

어떤 응용 프로그램에서? 내가 사용하는 응용 프로그램은 종종 이런 식으로 작동하지 않습니다.
Gilles

나는 우분투를 사용 Shift-Insert하고 있으며 실제로 실용적으로 사용하고 싶지만 (우분투에서는) 아닙니다. 내가 찾은 유일한 "일관성 (+/-)"은 X- GTK 응용 프로그램의 선택은에 Shift-Inserted 할 수 gnome-terminal있지만 동일한 응용 프로그램의 다른 교차 붙여 넣기 조합에는 매우 인기가 있습니다 ... Konsole을 포함하여 사용하는 소수의 KDE 응용 프로그램은 단순히 교차 붙여 넣기 .... GTK 앱에서도 가운데 클릭이 작동하지만 Shift + Insert가 (같은 앱에 대해) 작동하지 않을 수 있습니다. 따라서 마우스를 사용합니다 :(
Peter.O

"X 레벨 바인딩"과 같은 것은 없습니다. 사용하는 응용 프로그램이나 창 관리자 또는 데스크탑 환경이 수행하는 것일 수 있습니다. 나는 그것이 배포판에 특정한 것인지 의심합니다.
Gilles

1
쉬운 방법은 키보드 단축키를 중간 클릭 이벤트 보내기에 바인딩하는 것입니다. 나를 위해, 그것은입니다 xdotool click 2.
Inductiveload

10

분명히 Shift+ Insert적어도 FreeBSD의에, GTK 3의 일부 설치에 제대로 작동하지 않을 수 있습니다. 이 문제는 다음과 같이 설명됩니다.

Shift-Insert가 기본 선택을 붙여 넣지 않습니다. 대신 클립 보드를 붙여 넣어야합니다 (Control-V가 이미 사용 된 경우). 따라서 기본 선택을 삽입하는 키보드 전용 방법은 없습니다. 마우스를 끌어서 가운데 ​​클릭해야합니다. 이것은 터미널과 GTK 간의 상호 작용을 불편하게 만듭니다.

최신 (이 글을 쓰는 현재) 버그 보고서 및 패치를 사용할 수 있습니다.

http://www.freebsd.org/cgi/query-pr.cgi?pr=188264


8
xdotool click 2

마우스 버튼 클릭을 직접 시뮬레이션하며 xsel/ 를 사용할 필요는 없습니다 xdotool type ....


1
마우스를 올바르게 배치해야하므로 실제로 마우스 버튼을 사용할 수도 있습니다. 마우스를 커서에
맞추는

2

우분투 12를 사용하고 있으며 xedit의 텍스트를 gedit (및 기타 응용 프로그램)에 붙여 넣는 데 문제가있었습니다. 또한 많은 사람들처럼 중간 마우스 버튼이없는 랩톱을 사용합니다 (실제로 중간 버튼이없는 Linux 사용자에게는 클립 보드 자비가 없으며 오른쪽 클릭 + left_click은 대체 기능으로 작동하지 않습니다).

"xsel | xvkbd -xsendevent -file-"방법이 멋지다고 생각합니다. 가장 간단한 해결책은 "xterminal"대신 사전 설치된 "gnome-terminal"을 실행하는 것입니다. "gnome-terminal"은 마우스 오른쪽 클릭 클립 보드로 복사 명령을 지원합니다. 그런 다음 "Edit Menu-> Paste"를 gedit에 넣거나 shift-insert를 사용할 수 있습니다. "gnome-terminal"은 Ubuntu 12와 함께 사전 설치되었습니다. 다른 데비안 / 그놈 설치는 다음을 통해 설치할 수 있습니다 :

sudo apt-get install gnome-terminal

우분투에서 런처 바의 상단에있는 "대시 홈"버튼을 클릭하여 왼쪽 런처에 추가하십시오. 결과 검색 상자에 terminal을 입력하십시오. "터미널"아이콘을 실행기 막대로 드래그 할 수 있습니다.


2
이것은 매우 가난한 솔루션입니다. 사람들이 다른 터미널, 특히 100MB 이상의 gnome-shell을 종속 터미널로 전환하도록 제안 할 수는 없습니다. 이것은 또한 다른 응용 프로그램에서 작동하지 않으며, 최악의 경우 여전히 마우스를 사용해야 작동합니다.
pfrenssen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.