이 질문은 이미 요청되었지만 제대로 답변되지 않았습니다. @ Seth와의 정리 후 이제 다시 묻습니다. 이렇게하면 질문에 훨씬 쉽게 응답하고 수정할 수 있습니다. 원래 질문은 여기에서 찾을 수 있습니다.
발행물:
사용하여 마우스 버튼에 모든 키 입력을 매핑 할 매우 간단하지만 xbindkeys
와 함께 xdotool
또는 xte
(예를 들어, 그것은 수정 자 키를 매핑 할 훨씬 더 문제가 보인다 ALT , CTRL , SHIFT 그것에 등).
최종 soloution은 마우스만으로 CTRL + 클릭 (예 : 목록의 여러 항목을 선택 하는 경우)을 허용해야합니다 .
이 문제를 해결하기위한 몇 가지 가능한 접근 방법은 Stack Exchange와 다른 Linux 관련 포럼에서 찾을 수 있습니다. 그러나 다른 문제와 부작용으로 이어질 것으로 예상되는대로 작동하지 않습니다.
노트:
아래 예 중 일부는 Guile with Scheme 구문을 사용하고 .xbindkeysrc.scm
파일을 사용하는 반면 다른 일부는 해당 구문을 사용하여 파일을 사용 .xbindkeysrc
합니다. 나는 그들이 함께 작동하지 않는다는 것을 알고 있습니다.
또한 아래 스 니펫은 의지 xdotool
에만 의존 하지만 예 xte
를 들어 다른 응용 프로그램과 관련된 접근 방식에도 개방적입니다. 두 가지 모두 동일한 결과를 초래하므로 xdotool
여기에서 조치를 사용하고 있습니다.
접근법 A :
다음을 사용하여 .xbindkeysrc
파일 업데이트
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + b:8
그것이 처음에 시도한 것이지만 수정자가 보류되어 해제 할 수 없다는 부작용이 있습니다.
접근법 B :
다음을 사용하여 .xbindkeysrc.scm
파일 업데이트
(xbindkey '("b:8") "xdotool keydown ctrl")
(xbindkey '(release "b:8") "xdotool keyup ctrl")
(xbindkey '("m:0x14" "b:8") "xdotool keydown ctrl")
(xbindkey '(release "m:0x14" "b:8") "xdotool keyup ctrl")
에서 발견 http://www.linuxforums.org/forum/hardware-peripherals/169773-solved-map-mouse-button-modifier-key.html 및 방법에서 설명한 바와 같이 개질제 (유지되고있는 문제를 해결하기위한 시도 ㅏ).
엄지 버튼을 누르고있는 동안 다른 마우스 클릭을 수행 할 수 없으므로 부분적으로 만 작동하도록 수정되었습니다.
접근법 C :
다음을 사용하여 .xbindkeysrc
파일 업데이트
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
askubuntu에서 연결된 질문의 OP로 시도했습니다. 수정 자 상태를 포함하지 않으므로 훨씬 간단하고 견고합니다. 그럼에도 불구하고 문제는 여전히 남아 있습니다. 즉 CTRL + 클릭 이 불가능합니다.
xbindkeys
클릭을 인식하지만 실행하지는 않으므로 여기에서 문제가되는 것 같습니다 . 이것은 xev | grep button
and를 사용하여 테스트 할 수 있습니다 xbindkeys -v
.
기록 된 일반적인 마우스 클릭 xev
은 다음과 같아야합니다.
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
엄지 버튼뿐만 아니라 :
state 0x10, button 8, same_screen YES
state 0x10, button 8, same_screen YES
그러나 위의 xbindkeys
구성을 활성화하면 아무것도 기록되지 않습니다. 썸 버튼이 CTRL에 매핑되어 더 이상 마우스 버튼이 아니기 때문에 썸 버튼이 의미가 있지만 버튼 1 도 기록되지 않는 것이 이상합니다 . 이것은 xbindkeys
실행하지 않지만 자체 인식하기 때문에 가능합니다.
Button press !
e.xbutton.button=8
e.xbutton.state=16
"xdotool keydown ctrl"
m:0x0 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
Button press !
e.xbutton.button=1
e.xbutton.state=20
Button release !
e.xbutton.button=1
e.xbutton.state=276
Button release !
e.xbutton.button=8
e.xbutton.state=20
"xdotool keyup ctrl"
Release + m:0x4 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
접근법 D :
다음을 사용하여 .xbindkeysrc
파일 업데이트
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
"xdotool click 1"
b:1
너무 간단하지만 ... 클릭의 무한 루프로 이어집니다.
최신 정보:
그 동안 Logitech G502를 구입하고 Windows에서 드라이버를 통해 구성한 후에는 프로필 자체가 장치 메모리에 저장 될뿐만 아니라 실제 키 누름이 마우스로 수행되는 것을 알 수있었습니다. 그것은 실제로 리눅스에서 내 문제를 해결했습니다!
내가 할 수 있었던 유일한 다른 마우스는 당시 Razer Copperhead였습니다. 그러나 오늘도 동일한 마우스를 사용할 수있는 다른 마우스가 있다고 생각합니다.