기본 선택을 붙여 넣기위한 키보드 단축키


40

기본 선택을 붙여 넣기위한 표준 또는 일반 키보드 단축키가 있습니까?

클립 보드 내용을 지우지 않고 붙여 넣기 위해 텍스트를 선택하고 다른 앱으로 이동하고 싶습니다 . 마우스로 이동하고 포인터를 찾고 원하는 위치에 놓은 다음 마우스 가운데 버튼을 클릭하는 것보다 손가락을 키보드에 유지하고 싶습니다.

기존의 것이 없거나 응용 프로그램에 따라 다르고 많은 사람들이 지원하지 않는 경우이 작업을 전 세계적으로 수행 할 수있는 해결 방법이 있습니까? (적어도 더 많은 응용 프로그램에서)



FWIW, 당신은 시프트 삽입을 사용하여 (. 마우스 버튼을 사용하지 않고 IE) 키보드에서 기본 선택을 붙여 복사 / Ctrl 키를 삽입 / Ctrl 키를 교대 - 인서트를 사용하여 클립 보드의 선택을 붙여 넣을 수 있습니다
조나단 하틀리을

답변:


32

가상 키 누르기를 보내는 것은 효과가 없지만 ( 댓글 참조 ) 그 대답으로 비슷한 솔루션을 찾게되었습니다. "text"이벤트를 보내면 xvkbd실제 키보드의 현재 상태 가 무시됩니다.

sh -c 'xsel | xvkbd -xsendevent -file - 2>/dev/null'

xvkbd -text몇 가지 백 슬래시 시퀀스를 사용하므로 이스케이프와 함께 춤을 추는 것보다는 -file작동합니다. xvkbd또한 수정 자에 대한 경고 텍스트를 출력하지만이 용도와 관련이없는 것으로 보입니다 (그러나 나는 그것을보고 싶지 않았습니다 ~/.xsession-errors).

시스템> 환경 설정> 키보드 단축키를 사용하여 단축키에 바인딩했습니다 .

xsel 및 xvkbd 패키지가 설치되어 있어야합니다.

sudo apt-get install xsel xvkbd

3
이런 바나나! 효과가있다! 대단해. 우분투는 기본적으로 이것을 설정해야합니다.
Eric Johnson

8
나를 위해, sh -c 'xsel | xvkbd -file - 2>/dev/null'작품, -xsendevent가 작동하도록해야했습니다.
sup

그건 그렇고,이 명령을 단일 키 바로 가기에 할당해야했습니다 (행운 적으로 ThinkVantage 버튼이 Thinkpad에서 아무것도하지 않습니다-ctrl + alt + v는 이상하게 동작하고에있는 부분의 일부만 붙여 넣었습니다 xsel).
sup

2
이것은 두 가지 문제를 제외하고는 매우 잘 작동합니다. (1) 초점을 잃을 때 숨기도록 설정 한 드롭 다운 터미널 (Guake)을 사용합니다. 이 스크립트를 실행하면 터미널에서 포커스가 일시적으로 제거되어 숨겨집니다. (2) UTF-8 문자 2 바이트 문자를 잘 처리하지 못합니다. 예를 들어 "éòü"를 선택하면 스크립트를 사용하여 "ÃÃÃÃ"를 인쇄합니다.
Sparhawk

2
두 번째 버그가있는 것 같습니다 xvkbd. xsel기본 선택에서 "éòü"와 함께 잘 작동하지만 xvkbd위 스크립트에서 실패합니다. (그리고 xvkbd -text "éòü"여기에도 아무것도 인쇄되지 않지만으로 실패합니다 .)
Sparhawk

7

당신은 프로그램의 결합을 이용하여이를 얻을 수 있습니다 xdotool ( 설치 클릭 )하고 XSEL ( 설치합니다 ).

xdotool창 입력을 시뮬레이션 할 수 있습니다. xselPRIMARY 선택의 내용을 출력합니다 (기본적으로). 다음 쉘 하나의 라이너가 트릭을 수행합니다.

 xdotool type `xsel`

시스템-> 환경 설정-> 키보드 단축키 메뉴 항목을 사용하여 이것을 키에 바인딩하려면 셸 호출로 래핑해야합니다.

 sh -c 'xdotool type --clearmodifiers -- "`xsel`"'

입력 xdotool하면 일부 프로그램에서 작동하지 않습니다. xdotool 설명서 의 참고 사항을 참조하십시오 .


활성 텍스트 상자와 커서 위치가 정확한 위치에 있지 않으면 제대로 작동하지 않습니다. 실제로 이것이 창 관리자 테두리를 세면 "창 제목 중간 클릭"동작이 완전히 달라집니다.

@Roger 감사합니다. 텍스트를 수정했습니다. 이 작업을 수행하는 더 좋은 방법이 있는지 궁금합니다. 저는 꽤 오랫동안 "붙여 넣기"키를 찾고있었습니다.
Riccardo Murri

글쎄, 나는 노력에 감사하지만 이것은 여전히 ​​작동하지 않습니다. 마우스 위치에 대해 걱정하고 싶다면 마우스를 먼저 사용하십시오. :)

@Roger : 두 번째 라운드가 정확합니다 : xdotool + xsel이 수행합니다. (글쎄, 적어도 나를 위해 일한다.)
Riccardo Murri

2
--clearmodifiers 옵션이 필요합니다. 그렇지 않으면 키보드 단축키와 xdotool 실행 사이에 경쟁 조건이 있습니다. 10.04 repos의 xdotool 은이 옵션으로 업데이트되지 않았으므로 직접 다운로드 하여 빌드해야했습니다. 그러나 --clearmodifiers는 모디파이어에 이상하게 영향을 미치는 것으로 보이며 결국 xdotool이 키보드 단축키에 어떻게 작동하는지 알지 못합니다 (실제로 텍스트를 입력하는 데 효과적이지만).


2

호출은 xdotool click --clearmodifiers 2마우스 가운데 버튼 클릭을 시뮬레이션합니다. 이것은 xsel (적어도 나를 위해)을 사용하는 것보다 훨씬 잘 작동합니다. 입력하기 전에 마우스를 위치시켜야합니다 ...


2

Debian Jessie 8.7 (2017 년 1 월)에서 작업하는 또 다른 xdotool 제안 :

xdotool click --delay 0 --clearmodifiers 2
  • xdotool은 xvkbd와 달리 멀티 바이트 문자열 (pe UTF-8)을 처리합니다.
  • xdotool click실제 클릭을 시뮬레이션하므로 xdotool type, 또는 xvkbd 를 사용했을 때와 같이 마우스 위치에 붙여 넣기 위해 직접 클릭 할 필요가 없습니다 .

유일한 문제는 --clearmodifiers클릭을 시뮬레이션 한 후 사용하는 수정 자 (Ctrl / Alt / Shift / Meta)를 "누르" 는 것 입니다. 심지어 함께 --delay 0(대신 12ms의), 명령이 실행 조금 걸립니다. 키가 끝나기 전에 키를 놓으면 수정자가 다시 "눌러지고"실제 키를 한 번 더 눌렀다가 놓을 때까지 멈 춥니 다.

따라서 이것을 사용하면 수정자를 해제하려면 약간 "느린"(50ms?)해야합니다.

바로 가기 키를 설정하고이를 텍스트 편집기에 사용한 다음 키 (예 a: 또는 화살표) 를 눌러이를 테스트 할 수 있습니다 . 문자는 소문자로 표시되어야합니다. 다른 일이 발생하면 너무 빠르며 수정자가 멈 춥니 다 (모자에 있으면 pe Shift, 모든 텍스트를 선택한 경우 Ctrl, 메뉴를 열면 Alt). 수정자를 다시 눌렀다 떼어 재설정하십시오.

너무 빠르면 ilkerk의 제안을 사용할 수 있습니다.

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

그런 다음 300ms 이내에 해제하고 텍스트가 나타날 때까지 0.5 초 정도 기다려야합니다.

또한 사용 xdotool type은 마치 마우스 포인터가 아닌 텍스트 커서 위치에 입력하는 것처럼 텍스트를 삽입하는 것을 의미합니다. click일반적인 중간 클릭 동작을 선호하는 경우로 변경할 수 있습니다 .

(이 게시물을 작성하여 이민자가 댓글에 퍼진 퍼즐 조각을 다시 만들 필요가 없음)


아치 리눅스에서 나를 위해 지금 작동
MountainX

1

나는 솔루션에 문제가 있었다 붙여 시뮬레이션PRIMARY 그래서 대신 내가 바로 가기를 추가, 선택을 그 사본PRIMARY 받는 선택CLIPBOARD . 내 바로 가기를 사용하면 내가 붙여 CLIPBOARD로, 일반적인 방법으로 Ctrl+V, Ctrl+Shift+V또는 Shift+Insert응용 프로그램에 따라 다릅니다.

PRIMARY선택 사항을 에 복사하는 명령 CLIPBOARD

sh -c 'xsel --output --primary | xsel --input --cliboard'

Ctrl+Insert그놈 바로 가기 설정의 (임의 선택)에 바인딩합니다.System Settings -> Devices -> Keyboard

다른 솔루션의 문제 요약 :xsel | xvkbd ...xsel | xdotool ...솔루션을 시도했지만 문자로 선택 문자를 입력 하는 것을 시뮬레이션하기 때문에 잘 작동하지 않는다는 것을 알았습니다 PRIMARY. 이는 중간 클릭 으로 붙여 넣는 것과 다릅니다 . 큰 선택이 한 번에 한 문자 씩 삽입되는 동안 시간이 오래 걸리는 문제가 있습니다. "붙여 넣기"를 취소하려면 문자별로 취소해야합니다. 속도가 느립니다. "데드 키"를 사용하는 경우 "붙여 넣기" "e생성 과 같이 모든 것이 엉망이됩니다 ë. 는 xvkdb제대로 유니 코드 문자를 처리하지 않습니다.

경고 : 이 솔루션은 기존 CLIPBOARD내용을 덮어 쓰지만 OP는 기존 CLIPBOARD내용 을 보존 할 솔루션을 요청했습니다 .


원본 클립 보드 내용을 저장하고 나중에 다시 설정합니까? 아니면 원본 클립 보드 내용 을 휴지통에 버리고 질문 의 "클립 보드 내용을 휴지통에 버리지 않고 붙여 넣기 " 실패 합니까?
Xen2050

@ Xen2050 예, CLIPBOARD를 휴지통에 버립니다. 답변에 메모를 추가하겠습니다.
ntc2

0

나는 같은 문제가 있었고 인터넷 검색은별로 도움이되지 않았다. 클릭 2를 시뮬레이션하는 문제는 OP가 언급 한 것처럼 성가시다.

위의 제안 xdotool및 xsel 의 문제 xdotool는 "타이핑"을 시작할 때 여전히 다른 키를 누르는 것입니다. 그 결과가 항상 출력되는 것은 아닙니다. 예를 들어 "삽입"키에 바인딩하면 xdotool손가락이 "삽입"키를 눌렀을 때 아무 키도 보내지 않고 키를 전송합니다.

아래는 키를 눌러 해결할 수있는 해결 방법입니다.

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

완벽하지는 않지만 작동합니다. 이제 키 선택 (및 키 업) 선택을 완료하는 데 0.3 초가 걸립니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.