로지텍 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 = a
할 a
때마다 인쇄 가 추가됨을 확인할 수 있습니다 . 따라서 문제는 XF86Paste가 실제로 처리되는 방식과 관련이있는 것 같습니다. 보내지 만 붙여 넣지는 않습니다.
답변
키보드 이벤트를 시뮬레이트하기 위해 훌륭한 도구 xdotool을
1.xdotool
터미널 ( CTRL+ ALT+ T)을 통해 설치하십시오 .
sudo apt-get install 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 솔루션
이 솔루션을 위해 당신이 필요합니다 xbindkeys
및xdotool
xbindkeys를 죽이고 버튼 구성을 덤프하십시오
killall xbindkeys
과
xbindkeys --defaults >> ~/.xbindkeysrc
새로운 바인딩 추가
이제이 파일을 수정하여 사용자 정의 바인딩을 추가 할 수 있습니다.
"<command>"
<key combination>
추가하면
"gedit"
m:0x0 +b:4
gedit
스크롤 할 때마다 열립니다 .
이제 다음 중 하나를 시도해보고 자신에게 가장 적합한 것을 선택하십시오. 모든 경우에 xdotool click 2
에뮬레이션되며 마우스 가운데 버튼 누름으로 내부 및 외부 터미널을 모두 붙여 넣습니다.
-
마우스에서 225를 가로 채십시오 .
"xdotool click 2" m:0x0 +b:225
-
일반적으로 키 코드 225를 가로 채십시오 .
"xdotool click 2" c:225
-
모든
XF86Search
이벤트를 교체 하십시오 (마우스 설정을 먼저 원래 설정으로 되 돌리십시오XF86Search
)."xdotool click 2" XF86Search
xbindkeys를 시작하고 테스트
운영
xbindkeys
작동하는지 확인하십시오.