Como desativar uma entrada de movimento do mouse, enquanto deixa os botões do mouse ativados?

9

Eu tenho um mouse que eu uso apenas para os botões. Eu quero desabilitar apenas a entrada de movimento do mouse. Cobrir fisicamente o sensor não funciona.

    
por Ian Kelling 05.07.2013 / 21:25

3 respostas

8

Você pode usar 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

Lá você obtém o nome do mouse neste caso Mouse0.

Com o seguinte comando, você diminui a velocidade do mouse em um fator de 100000, que é basicamente zero.

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

ou

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

Para reverter, você pode usar o mesmo

xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 1
    
por 05.07.2013 / 23:27
3

Meu mouse não possui a propriedade 'Device Accel Constant Deceleration'. Eu ainda era capaz de desativar o movimento com

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

e reative-o com

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

Também desativei meus botões com

xinput set-button-map 9 0 0 0

O dispositivo 9 é o meu Mitsumi Electric Apple Optical USB Mouse .

Lista de dispositivos

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

    
por 24.08.2016 / 17:10
2

Se eu leio man 4 mousedrv corretamente, você pode definir, na seção CorePointer do seu xorg.conf,

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

que converteria movimentos em eventos de botão de roda do mouse, mas a configuração de inércia tornaria muito insensível registrar um. Nos sistemas modernos, é evdev em vez de mousedrv. Isso também pode ser definido em tempo de execução usando xinput, por exemplo:

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

Onde 17 deve ser o seu próprio número de dispositivo. Eu uso uma função para obter esse número pelo nome do dispositivo e armazená-lo em $ device-id durante um script de inicialização.

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

Isso infelizmente tem o efeito colateral de desativar a entrada da roda de rolagem do dispositivo.

    
por 05.07.2013 / 22:36

Tags