Tengo un mouse que solo uso para los botones. Quiero deshabilitar solo la entrada de movimiento del mouse. Cubrir físicamente el sensor no funciona.
Tengo un mouse que solo uso para los botones. Quiero deshabilitar solo la entrada de movimiento del mouse. Cubrir físicamente el sensor no funciona.
Respuestas:
Puedes 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
Allí obtienes el nombre del mouse en este caso Mouse0.
Con el siguiente comando, reduce la velocidad de su mouse en un factor de 100000, que es básicamente cero.
xinput --set-prop 6 'Device Accel Constant Deceleration' 100000
o
xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 100000
Para revertir puedes usar el mismo
xinput --set-prop Mouse0 'Device Accel Constant Deceleration' 1
Mi mouse no tiene la propiedad 'Device Accel Constant Deceleration'. Todavía podía desactivar el movimiento con
xinput set-prop 9 266 -1
xinput set-prop 9 269 0 1
y volver a habilitarlo con
xinput set-prop 9 269 1 0
input set-prop 9 266 0.0
También deshabilité mis botones con
xinput set-button-map 9 0 0 0
El dispositivo 9 es mi mouse USB óptico de Apple Mitsumi Electric .
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
Si leo man 4 mousedrv
correctamente, puede configurar, en la sección CorePointer de su xorg.conf,
Option "EmulateWheel" true
Option "EmulateWheelButton" 0
Option "EmulateWheelInertia" 10000
lo que convertiría los movimientos en eventos de botón de la rueda del mouse, pero la configuración de inercia lo haría demasiado insensible para registrar uno. En los sistemas modernos, es evdev en lugar de mousedrv. Esto también se puede configurar en tiempo de ejecución usando xinput, por ejemplo:
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
Donde 17 debe ser su propio número de dispositivo. Utilizo una función para obtener este número por el nombre del dispositivo, y lo guardo en $ device-id durante un script de inicio.
set_device_id() {
device_id=$(xinput --list | grep -m 1 "$1")
device_id=${device_id##*id=}
device_id=${device_id%%[[:space:]]*}
}
Desafortunadamente, esto tiene el efecto secundario de deshabilitar la entrada de la rueda de desplazamiento del dispositivo.
xinput list 6
(donde6
está el dispositivo). La documentación sobre las propiedades se puede encontrar aquí: x.org/wiki/Development/Documentation/PointerAcceleration