마우스 버튼을 활성화 한 상태에서 마우스 움직임 입력을 비활성화하는 방법은 무엇입니까?


9

버튼에 사용하는 마우스가 있습니다. 마우스의 움직임 입력 만 비활성화하고 싶습니다. 센서를 물리적으로 덮으면 작동하지 않습니다.

답변:


9

사용할 수 있습니다 xinput.

>xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer            id=4    [slave  pointer  (2)]
⎜   ↳ Mouse0                                id=6    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard           id=5    [slave  keyboard (3)]
    ↳ Keyboard0

이 경우 마우스 이름이 Mouse0입니다.

다음 명령을 사용하면 마우스 속도를 100000 배로 느리게하여 기본적으로 0입니다.

xinput --set-prop 6 'Device Accel Constant Deceleration' 100000

또는

xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 100000

되돌리려면 같은 것을 사용할 수 있습니다

xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 1

1
깔끔한 해킹. 사용 가능한 속성은 장치가있는 xinput list 6곳에서 찾을 수 있습니다 6. 속성에 대한 문서는 여기에서 찾을 수 있습니다 : x.org/wiki/Development/Documentation/PointerAcceleration
Lekensteyn

3

마우스에 'Device Accel Constant Deceleration'속성이 없습니다. 여전히 모션을 비활성화 할 수있었습니다

xinput set-prop 9 266 -1    
xinput set-prop 9 269 0 1

와 함께 다시 활성화

xinput set-prop 9 269 1 0
input set-prop 9 266 0.0

또한 버튼을 비활성화했습니다.

xinput set-button-map 9 0 0 0

장치 9는 Mitsumi Electric Apple 광 USB 마우스 입니다.

장치 목록

Device 'Mitsumi Electric Apple Optical USB Mouse':
    Device Enabled (132):   1
    Coordinate Transformation Matrix (134): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Accel Speed (266):     -1.000000
    libinput Accel Speed Default (267):     0.000000
    libinput Accel Profiles Available (268):        0, 0
    libinput Accel Profile Enabled (269):   0, 1
    libinput Accel Profile Enabled Default (270):   1, 0
    libinput Natural Scrolling Enabled (271):       0
    libinput Natural Scrolling Enabled Default (272):       0
    libinput Send Events Modes Available (250):     1, 0
    libinput Send Events Mode Enabled (251):        0, 0
    libinput Send Events Mode Enabled Default (252):        0, 0
    libinput Left Handed Enabled (273):     0
    libinput Left Handed Enabled Default (274):     0
    libinput Scroll Methods Available (275):        0, 0, 1
    libinput Scroll Method Enabled (276):   0, 0, 0
    libinput Scroll Method Enabled Default (277):   0, 0, 0
    libinput Button Scrolling Button (278): 2
    libinput Button Scrolling Button Default (279): 274
    libinput Middle Emulation Enabled (280):        0
    libinput Middle Emulation Enabled Default (281):        0
    Device Node (253):      "/dev/input/event4"
    Device Product ID (254):        1452, 772
    libinput Drag Lock Buttons (282):       <no items>
    libinput Horizonal Scroll Enabled (255):        1

2

man 4 mousedrv올바르게 읽으면 xorg.conf의 CorePointer 섹션에서

Option "EmulateWheel" true
Option "EmulateWheelButton" 0
Option "EmulateWheelInertia" 10000

움직임을 마우스 휠 버튼 이벤트로 변환하지만 관성 설정은 하나를 등록하기에 너무 둔감합니다. 최신 시스템에서는 mousedrv 대신 evdev입니다. xinput을 사용하여 런타임에 설정할 수도 있습니다. 예를 들면 다음과 같습니다.

xinput --set-prop 17 'Evdev Wheel Emulation' 1
xinput --set-prop 17 'Evdev Wheel Emulation Button' 0
xinput --set-prop 17 'Evdev Wheel Emulation Inertia' 10000

여기서 17은 자신의 장치 번호 여야합니다. 함수를 사용하여 장치 이름 으로이 번호를 가져 와서 시작 스크립트 중에 $ device-id에 저장합니다.

set_device_id() {
  device_id=$(xinput --list | grep -m 1 "$1")
  device_id=${device_id##*id=}
  device_id=${device_id%%[[:space:]]*}
}

불행히도 이것은 장치의 스크롤 휠 입력을 비활성화하는 부작용이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.