Menonaktifkan akselerasi mouse di X.Org (Linux)

11

Ini adalah versi Linux dari akselerasi Menonaktifkan mouse saya di pertanyaan Mac OS X. Semoga saya mendapat jawaban kali ini.

Saya bosan dengan akselerasi mouse dan ingin memiliki respons mouse yang sepenuhnya linier. Ini mudah dicapai melalui salah satu dari 5 atau lebih metode (beberapa tersirat halus) pada halaman wiki X.Org pada percepatan pointer . Namun, mereka juga menonaktifkan penskalaan kecepatan .

Saya tidak ingin pemetaan 1: 1 antara perangkat dan koordinat layar. Saya ingin pemetaan 1: N di mana N adalah konstanta . Ada ide?

aib
sumber

Jawaban:

15

Satu-satunya cara saya menemukan yang berfungsi (dan saya hanya mencoba di Ubuntu) adalah dengan xinputperintah.

Pertama, Anda harus mengidentifikasi nomor perangkat untuk mouse yang ingin Anda ubah:

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

Sekarang, dalam contoh ini saya akan bermain dengan mouse Microsoft saya. id = 10

Sekarang mari kita lihat properti apa yang bisa ditangani oleh perangkat ini:

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

Nilai ini adalah bagaimana pengemudi menangani percepatan:

-1: tidak ada percepatan atau perlambatan penunjuk tergantung kecepatan. Jika perlambatan konstan juga tidak digunakan, pemrosesan gerakan ditekan, menghemat beberapa siklus.

0: klasik (default) mirip dengan perilaku lama, tetapi lebih dapat diprediksi. Pilih antara 'polinomial' dan 'sederhana' berdasarkan ambang = /! = 0.

1: tergantung pada perangkat tersedia jika driver perangkat keras menginstalnya. Mungkin akan datang untuk sinaptik.

2: polinomial Timbangan polinomial: kecepatan berfungsi sebagai koefisien, akselerasi menjadi eksponen. Sangat bisa digunakan, profil yang disarankan.

3: skala linear halus sebagian besar linear, tetapi dengan awal yang mulus (non-linear).

4: Transisi sederhana antara dipercepat / tidak terkecuali, tetapi dengan rentang transisi yang mulus. Ini memiliki masalah mendasar percepatan pada dua niveaus, di mana akselerasi tetap independen dari kecepatan. Namun secara tradisional default.

5: daya dipercepat oleh fungsi daya. kecepatan adalah eksponen di sini. Mematuhi ambang batas. Akan dengan mudah menjadi sulit dikendalikan, jadi penting Anda telah menyetel perkiraan kecepatan Anda dengan benar.

6: linear, hanya linear untuk kecepatan dan akselerasi. Sederhana dan bersih.

7: terbatas lancar naik ke akselerasi, maxing out di ambang, di mana ia menjadi datar (terbatas).

Jadi dari situ kita dapat melihat bahwa jika kita menyetel properti ini menjadi -1, ini akan menonaktifkan akselerasi sepenuhnya.

$ xinput set-prop 10 259 -1

Jadi sekarang kita tidak memiliki akselerasi, tetapi apakah itu yang kita inginkan? Mouse agak lambat sekarang. Sayangnya begitulah adanya. Dengan akselerasi dinonaktifkan, Anda mendapatkan hubungan 1: 1 antara mouse dan layar. Anda menggerakkan mouse ke kiri satu titik dan penunjuk mouse memindahkan satu piksel ke kiri. Jika ada cara untuk mengalikan gerakan input (katakan dengan 2) maka setiap piksel lainnya pada setiap sumbu tidak akan dapat diakses oleh mouse. Itu akan membuat penentuan posisi mouse yang akurat menjadi sangat sulit. Pengaturan 'sensitivitas' pada beberapa panel kontrol mouse GUI sebenarnya melakukan kebalikan dari apa yang Anda harapkan - yang paling sensitif adalah rasio 1: 1 - akselerasi yang membuatnya tampak jauh lebih cepat.

Jadi Anda menginginkan gerakan yang lebih cepat, tetapi Anda tidak menginginkan akselerasi. Satu-satunya cara Anda dapat melakukannya adalah di perangkat keras. Pada dasarnya, Anda perlu membeli mouse yang lebih sensitif. Cari satu dengan DPI yang lebih tinggi (Dots Per Inch - ya, sama seperti printer). Saya menemukan Microsoft IntelliEye lama saya cukup sensitif dengan akselerasi dinonaktifkan agar dapat digunakan.

Atau mungkin mouse Anda terlalu sensitif? Bahkan dengan akselerasi dinonaktifkan, itu terlalu cepat untuk Anda sukai? Nah, di situlah tempatnya

Device Accel Constant Deceleration (260):      1.0000

pengaturan masuk. Ini adalah rasio perlambatan konstan (atau desinsitisasi). Secara default 1: 1 tetapi akan mengambil angka (bahkan pecahan) di atas itu. Untuk sedikit memperlambat mouse:

$ xinput set-prop 10 260 1.2

Atau perlambatan besar untuk pekerjaan yang benar-benar rumit:

$ xinput set-prop 10 260 10

Atau kembalikan ke normal:

$ xinput set-prop 10 260 1

Ini berfungsi bahkan ketika profil akselerasi diatur ke -1 (Dinonaktifkan).

Majenko
sumber
Apa yang terjadi jika saya ingin sensitivitas kurang dengan mouse DPI tinggi? Tidak, maaf, pemetaan 1: 1 tidak berfungsi. Dan nilai selanjutnya bukan 1: 2, Anda bisa melakukannya, katakanlah, 1: 1.2. Bahkan, saya cukup yakin kode akselerasi saat ini memiliki sejuta cara berbeda untuk menyempurnakan kecepatan dan mencapai resolusi sub-pixel. Kalau saja ada profil "tidak ada akselerasi" - yang bertentangan dengan "sepenuhnya menonaktifkan subrutin akselerasi."
aib
@aib Periksa edit saya
Majenko
Maaf, ini bukan perlambatan penunjuk yang saya butuhkan. (Yah, mungkin memang begitu, tetapi setelah saya
memperbesar
Ini harus diterima. Saya tidak menyadari bahwa perlambatan dapat mengambang, dan bukan hanya bilangan bulat. Terima kasih! Tidak ada profil yang benar-benar mematikan akselerasi (tidak seperti di windows).
inf3rno
Di Debian Stretch, ini tidak lagi berfungsi: setelah peningkatan, properti Device Accel Constant Deceleration hilang, dan apa yang saya miliki untuk mouse ini (xinput --list-props) tampaknya tidak lagi memengaruhi (meninggalkan saya dengan tikus malam yang tidak berguna).
Jubatian
2

Melihat melalui sumber X.org, bermain-main dengan server khusus dan melakukan beberapa pengujian obsesif dengan mouse saya, saya dapat dengan aman mengatakan bahwa profil terbatas saat ini (7) mencapai ini ketika thresholdnilainya diatur ke 0. accelerationNilai kemudian menjadi kecepatan scaler (skalar?).

Begitu:

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

Bagian kedua juga dapat diatur menggunakan panel pengaturan mouse lingkungan desktop Anda. Jangan lupa bahwa itu harus dalam x/ybentuk untuk nilai-nilai non-integer, misalnya 16/10untuk 1.6.

Ada juga beberapa pengaturan lain (perlambatan dll.) Untuk menyesuaikan, tetapi ini menangani bagian terburuk dari masalah. Beberapa file konfigurasi harus diedit untuk permanen, tetapi sekali lagi, yang penting adalah mungkin.

Sunting: Untuk permanen, Anda dapat menambahkan ini ke xorg.xconf:

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

Dari sana, Anda dapat menggunakan pengaturan mouse lingkungan desktop Anda, seperti yang telah saya sebutkan. Namun, jika Anda menginginkan xorg.confsolusi lengkap :

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
sumber
<3 Terima kasih. Bahkan berfungsi untuk mode tidur.
Simon A. Eugster
0

Saya tahu ini sudah tua, tetapi saya pikir perlu menambahkan jawaban untuk pertanyaan yang sudah diajukan. XSET kemungkinan besar akan melakukan pekerjaan untuk Anda. Perintah yang saya jalankan adalah xset m 1 1...

Isi halaman manual untuk xset saya kurasi di sini dari xset (1) untuk Anda untuk opsi mouse:

mouse

Opsi m mengontrol parameter mouse; mungkin disingkat menjadi 'm'. Parameter untuk mouse adalah acceleration' andambang '. Akselerasi dapat ditentukan sebagai bilangan bulat, atau sebagai fraksi sederhana. Mouse, atau pointer apa pun yang terhubung dengan mesin, akan mencapai acceleration' times as fast when it travels more thanambang piksel dalam waktu singkat. Dengan cara ini, mouse dapat digunakan untuk penyelarasan yang tepat ketika digerakkan perlahan, namun dapat diatur untuk berjalan melintasi layar dalam gerakan pergelangan tangan saat diinginkan. Satu atau kedua parameter untuk opsi m dapat dihilangkan, tetapi jika hanya satu yang diberikan, itu akan ditafsirkan sebagai akselerasi. Jika tidak ada parameter atau tanda 'standar' digunakan, standar sistem akan ditetapkan.

Jika threshold' parameter is provided and 0, theparameter akselerasi akan digunakan dalam eksponen formula yang lebih alami dan kontinu, memberikan kontrol yang tepat untuk gerak lambat tetapi jangkauan besar untuk gerak cepat, dan transisi progresif untuk gerakan di antaranya. Nilai 'percepatan' yang disarankan dalam kasus ini adalah 3/2 hingga 2, tetapi tidak terbatas pada rentang itu.

Penafian: ini tidak selamat dari relogin / reboot tanpa beberapa tipu daya tambahan ...

N_mag
sumber