Logitech MX400에서 검색 버튼을 어떻게 다시 매핑합니까? 형식은 비슷합니다. 나는 해결책에

로지텍 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가 실제로 처리되는 방식과 관련이있는 것 같습니다. 보내지 만 붙여 넣지는 않습니다.



답변

키보드 이벤트를 시뮬레이트하기 위해 훌륭한 도구 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됩니다. 해당 텍스트를 클릭 한 다음 키보드 에뮬레이션에 할당 할 키를 누릅니다.

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


답변

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

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


답변