Microsoft Sculpt Comfort Mouse의 측면 터치 버튼 다시 매핑


12

최근에 Microsoft Sculpt Comfort Mouse를 구입했습니다. 블루투스를 사용하여 랩톱에 연결하고 모든 일반 마우스 버튼은 Linux 및 Windows 7에서 완벽하게 작동합니다. 그러나이 마우스와 다른 점은 눌렀을 때 시작 / 메뉴를 시작 하는 특수 Windows/ Super키 가 있다는 것 입니다. 또한 사이드 버튼을 눌렀을 때를 감지하고 마우스가 진동하여 활성화되었음을 알리는 터치 센서가 있습니다.

물론 Windows에는 스트로크의 기능을 변경하고 진동을 끄는 프로그램이 있습니다.

Linux에서 xev는 측면 버튼을 누르거나 스 와이프 할 때 정상적인 키 입력 만 감지합니다. Xev는 마우스 버튼 누름을보고하지 않습니다.

그래서 제 질문은 리눅스에서 어떤 키 누름이 전송되는지를 바꿀 수 있습니까?

나는에서 키 바인딩 변경하는 사랑 tabdown, backspaceup, (어떤 것으로 xev 보고서)에 ctrl+ alt+ left/ right작업 공간 전환합니다.

도움을 주셔서 감사합니다!


help.ubuntu.com/community/ManyButtonsMouseHowto 에서 마우스 사용법 을 확인하셨습니까 ?
ubfan1

1
팁 ubfan1에 감사드립니다. xinput get-button-map은 13 개의 버튼을 제공합니다. xev 및 xinput 테스트는 버튼 1-7 만보고합니다. 링크 에서 xinput set-button-map 및 xbindkeys를 사용하여 버튼 8-13을 다시 매핑하려고 시도 했지만 아무것도 변경되지 않았습니다. 측면 키 보고서 키를 누르면 133 (슈퍼), 보고서 키를 누르면 스 와이프 22 (백 스페이스), 보고서 키를 아래로 스 와이프하면 23을 누릅니다 (탭).
user223544

답변:


5

방금 하나를 사서 다음이 완벽하게 작동한다는 것을 알았습니다.

  1. dconf-editor를 엽니 다 ( sudo apt-get install dconf-editor아직 설치되지 않은 경우).
  2. org-> gnome-> desktop-> wm-> keybindings로 이동하십시오.
  3. 의 값 변경 스위치 - 투 - 작업 공간 다운 로를

    ['<Control><Alt>Down', '<Primary><Super>Tab', '<Control><Super>Tab']

    와의 값 스위치 - 투 - 작업 업

    ['<Control><Alt>Up', '<Primary><Super>BackSpace', '<Control><Super>Backspace']


이 솔루션은 xbindkeys에서 찾은 솔루션보다 더 안정적으로 작동합니다. xbindkey와 비교할 때 유일한 단점은 xbindkeys 솔루션이 마우스 키 이벤트 만 캡처하는 것 같지만 키보드 키를 사용하는 경우에도이 솔루션이 작동한다는 것입니다. 어쨌든이 솔루션의 안정성은 더 나은 솔루션입니다.
user223544

2

따라서 Microsoft Sculpt Comfort Mouse는 수퍼 및 스 와이프 제스처에 대해 마우스 버튼 누름을 등록하지 않고 대신 키보드 키 누름을 등록하기 때문에 'xautomation'및 'xbindkeys'패키지를 사용하여 해당 키 누름을 듣고 Ctrl+ Alt+를 보냅니다. Right/ Left작업 공간 사이를 전환합니다. 이상적인 솔루션은 아니지만 10 회 중 8 회처럼 작동합니다.

#Move to left workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Left' 'keyup Control_L' 'keyup Alt_L' 'keyup Left'"
   m:0x4+mod4+m:0x0+c:23
   #Control_L+Super_L+Tab

#Move to right workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Right' 'keyup Control_L' 'keyup Alt_L' 'keyup Right'"
   m:0x4+mod4+m:0x0+c:22
   #Control_L+Super_L+Backspace

이 xbindkeys 스크립트가하는 일은 마우스가 위로 스 와이프하고 아래로 스 와이프 한 제스처가 컴퓨터로 보내는 키 누르기를 청취하는 것입니다. 감지되면 xautomation은 표준 이동 데스크탑 키 스트로크 control+ alt+ left/를 보냅니다 right.

마우스에 슬쩍 최대 제스처의 키 입력을 보내는 left control+ left super+를 backspace. 마우스를 아래로 스 와이프하면 키 스트로크 left control+ left super+가 전송 tab됩니다. m : 0x4 + mod4 + m : 0x0 + c22는 xbindkeys에 의해 감지되는 실제 키 코드 조합입니다.

효율성을 향상시킬 수 있는지 좀 더 엉망으로 만들지 만 지금은 작업이 완료됩니다. 난 그냥 희망 tabbackspace마우스 출력은 내가 뭘 것으로 모든 작업에 나사하지 않습니다.


1
솔루션의 작동 방식을 설명 할 수 있습니까? 마우스가 전송 중입니까 Control_L+Super_L+Tab(Control_L + Super_L은 어디에서 오는가)? 또는 마우스 버튼을 m:0x4+mod4+m:0x0+c:23(질문에 생성 된 마우스 이벤트가 없다고 말한 것 같습니까)와 일치 합니까?
Volker Siegel

Control_L + Super_L의 출처를 설명하기 위해 솔루션을 편집했습니다. 또한 m : 0x0 + mod4 + m : 0x0 + c : 23의 목적을 설명했습니다.
user223544

0

Firefox에서 탭을 양방향으로 탐색하기 위해 동일한 버튼을 매핑하고 싶었습니다. xbindkeys와 xmacro를 사용하고 있습니다. 꽤 잘 작동합니다!

.xbindkeysrc

#Thumb down
"echo 'KeyStrPress Control_L KeyStrPress Tab KeyStrRelease Control_L KeyStrRelease Tab'|xmacroplay :0"
   Control+Mod4+Tab

#Thumb up
"echo 'KeyStrPress Control_L KeyStrPress Shift_L KeyStrPress ISO_Left_Tab KeyStrRelease Control_L KeyStrRelease Shift_L KeyStrRelease ISO_Left_Tab' |xmacroplay :0"
   Control+Mod4+BackSpace
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.