Deshabilitar la aceleración del mouse en X.Org (Linux)

11

Esta es la versión de Linux de mi pregunta Desactivación de la aceleración del mouse en Mac OS X. Espero obtener una respuesta esta vez.

Estoy cansado de la aceleración del mouse y quiero tener una respuesta del mouse completamente lineal. Esto se puede lograr fácilmente a través de cualquiera de los 5 métodos más o menos (algunos sutilmente implícitos) en la página wiki X.Org sobre aceleración de puntero . Sin embargo, también deshabilitan la escala de velocidad .

No quiero un mapeo 1: 1 entre el dispositivo y las coordenadas de la pantalla. Quiero un mapeo 1: N donde N es una constante . ¿Algunas ideas?

aib
fuente

Respuestas:

15

La única forma en que he encontrado que funciona (y solo lo he probado en Ubuntu) es con el xinputcomando.

Primero debe identificar el número de dispositivo para el mouse que desea cambiar:

# xinput list
â¡ Virtual core pointer                         id=2    [master pointer  (3)]
â   â³ Virtual core XTEST pointer               id=4    [slave  pointer  (2)]
â   â³ Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)   id=10   [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)]
    â³ CHICONY USB Keyboard                     id=8    [slave  keyboard (3)]
    â³ CHICONY USB Keyboard                     id=9    [slave  keyboard (3)]
    â³ IR-receiver inside an USB DVB receiver   id=11   [slave  keyboard (3)]

Ahora, en este ejemplo, jugaré con mi mouse de Microsoft. id = 10

Ahora veamos qué propiedades puede manejar este dispositivo:

# xinput list-props 10
Device 'Microsoft Microsoft 5-Button Mouse with IntelliEye(TM)':
    ... cruft cut ...
    Device Accel Profile (259):     3
    ... cruft cut ...

Este valor es cómo el controlador maneja la aceleración:

-1: ninguno sin aceleración o desaceleración del puntero dependiente de la velocidad. Si la desaceleración constante tampoco se utiliza, el procesamiento de movimiento se suprime, lo que ahorra algunos ciclos.

0: clásico (el predeterminado) similar al comportamiento anterior, pero más predecible. Selecciona entre 'polinomio' y 'simple' en función del umbral = /! = 0.

1: depende del dispositivo disponible si el controlador de hardware lo instala. Puede venir por sinápticos.

2: polinomio Escalas polinomiales: la velocidad sirve como coeficiente, la aceleración es el exponente. Muy utilizable, el perfil recomendado.

3: escalas lineales suaves principalmente lineales, pero con un inicio suave (no lineal).

4: transiciones simples entre acelerado / no acelerado, pero con un rango de transición suave. Esto tiene el problema fundamental de acelerar en dos niveles, en los cuales la aceleración permanece independiente de la velocidad. Sin embargo, tradicionalmente el valor predeterminado.

5: el poder se acelera mediante una función de potencia. La velocidad es el exponente aquí. Se adhiere al umbral. Será difícil controlarlo fácilmente, por lo que es importante que haya ajustado correctamente su estimación de velocidad.

6: lineal solo lineal a velocidad y aceleración. Simple y limpio.

7: limitado asciende suavemente a la aceleración, maximizando en el umbral, donde se vuelve plano (es limitado).

Entonces, de eso podemos ver que si establecemos esta propiedad en -1, deshabilitará la aceleración por completo.

$ xinput set-prop 10 259 -1

Entonces ahora no tenemos aceleración, pero ¿es eso lo que queremos? El mouse es un poco lento ahora. Lamentablemente así es como es. Con la aceleración desactivada, obtienes una relación 1: 1 entre el mouse y la pantalla. Mueve el mouse hacia la izquierda un punto y el puntero del mouse se mueve un píxel hacia la izquierda. Si hubiera una manera de multiplicar el movimiento de entrada (digamos por 2), cualquier otro píxel en cada eje sería inaccesible para el mouse. Eso haría que el posicionamiento preciso del mouse sea bastante difícil. La configuración de 'sensibilidad' en algunos paneles de control de mouse GUI en realidad hace lo contrario de lo que cabría esperar: la más sensible es una relación 1: 1; es la aceleración lo que hace que parezca mucho más rápido.

Entonces quieres un movimiento más rápido, pero no quieres la aceleración. La única forma de hacerlo es en hardware. Básicamente, deberá comprar un mouse más sensible. Busque uno con un DPI más alto (puntos por pulgada, sí, como una impresora). Creo que mi viejo Microsoft IntelliEye es lo suficientemente sensible con la aceleración desactivada para ser utilizable.

¿O tal vez tu mouse es demasiado sensible? Incluso con la aceleración desactivada, ¿es demasiado rápido para tu gusto? Bueno, ahí es donde el

Device Accel Constant Deceleration (260):      1.0000

entra el ajuste. Esta es una relación de desaceleración constante (o desinfección). Por defecto es 1: 1, pero tomará cualquier número (incluso fracciones) por encima de eso. Para obtener una ligera desaceleración del mouse:

$ xinput set-prop 10 260 1.2

O una desaceleración masiva para un trabajo realmente delicado:

$ xinput set-prop 10 260 10

O vuelva a la normalidad:

$ xinput set-prop 10 260 1

Esto funciona incluso cuando el perfil de aceleración se establece en -1 (Deshabilitado).

Majenko
fuente
¿Qué sucede si quiero menos sensibilidad con un mouse de DPI alto? No, lo siento, el mapeo 1: 1 simplemente no funciona. Y el siguiente valor no es 1: 2, podría hacer, digamos, 1: 1.2. De hecho, estoy bastante seguro de que el código de aceleración actual tiene un millón de formas diferentes de ajustar las velocidades y lograr una resolución de subpíxeles. Si solo hubiera un perfil de "sin aceleración", en lugar de "deshabilitar completamente las subrutinas de aceleración".
aib
@aib Comprueba mi edición
Majenko
Lo siento, no es la desaceleración del puntero lo que necesito. (Bueno, tal vez lo sea, pero después de aumentar el movimiento de mi mouse, y sin comprar un nuevo mouse, gracias.)
aib
Esto debe ser aceptado. No sabía que la desaceleración puede ser flotante, y no solo entera. ¡Gracias! El perfil ninguno realmente desactiva la aceleración (a diferencia de las ventanas).
inf3rno
En Debian Stretch, estos ya no parecen funcionar: después de la actualización, la propiedad Device Accel Constant Deceleration desapareció, y lo que tengo para este mouse (xinput --list-props) ya no parece afectarlo (dejándome con Un ratón inútil de noche).
Jubatian
2

Mirando las fuentes de X.org, jugando con un servidor personalizado y haciendo algunas pruebas obsesivas con mi mouse, puedo decir con seguridad que el perfil limitado actual (7) logra esto cuando el thresholdvalor se establece en 0. El accelerationvalor se convierte en la velocidad escalador (escalar?).

Entonces:

xinput set-prop <device> "Device Accel Profile" 7
xset m <velocity> 0

La segunda parte también se puede configurar utilizando el panel de configuración del mouse de su entorno de escritorio. No olvide que debe estar en x/yforma para valores no enteros, por ejemplo, 16/10para 1.6.

También hay algunas otras configuraciones (desaceleración, etc.) para ajustar, pero esto se ocupa de la peor parte del problema. Algunos archivos de configuración deben editarse para su permanencia, pero nuevamente, lo importante es que es posible.

Editar: para la permanencia, puede agregar esto a su xorg.xconf:

Section "InputClass"
        Identifier "Mouse with No Acceleration"
        MatchIsPointer "yes"
        MatchProduct "Mouse"
        Option "AccelerationProfile" "7"
EndSection

A partir de ahí, puede usar la configuración del mouse de su entorno de escritorio, como he mencionado. Sin embargo, si desea una xorg.confsolución completa :

Section "InputClass"
        Identifier "Mouse With No Acceleration"
        MatchIsPointer "yes"
        MatchProduct "Mouse"
        Option "AccelerationProfile"     "7" # "limited" profile
        Option "AccelerationNumerator"   "2" # these adjust the sensitivity
        Option "AccelerationDenominator" "1" # these adjust the sensitivity
        Option "AccelerationThreshold"   "0" # this disables acceleration
                                             # in the "limited" profile
EndSection
aib
fuente
<3 Gracias. Incluso funciona para el modo de suspensión.
Simon A. Eugster
0

Sé que esto es viejo, pero creo que merece la pena agregar una respuesta a una pregunta ya formulada. XSET hará el trabajo por usted muy probablemente. El comando que ejecuté fue xset m 1 1...

El contenido de la página de manual para xset que he seleccionado aquí de xset (1) para usted para las opciones del mouse:

ratón

La opción m controla los parámetros del mouse; puede abreviarse como 'm'. Los parámetros para el mouse son acceleration' andumbral '. La aceleración se puede especificar como un entero o como una fracción simple. El mouse, o cualquier puntero al que esté conectada la máquina, irá a acceleration' times as fast when it travels more thanlos píxeles de umbral en poco tiempo. De esta forma, el mouse se puede usar para una alineación precisa cuando se mueve lentamente, pero se puede configurar para que recorra la pantalla con un movimiento de la muñeca cuando lo desee. Se pueden omitir uno o ambos parámetros para la opción m, pero si solo se proporciona uno, se interpretará como la aceleración. Si no se utilizan parámetros o se usa el indicador 'predeterminado', se establecerán los valores predeterminados del sistema.

Si el threshold' parameter is provided and 0, theparámetro de aceleración '' se utilizará en el exponente de una fórmula> más natural y continua, que proporciona un control preciso para la cámara lenta pero un gran alcance para el movimiento rápido y una transición progresiva para los movimientos intermedios. El valor de 'aceleración' recomendado en este caso es de 3/2 a 2, pero no se limita a ese rango.

Descargo de responsabilidad: esto no sobrevive a un reinicio / reinicio sin algún truco adicional ...

N_mag
fuente