X.Org'da (Linux) fare hızlandırmasını devre dışı bırakma


11

Bu, Mac OS X'te fare hızlandırmayı devre dışı bırakma sorununun Linux sürümüdür . Umarım bu sefer bir cevap alırım.

Fare hızlandırmasından bıktım ve tamamen doğrusal bir fare tepkisine sahip olmak istiyorum. Bu, işaretçi hızlandırmasıyla ilgili X.Org wiki sayfasındaki 5 veya daha fazla yöntemden (bazıları açıkça ima edilmiştir) herhangi biriyle kolayca elde edilebilir . Ancak, hız ölçeklendirmesini de devre dışı bırakırlar .

Cihaz ve ekran koordinatları arasında 1: 1 eşleme istemiyorum. N'nin sabit olduğu bir 1: N eşlemesi istiyorum . Herhangi bir fikir?

Yanıtlar:


15

Ben eserler bulduk tek yolu (ve sadece Ubuntu üzerinde çalıştık) ile xinputkomuta.

Öncelikle değiştirmek istediğiniz farenin cihaz numarasını tanımlamanız gerekir:

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

Şimdi, bu örnekte Microsoft faremle oynayacağım. id = 10

Şimdi bu cihazın hangi özellikleri işleyebileceğini görelim:

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

Bu değer sürücünün ivmeyi nasıl ele aldığını gösterir:

-1: hiçbiri hıza bağlı işaretçi hızlanma veya yavaşlama yok. Sabit yavaşlama da kullanılmazsa, bazı döngülerden tasarruf ederek hareket işleme baskılanır.

0: klasik (varsayılan) eski davranışa benzer, ancak daha tahmin edilebilir. = /! = 0 eşiğine göre 'polinom' ve 'basit' arasında seçim yapar.

1: donanım sürücüsü yüklerse cihaza bağlı olarak kullanılabilir. Synaptics için geliyor olabilir.

2: polinom Ölçekler polinom: hız katsayı olarak işlev görür, ivme üs olur. Çok kullanışlı, önerilen profil.

3: pürüzsüz doğrusal ölçekler çoğunlukla doğrusal, ancak pürüzsüz (doğrusal olmayan) başlangıç ​​ile.

4: basit Hızlandırılmış / hızlandırılmamış, ancak yumuşak bir geçiş aralığı ile geçişler. Bu, ivmenin hızdan bağımsız olduğu iki niveaus üzerinde hızlanma temel sorununa sahiptir. Ancak geleneksel olarak varsayılan.

5: güç , bir güç fonksiyonu ile hızlanır. hız burada üstür. Eşik değere bağlı kalır. Kolayca kontrol edilmesi zorlaşacaktır, bu nedenle hız tahmininizi doğru şekilde ayarlamanız önemlidir.

6: doğrusal hız ve ivme doğrusal. Basit ve temiz.

7: sınırlı düzleme hızlanır, eşikte maksimum olur, düz hale gelir (sınırlıdır).

Bundan dolayı, bu özelliği -1 olarak ayarlarsak, ivmeyi tamamen devre dışı bırakacağını görebiliriz.

$ xinput set-prop 10 259 -1

Şimdi ivme yok, ama istediğimiz bu mu? Fare şimdi biraz yavaş. Ne yazık ki böyle. Hızlanma devre dışı bırakıldığında, fare ve ekran arasında 1: 1 bir ilişki elde edersiniz. Fareyi bir nokta sola hareket ettirirsiniz ve fare işaretçisi bir piksel sola hareket eder. Giriş hareketini çarpmanın bir yolu olsaydı (2 ile söyleyin), o zaman her eksendeki diğer her piksel fareye erişemezdi. Bu, farenin doğru konumlandırılmasını oldukça zorlaştırır. Bazı GUI fare kontrol panellerindeki 'hassasiyet' ayarı aslında beklediğinizin tam tersini yapar - en hassas olanı 1: 1 oranıdır - bu çok daha hızlı görünmesini sağlayan ivmedir.

Böylece daha hızlı hareket istiyorsunuz, ama hızlanma istemiyorsunuz. Bunu yapmanın tek yolu donanımda. Temel olarak, daha hassas bir fare satın almanız gerekecek. Daha yüksek DPI'ye sahip olanı arayın (İnç Başına Nokta - evet, aynı bir yazıcı gibi). Eski Microsoft IntelliEye'imin hızlanmanın devre dışı bırakılabileceği kadar hassas olduğunu düşünüyorum.

Ya da fareniz çok hassas mı? Hızlanma devre dışı olsa bile beğeninize göre çok hızlı mı? İşte burası

Device Accel Constant Deceleration (260):      1.0000

Bu sabit bir yavaşlama (veya desinitize etme) oranıdır. Varsayılan olarak 1: 1'dir ancak bunun üzerinde herhangi bir sayı (hatta kesirler) alacaktır. Farede hafif bir yavaşlama elde etmek için:

$ xinput set-prop 10 260 1.2

Veya gerçekten hassas işler için büyük bir yavaşlama:

$ xinput set-prop 10 260 10

Veya normale döndürün:

$ xinput set-prop 10 260 1

Bu, hızlanma profili -1 (Devre Dışı) olarak ayarlandığında bile çalışır.


Yüksek DPI'lı bir fareyle daha az hassasiyet istersem ne olur ? Hayır, üzgünüm, 1: 1 haritalama işe yaramıyor. Ve bir sonraki değer 1: 2 değil, diyelim ki 1: 1.2. Aslında, mevcut hızlandırma kodunun hızları ince ayarlamak ve alt piksel çözünürlüğü elde etmek için milyonlarca farklı yolu olduğundan eminim. Sadece "hızlanma yok" profili olsaydı - "hızlanma alt programlarını tamamen devre dışı bırak" ın aksine.
aib

@aib Benim düzenlememi kontrol et
Majenko

Üzgünüm, ihtiyacım olan işaretçi yavaşlaması değil. (Belki de öyledir, ancak fare hareketimi
büyüttükten

Bu kabul edilmelidir. Yavaşlamanın sadece tamsayı değil, şamandıra olabileceğinin farkında değildim. Teşekkürler! Hiçbiri profili gerçekten hızlanmayı kapatır (pencerelerin aksine).
inf3rno

Debian Stretch'te bunlar artık çalışmıyor gibi görünüyor: Yükseltmeden sonra Device Accel Sabit Yavaşlama özelliği kayboldu ve bu fare için sahip olduğum şey (xinput --list-props) artık onu etkilemiyor gibi görünmüyor ( bir gece yararsız fare).
Jubatyan

2

X.org'un kaynaklarına bakarak, özel bir sunucu ile oynamak ve faremle takıntılı bir test yapmak , değer 0 olarak ayarlandığında mevcut sınırlı profilin (7) bunu başardığını rahatlıkla söyleyebilirim threshold. accelerationDeğer daha sonra hız olur ölçekleyici (skaler?).

Yani:

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

İkinci bölüm, masaüstü ortamınızın fare ayarları paneli kullanılarak da ayarlanabilir. x/yTamsayı olmayan değerler için, örneğin 16/101.6 için formda olması gerektiğini unutmayın .

Ayarlamak için başka ayarlar da (yavaşlama vb.) Vardır, ancak bu sorunun en kötü yanı ile ilgilenir. Bazı yapılandırma dosyaları kalıcılık için düzenlenmelidir, ancak yine önemli olan, bunun mümkün olmasıdır.

Düzenleme: Kalıcılık için bunu aşağıdakilere ekleyebilirsiniz xorg.xconf:

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

Bundan sonra, bahsettiğim gibi masaüstü ortamınızın fare ayarlarını kullanabilirsiniz. Ancak, eksiksiz bir xorg.confçözüm istiyorsanız :

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

<3 Teşekkürler. Uyku modunda bile çalışır.
Simon A. Eugster

0

Bunun eski olduğunu biliyorum, ama bence zaten sorulan bir soruya cevap eklemenin faydası var. XSET işi büyük olasılıkla sizin için yapar. Koştuğum komut xset m 1 1...

Xset için man sayfası içeriği Burada fare seçenekleri için xset (1) ' den seçildim :

fare

M seçeneği fare parametrelerini kontrol eder; 'm' olarak kısaltılabilir. Fare parametreleri acceleration' andeşiktir '. Hızlanma bir tamsayı veya basit bir kesir olarak belirtilebilir. Fare veya makinenin bağlı olduğu her hangi bir işaretçi acceleration' times as fast when it travels more thankısa sürede eşik piksellerine gider . Bu şekilde, fare yavaşça hareket ettirildiğinde hassas hizalama için kullanılabilir, ancak istendiğinde bileğin bir hareketiyle ekran boyunca hareket edecek şekilde ayarlanabilir. M seçeneği için parametrelerden biri veya her ikisi de atlanabilir, ancak yalnızca biri verilirse, hızlanma olarak yorumlanır. Herhangi bir parametre veya 'varsayılan' bayrağı kullanılmazsa, sistem varsayılanları ayarlanır.

Eğer threshold' parameter is provided and 0, thehızlanma '> parametresi daha doğal ve sürekli> bir formülün üssünde kullanılacaksa, yavaş hareket için hassas kontrol sağlar ancak hızlı> hareket için büyük erişim ve aradaki hareketler için aşamalı bir geçiş sağlar. Bu durumda önerilen 'hızlanma' değeri 3/2 ila 2'dir, ancak bu aralıkla sınırlı değildir.

Feragatname: Bu, ekstra bir hile yapmadan yeniden giriş / yeniden başlatmadan sağ kalmaz ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.