Logitech MX400에서 검색 버튼을 어떻게 다시 매핑합니까?


10

로지텍 MX400 무선이 있습니다. 붙여 넣기에 사용하려는 검색 버튼이 있습니다 (매우 민감하지만 누르기 어려운 스크롤 휠 대신). 이미 xbindkeys로 다른 버튼을 다시 가져 와서 xev를 사용하여 버튼 누름 코드를 찾았지만 검색 버튼에는 작동하지 않습니다. xev를 사용하고 검색 버튼을 클릭하면 다음과 같은 이벤트가 나타납니다.

FocusOut event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  4294967275 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
    atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue

ButtonPress 이벤트가 없습니다. 검색 버튼이 X 이벤트 아래 수준에서 차단 된 것 같습니다. 어떤 아이디어? 우분투 12.04가 있습니다. 우분투는 실제로 클릭을보고 검색 대화 상자를 생성하지만 xev에는 클릭 이벤트의 흔적이 없습니다.

편집하다

xmodmap과 함께 제공된 방법을 확인했습니다. 내 .Xmodmap지금은 다음 줄을 포함

keycode 225 = XF86Paste NoSymbol XF86Paste``

실행 xmodmap ~/.Xmodmap하면 버튼이 완전히 비활성화됩니다 (또는 적어도 버튼을 눌러도 결과가 표시되지 않습니다). 시도 xmodmap -pke하고 인쇄합니다.

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

이상해 다른 모든 항목의 형식은 비슷합니다. 나는 해결책에 가깝지만 여전히 이상한 것이 있습니다.

편집 2

xinput을 실행하려고했습니다 (이 명령에 대해 들어 본 적이 없습니다. 놀라운 것들). Logitech에는 두 가지 항목이 있습니다. 다음은 각 항목을 나열한 결과입니다 (ID 9 및 10).

Logitech USB Receiver                       id=9    [slave  pointer  (2)]
    Reporting 7 classes:
        Class originated from: 9. Type: XIButtonClass
        Buttons supported: 24
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
        Button state:
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 3
          type: 1 (vertical)
          increment: -1.000000
          flags: 0x2 ( preferred )


Logitech USB Receiver                       id=10   [slave  pointer  (2)]
    Reporting 6 classes:
        Class originated from: 10. Type: XIButtonClass
        Buttons supported: 7
        Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
        Button state:
        Class originated from: 10. Type: XIKeyClass
        Keycodes supported: 248
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0

시험 장치 (9)는 버튼으로 아무것도하지 않는다. 테스트 장치 10이 대신 작동하며 클릭하면 출력입니다.

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225

따라서 마우스는 이와 관련하여 키보드의 역할을하는 것으로 보이지만, 어떤 이유로 xmodmap은 키 225를 수신 할 때 아무것도하지 않습니다.

** 편집하다 **

버튼을 클릭 keycode 225 = aa때마다 인쇄 가 추가됨을 확인할 수 있습니다 . 따라서 문제는 XF86Paste가 실제로 처리되는 방식과 관련이있는 것 같습니다. 보내지 만 붙여 넣지는 않습니다.


당신은 한 xbindkeys바로 시동 할 때 실행되도록 설정? 비활성화하고 다시 시도 할 수 있습니까?
세스

@ iSeth : xbindkeys를 죽였습니다. 같은 결과를 다시 시도했습니다.
스테파노 Borini

터미널을 열고 실행 tail -f /var/log/dmesg한 후 버튼을 눌러보십시오. 키 / 버튼을 참조하는 출력이 있습니까?
세스

1
다른 넌센스 답변을 게시하기 전에 ...로 마우스의 입력 ID xinput list를 찾은 다음을 사용하여 검색 키의 버튼 코드를 찾으십시오 xinput test <MOUSE ID>. 이 작동합니까?
mrcktz

1
XF86Paste / XF86Copy 이벤트를 표시 할 수있는 확인 된 버그xev있지만 아무 일도 일어나지 않습니다. 붙여 넣기를하려면 Ctrl + v 키 조합을 사용해야합니다. Xmodmap은 버튼을 1 : 1로 매핑하지만 키보드 단축키 설정을 사용하여 키를 누를 때 명령 실행을 트리거 할 수 있습니다 (내 답변 참조).
mrcktz

답변:


3

키보드 이벤트를 시뮬레이트하기 위해 훌륭한 도구 xdotool을xdotool 설치 제안합니다 .

1.xdotool 터미널 ( CTRL+ ALT+ T)을 통해 설치하십시오 .

sudo apt-get install xdotool

또는 소프트웨어 센터를xdotool 설치 사용하십시오 .

2. xdotool을 사용하여 CTRL및 의 키 다운 이벤트를 에뮬레이트 하는 스크립트만듭니다v . 터미널에서 :

mkdir -p ~/bin  
gedit ~/bin/fakepaste

열린 편집기 창에 다음 내용을 복사하십시오. 코드 저장을 복사 한 후 닫으십시오.

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF

이제 스크립트를 실행 가능하게 만드십시오.

chmod +x ~/bin/fakepaste

3. 로그 아웃 한 후 로그인하여 PATH 를 다시로드하십시오 .

4. 사용자 정의 바로 가기를 만듭니다

이동 System Settings로 이동 한 후, Keyboard다음, Shortcuts.

+대화 상자의 하단에 있는 버튼을 누릅니다 . 만들려는 바로 가기의 이름과 명령 입력 :을 입력하십시오 fakepaste. 를 누릅니다 OK.

새 바로 가기 옆에이 표시 disabled됩니다. 해당 텍스트를 클릭 한 다음 키보드 에뮬레이션에 할당 할 키를 누릅니다.

붙여 넣기에 검색 키를 사용할 수 있습니다!


1
이것이 마우스 버튼에 어떻게 도움이되는지 모르겠습니다 . 키보드 단축키를 변경 합니다.
세스

2
@iSeth : 요점은 로지텍 마우스가 키보드와 마우스라는 것이 밝혀졌습니다. 키보드처럼 작동하는 검색 버튼을 제외한 모든 것을 위한 마우스입니다
Stefano Borini

2

xdotool을 사용한 xbindkeys 솔루션

이 솔루션을 위해 당신이 필요합니다 xbindkeysxdotool

xbindkeys를 죽이고 버튼 구성을 덤프하십시오

killall xbindkeys

xbindkeys --defaults >> ~/.xbindkeysrc

새로운 바인딩 추가

이제이 파일을 수정하여 사용자 정의 바인딩을 추가 할 수 있습니다.

"<command>"
  <key combination>

추가하면

"gedit"
  m:0x0 +b:4

gedit스크롤 할 때마다 열립니다 .

이제 다음 중 하나를 시도해보고 자신에게 가장 적합한 것을 선택하십시오. 모든 경우에 xdotool click 2에뮬레이션되며 마우스 가운데 버튼 누름으로 내부 및 외부 터미널을 모두 붙여 넣습니다.

  1. 마우스에서 225를 가로 채십시오 .

    "xdotool click 2"
      m:0x0 +b:225
    
  2. 일반적으로 키 코드 225를 가로 채십시오 .

    "xdotool click 2"
      c:225
    
  3. 모든 XF86Search이벤트를 교체 하십시오 (마우스 설정을 먼저 원래 설정으로 되 돌리십시오 XF86Search).

    "xdotool click 2"
      XF86Search
    

xbindkeys를 시작하고 테스트

운영

xbindkeys

작동하는지 확인하십시오.


당신이 저를 크게 도와 주면서 현상금을받을 자격이 있다고 생각합니다. 나는 아직도 당신의 해결책이 작동하는지 모른다, 나는 내일 그것들을 시험 할 것이지만 현상금이 만료되고 나는 그것을 낭비하기를 원하지 않는다. 포인트가 충분 해지면 동일한 현상금을 부여합니다. 감사합니다
Stefano Borini

감사합니다 (가능한지 모르겠지만). 기쁘다;)
게르하르트 버거

음 ... 네 말이 맞아. 여기서 하나만 수여 할 수 있습니다. 걱정하지 마십시오. 담당자가 충분하면 다른 답변 중 하나를 부여하겠습니다.
Stefano Borini

아뇨, 귀찮게하지 마십시오. 난 꽤 괜찮아;)
Gerhard Burger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.