Logitech G400 마우스 DPI 버튼 비활성화/재매핑

Logitech G400 마우스 DPI 버튼 비활성화/재매핑

Logitech MX-518 마우스를 사용하고 있었지만 반응성에 문제가 있어 지원을 요청하여 교체를 요청했습니다. 다른 518 대신에 그들은 나에게 다음을 보냈습니다.로지텍 G400 마우스518이 단종되었기 때문이죠. MX518이 지원되는 동안 문제가 발생합니다.로모코, G400 마우스는 지원되지 않습니다. $ lomoco -s쇼를 실행합니다 001.003: 046d:c245 Unsupported Logitech device: Unknown.

제가 하고 싶은 일은 마우스의 DPI를 단일 값으로 잠그고 DPI+ 및 DPI- 버튼을 키보드에 PgUp다시 매핑하는 것입니다.PgDn

이 작업을 어떻게 수행합니까?

로지텍 G400

버튼은 순서대로 다음과 같습니다.

  1. 버튼 1: 왼쪽 클릭
  2. 버튼 2: 가운데 클릭
  3. 버튼 3: 마우스 오른쪽 버튼으로 클릭
  4. 버튼 4: 마우스 휠 업
  5. 버튼 5: 마우스 휠 아래로
  6. 버튼 6: 없음
  7. 버튼 7: 없음
  8. 버튼 8: 엄지 버튼 #1
  9. 버튼 9: 엄지 버튼 #2
  10. 버튼 10: 작업 전환 버튼
  11. 버튼 11: 없음
  12. 버튼 12: 없음

기존 마우스(MX 518)에서는버튼 11과 12는 DPI 키였습니다.. 이러한 버튼을 나머지 버튼과 다르게 만드는 것 중 하나는 xev기본적으로 버튼을 누르는 것을 이벤트로 인식하지 않는다는 것입니다. MX 518 마우스에서 해당 버튼을 변경/바인딩하려면 먼저 비활성화해야 했습니다. 나는 lomoco그것을 "Logitech SmartScroll/Cruise Control"이라고 불렀다고 믿습니다 . G400에서는 lomoco작동하지 않으며 대안을 모릅니다.

xinput또한 도움이 될 경우를 대비해 의 일부 출력도 있습니다 .

user@localhost:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Gaming Mouse G400                id=8    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
user@localhost:~$ xinput list-props 8
Device 'Logitech Gaming Mouse G400':
    Device Enabled (121):   1
    Coordinate Transformation Matrix (123): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (248): 0
    Device Accel Constant Deceleration (249):   2.000000
    Device Accel Adaptive Deceleration (250):   1.000000
    Device Accel Velocity Scaling (251):    1.000000
    Device Product ID (238):    1133, 49733
    Device Node (239):  "/dev/input/event4"
    Evdev Axis Inversion (252): 0, 0
    Evdev Axes Swap (254):  0
    Axis Labels (255):  "Rel X" (131), "Rel Y" (132), "Rel Vert Wheel" (247)
    Button Labels (256):    "Button Left" (124), "Button Middle" (125), "Button Right" (126), "Button Wheel Up" (127), "Button Wheel Down" (128), "Button Horiz Wheel Left" (129), "Button Horiz Wheel Right" (130), "Button Side" (242), "Button Extra" (243), "Button Forward" (244), "Button Back" (245), "Button Task" (246), "Button Unknown" (241), "Button Unknown" (241), "Button Unknown" (241), "Button Unknown" (241)
    Evdev Middle Button Emulation (257):    0
    Evdev Middle Button Timeout (258):  50
    Evdev Third Button Emulation (259): 0
    Evdev Third Button Emulation Timeout (260): 1000
    Evdev Third Button Emulation Button (261):  3
    Evdev Third Button Emulation Threshold (262):   20
    Evdev Wheel Emulation (263):    0
    Evdev Wheel Emulation Axes (264):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (265):    10
    Evdev Wheel Emulation Timeout (266):    200
    Evdev Wheel Emulation Button (267): 4
    Evdev Drag Lock Buttons (268):  0

답변1

@Koviko - 저는 Logitech MX1100과 같은 비슷한 마우스를 가지고 있습니다. 이 마우스에는 기본 모드에서 눌렀을 때 USB로 전송되지 않는 DPI 버튼도 있습니다. 나는 스스로 몇 가지 테스트를 수행했고 결국 마우스를 "드라이버 모드"로 전환하기 위해 신호를 보내는 코드를 알아낼 수 있었고, 그런 다음 easygestures/xev를 사용하여 버튼을 재할당할 수 있었습니다.

원하신다면 전원을 끄는 방법을 결정하는 데 사용한 단계를 안내해 드릴 수 있습니다. (이제 매우 해킹적인 해결 방법으로 시작 시 실행해야 하는 스크립트가 있지만 적어도 작동합니다.) 하지만 여기에는 VM을 설정하고 보조 마우스를 갖고 원시 USB 트래픽을 스니핑하는 작업이 포함되며 불행히도 매우 마우스별로 다를 가능성이 높습니다.

내 단계(더 나은 단계가 거의 확실하게 존재함):

1) Windows VM(Logitech SetPoint 소프트웨어가 설치되어 있고, 저는 이미 업무용으로 WinXP를 설정했기 때문에 VirtualBox를 사용했습니다), Wireshark 및 gcc가 시스템에 설치되어 있습니다. 2) 그런 다음 터미널에서 다음 단계를 실행했습니다.

sudo modprobe usbmon
sudo wireshark &
sudo /usr/lib/virtualbox/VirtualBox &

3) Wireshark 내에서 '사용 가능한 캡처 인터페이스 목록...'을 선택하고 마우스를 움직일 때 어떤 USB 버스 번호가 많은 패킷을 생성하는지 기록해 둡니다. (내 것은 usbmon3이지만 순전히 기반이라고 생각합니다.) 수신기가 연결된 USB 포트).

3) VirtualBox 내에서(USB 컨트롤러를 공유하려면 sudo로 실행해야 함) XP VM의 설정을 편집하고 USB 컨트롤러와 USB 2.0(EHCI) 컨트롤러를 모두 활성화했습니다. 그런 다음 기존 장치에서 채워진 새 USB 필터를 추가하고 Logitech 마우스 수신기(공급업체 ID 046d, 제품 c245)를 선택한 다음 VM을 시작했습니다.

(참고: 이 시점 이후에는 두 번째 마우스를 연결해야 했습니다. 왜냐하면 SetPoint 소프트웨어가 일반 마우스 이상의 존재임을 확인할 수 있도록 일반 마우스에 대한 제어권을 Windows VM에 부여해야 했기 때문입니다.)

4) 그런 다음 VM에서 SetPoint 소프트웨어를 실행하고 다양한 버튼에 대한 사용자 정의 작업을 설정할 수 있는 화면으로 이동했습니다. 그런 다음 Wireshark로 돌아가 마우스용 USB 버스에서 캡처를 시작한 다음 즉시 VM/SetPoint로 이동하여 버튼 할당을 DPI +/-에서 키 입력 할당으로 변경한 다음 즉시 Wireshark로 돌아가 중지했습니다. 포착. (저는 이것을 약 10-15번 더 반복하여 설정을 다른 모드로 변경했습니다. 대부분은 필요한 데이터의 양을 확신하지 못했기 때문입니다. 그러나 검토한 후에 실제로는 처음 1-2개의 캡처만 필요했습니다.

귀하의 마우스가 내 마우스와 모호하게 유사하게 작동한다고 가정하면 캡처에는 총 16개의 프레임, 즉 4x GET DESCRIPTOR, 그 다음 3x(2xURB_Control out + 2xURB_INTERRUPT in)이 있을 것입니다. 당신이 찾고 있는 것은 3개의 더 긴 URB_Control 출력 프레임입니다. 캡처한 프레임 중 하나의 예는 다음과 같습니다.

0000  c0 80 64 36 00 88 ff ff  53 02 00 03 03 00 00 00
0010  5e 4b 25 50 00 00 00 00  f4 d9 08 00 8d ff ff ff
0020  07 00 00 00 07 00 00 00  21 09 10 02 01 00 07 00
0030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
0040  10 01 80 65 82 85 ff

우리가 찾고 있는 것은 더 긴 'URB_Control out' 프레임 각각의 응답(위에서 '10 01 80 65 82 85 ff')의 마지막 7바이트입니다. 마지막으로 나는 "g_hack"의 소스를 다음에서 다운로드했습니다.힘내, 그리고 상단에 있는 내 마우스 제품 코드와 내 마우스를 "드라이버" 모드" 또는 "DPI 모드".

그 후에 필요한 것은 선택한 재매핑 프로그램에서 새로 사용할 수 있는 마우스 버튼을 설정하는 것뿐이었습니다. (나는 easygestures를 사용했습니다. 왜냐하면 그것이 제가 찾은 UI에서 가장 먼저 발견한 것이기 때문입니다. 더 나은 대체 기능이 있을 수도 있고 없을 수도 있습니다.)

관련 정보