Desabilitando a aceleração do mouse no X.Org (Linux)

11

Esta é a versão Linux do meu Desativando a aceleração do mouse no Mac OS X < pergunta. Espero receber uma resposta desta vez.

Estou cansado da aceleração do mouse e quero ter uma resposta do mouse completamente linear. Isso é facilmente alcançável por meio de qualquer um dos 5 ou mais métodos (alguns subentendidos) na página da wiki X.Org no ponteiro. aceleração . No entanto, eles também desativam o escalonamento de velocidade .

Eu não quero um mapeamento 1: 1 entre as coordenadas do dispositivo e da tela. Eu quero um mapeamento 1: N onde N é uma constante . Alguma idéia?

    
por aib 18.03.2011 / 16:03

3 respostas

2

Olhando através das fontes do X.org, brincando com um servidor personalizado e fazendo alguns testes obsessivos com o meu mouse, posso dizer com segurança que o perfil atual limitado (7) alcança isso quando o% co_de O valor% está definido como 0. O valor threshold torna-se então o escalonador de velocidade (escalar?).

Então:

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

A segunda parte também pode ser definida usando o painel de configurações do mouse do ambiente de área de trabalho. Não se esqueça de que precisa estar no formato acceleration para valores não inteiros, por exemplo, x/y para 1,6.

Existem também outras configurações (desaceleração, etc.) para ajustar, mas isso cuida da pior parte do problema. Alguns arquivos de configuração devem ser editados para permanência, mas, novamente, o importante é que é possível.

Editar: para permanência, você pode adicionar isso ao seu 16/10 :

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

A partir daí, você pode usar as configurações de mouse do ambiente de área de trabalho, como mencionei. No entanto, se você quiser uma solução completa de xorg.xconf :

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
    
por 31.12.2012 / 02:48
16

A única maneira que eu encontrei que funciona (e eu só tentei no Ubuntu) é com o comando xinput .

Primeiro, você precisa identificar o número do dispositivo para o mouse que deseja alterar:

# 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)]

Agora, neste exemplo, estarei jogando com meu mouse da Microsoft. id = 10

Agora vamos ver quais propriedades este dispositivo pode manipular:

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

Este valor é como o driver lida com a aceleração:

-1: none sem aceleração ou desaceleração do ponteiro dependente da velocidade. Se a desaceleração constante também não for utilizada, o processamento de movimento será suprimido, economizando alguns ciclos.

0: classic (o padrão) semelhante ao comportamento antigo, mas mais previsível. Seleciona entre 'polinomial' e 'simple' com base no limite = /! = 0.

1: dependente de dispositivo disponível se o driver de hardware o instalar. Pode estar chegando para synaptics.

2: polinomial Polinômios de escalas: a velocidade serve como coeficiente, sendo a aceleração o expoente. Muito utilizável, o perfil recomendado.

3: escalas lineares suaves são geralmente lineares, mas com um início suave (não linear).

4: simples Transições entre aceleradas / não aceleradas, mas com um intervalo de transição suave. Isso tem o problema fundamental de acelerar em dois niveaus, nos quais a aceleração permanece independente da velocidade. Tradicionalmente, o padrão no entanto.

5: potência acelera por uma função de energia. a velocidade é o expoente aqui. Adere ao limite. Facilmente ficará difícil de controlar, por isso é importante que você tenha ajustado adequadamente sua estimativa de velocidade.

6: linear apenas linear para velocidade e aceleração. Simples e limpo.

7: limitado ascende suavemente até a aceleração, maximizando o limiar, onde se torna plano (é limitado).

Então, podemos ver que, se definirmos essa propriedade como -1, a aceleração será desativada completamente.

$ xinput set-prop 10 259 -1

Então agora não temos aceleração, mas é isso que queremos? O mouse está um pouco lento agora. Infelizmente é assim. Com a aceleração desativada, você obtém uma relação de 1: 1 entre o mouse e o monitor. Você move o mouse um ponto e o ponteiro do mouse se move um pixel para a esquerda. Se houvesse uma maneira de multiplicar o movimento de entrada (digamos por 2), todos os outros pixels em cada eixo seriam inacessíveis ao mouse. Isso tornaria o posicionamento preciso do mouse bastante difícil. A configuração de 'sensibilidade' em alguns painéis de controle de mouse da GUI realmente faz o oposto do que você esperaria - a mais sensível é uma proporção de 1: 1 - é a aceleração que faz com que pareça muito mais rápido.

Então você quer um movimento mais rápido, mas não quer aceleração. A única maneira de fazer isso é no hardware. Basicamente, você precisará comprar um mouse mais sensível. Procure por um com maior DPI (Dots Per Inch - sim, assim como uma impressora). Acho que meu antigo Microsoft IntelliEye é sensível o suficiente com a aceleração desativada para ser utilizável.

Ou talvez seu mouse seja sensível demais? Mesmo com a aceleração desativada, é muito rápido para o seu gosto? Bem, é aí que o

Device Accel Constant Deceleration (260):      1.0000
A configuração

entra em cena. Essa é uma relação de desaceleração constante (ou desinsitização). Por padrão, é 1: 1, mas terá qualquer número (até frações) acima disso. Para obter uma ligeira lentidão do mouse:

$ xinput set-prop 10 260 1.2

Ou uma desaceleração maciça para um trabalho realmente delicado:

$ xinput set-prop 10 260 10

Ou retorne ao normal:

$ xinput set-prop 10 260 1

Isso funciona mesmo quando o perfil de aceleração está definido como -1 (Desativado).

    
por 21.03.2011 / 00:02
0

Eu sei que isso é antigo, mas acho que vale a pena adicionar uma resposta a uma pergunta já feita. O XSET fará o trabalho para você com maior probabilidade. O comando que eu executei era xset m 1 1 ...

O conteúdo da página man do xset foi curado aqui em xset ( 1) para você para as opções do mouse:

mouse

The m option controls the mouse parameters; it may be abbreviated to 'm'. The parameters for the mouse are acceleration' andthreshold'. The acceleration can be specified as an integer, or as a simple fraction. The mouse, or whatever pointer the machine is connected to, will go acceleration' times as fast when it travels more thanthreshold' pixels in a short time. This way, the mouse can be used for precise alignment when it is moved slowly, yet it can be set to travel across the screen in a flick of the wrist when desired. One or both parameters for the m option can be omitted, but if only one is given, it will be interpreted as the acceleration. If no parameters or the flag 'default' is used, the system defaults will be set.

If the threshold' parameter is provided and 0, theacceleration' >parameter will be used in the exponent of a more natural and continuous >formula, giving precise control for slow motion but big reach for fast >motion, and a progressive transition for motions in between. Recommended 'acceleration' value in this case is 3/2 to 2, but not limited to that range.

Disclaimer: isso não sobrevive a um relogin / reboot sem algum truque extra ...

    
por 06.11.2015 / 19:54