Orta fare düğmesini devre dışı bırakma


17

Bu yüzden diğer çeşitli sorulara bakmaya çalıştım ama çoğunlukla orta fare hamurunu devre dışı bırakmaya odaklandılar.

Temelde Logitech G500'lerimdeki orta fare düğmesi bozuk ve rastgele "tıklamaya" devam ediyor, bu yüzden iş yapma şansını azaltıyor.

Devre dışı bırakmanın herhangi bir yolu var mı? Veya hiçbir şeye eşlemiyor musunuz?

Bu bir kopya ise teşekkürler ve üzgünüm.

xinput list çıktı:

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜   ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜   ↳ Turtle Beach Turtle Beach PX3 (XBOX) id=8 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=9 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=10 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=12 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=13 [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)]
    ↳ Razer Razer DeathStalker id=11 [slave keyboard (3)]

Bu komutu yürütün xinput list | grep 'id='ve çıktıyı kaydedin.
Helio

Bu fare için, bu fare için iki cihaz kimliği vardır. Xinput test 9'u çalıştırdıktan sonra, faremin orta düğmesinin kimliği 2
Tom Hamilton Stubber

Yanıtlar:


24

Bu komutları yürütün:

xinput set-button-map 9 1 0 3
xinput set-button-map 10 1 0 3

Açıklama ( @Yehosef tarafından bağışlanmıştır ):

İlk sayı işaretçinin kimliğidir (genellikle sadece bir tane olacaksınız, bu durumda iki, 9 ve 10 vardı).

Sonraki sayılar, birinci, ikinci ve üçüncü (yani, sol, orta, sağ) fare düğmeleriyle yaptıklarınızdır. "1 0 3", sol düğmenin sol tıklama (eylem 1) yapması, orta düğmenin hiçbir şey yapmaması ve sağ düğmenin sağ tıklama yapması gerektiğini belirtir (işlem 3). Eğer orta düğmeyi yapmak istiyorsanız sol tıklama da "1 1 3" kullanabilirsiniz. Sağ ve sol eylemleri değiştirmek isterseniz "3 0 1" kullanabilirsiniz. Daha fazla bilgi için https://wiki.ubuntu.com/X/Config/Input adresine bakın .


Çok teşekkürler, buna bakmaya çalışmak çok sinir bozucuydu.
Tom Hamilton Stubber

1
Teşekkürler! Merak edenler için - 9/10, farenin giriş kimliği ve 1 0 3, birinci, ikinci ve üçüncü fare düğmelerinin eşleşmeleridir. Tüm düğmelerin aynı şeyi yapmasını istiyorsanız 1 1 1 kullanabilirsiniz veya sağ ve sol düğmeleri değiştirmek isterseniz 3 0 1 kullanabilirsiniz.
Yehosef

@Yehosef: Teşekkürler! OP komutları çalıştırdığında ne olduğunu açıklamamıştım. Lütfen yeni ve ayrıntılı bir cevap oluşturun, bana ping atın, ben oylayacağım. Bu ilginç bir açıklama.
Helio

@Helio Farklı bir cevabım yok - ilgilenenler için daha fazla açıklama. Belki de cevabınızı bu bilgiyi içerecek şekilde düzenlemek istersiniz. Cevabınızı düzenlemeyi düşünüyordum - ama insanlar cevaplarıma ekstra detaylar eklediğinde genellikle hoşlanmıyorum - bu yüzden
reddedildim

2
İlk sayıyı nasıl belirlerim? xinput list | grep 'id='Farem / dokunmatik yüzeyime en çok benzeyen şeyleri aradım ve arıyorum? Doğru olup olmadığını söylemenin kesin bir yolu var mı?
Kvothe

3

Aşağıdaki talimatlar adresindeki bilgilere dayanmaktadır: Ubuntu Wiki'deki ("Örnek: Kaydırma tekerleği faresine orta fare düğmesi yapıştırmasını devre dışı bırakma" başlığına gidin).

İlk olarak, giriş aygıtlarını listeleyerek işaretçinin kimliğini belirleyin:

xinput list | grep 'id='

İşaretçinizin adını içeren satırı arayın, "id =" ifadesinden hemen sonra aygıt kimliği de olmalıdır. Örneğin, bu cihazın kimliği 10'dur:

Lenovo ThinkPad Compact USB Keyboard with TrackPoint    id=10   [slave  pointer  (2)]

Sonra, o cihazın geçerli düğme haritasını alın (cihazımın kimliğini kullanacağım, bu 10'dur):

xinput get-button-map 10

Çıktı:

1 2 3 4 5 6 7 8 9

Bu, işaretçi düğmelerinin eylemlere eşleştirilmesidir; burada sayı eylem kodunu ve konum - düğmesini temsil eder.

İkinci harita ile ilgileniyoruz - 2 numaralı "Orta Düğme Tıklaması" eylemine ve konumu - gerçek orta düğmeye karşılık geliyor.

Herhangi bir eylemi tetikleyen orta düğmeyi devre dışı bırakmak için xinput set-button-map, cihazın kimliğine ve güncellenmiş haritaya sahip komutu kullanırım (yeni eylem kodu 0 - işlem yok). Tüm haritayı koymaya gerek yok - ilgilenilen düğme yeterli olana kadar harita (geri kalanı güncellenmeyecek):

 xinput set-button-map 10 1 0

Bu kadar.


Bu, Ubuntu 18.04 ile bir Lenovo Thinkpad T580 üzerinde dokunmatik yüzeyim için çalıştı
Russell England

0

set-button-maporta tıklama işlevini devre dışı bırakır. Sol + sağ tıklamayı kullanarak orta tıklatmayı taklit etmek için (fareyi kullanarak sekmeyi açıp sekmede açabilirsiniz), ancak fare tekerleği tıklamalarını devre dışı bırakmak için libinput yama yapabilirsiniz:

--- a/src/evdev.c   2019-09-22 17:15:13.498880044 +0300
+++ a/src/evdev.c   2019-09-22 17:15:18.062860221 +0300
@@ -1861,6 +1861,8 @@
    /* Logitech Marble Mouse claims to have a middle button */
    if (device->model_flags & EVDEV_MODEL_LOGITECH_MARBLE_MOUSE)
        libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
+
+   libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
 }

 static void
  • mkdir deb; cd deb; apt source libinput; sudo apt build-dep libinput
  • yukarıdaki yamayı kaydet libinput-1.XX.Y/debian/patches/middle.diff
  • eklemek middle.diffiçindebian/patches/series
  • dpkg-buildpackage -us -uc -b
  • sudo dpkg -i ../libinput10_*.deb
  • Xorg'u yeniden başlatın veya makineyi yeniden başlatın

Ve sol + sağ öykünmeyi etkinleştirmek için xinput listve xinput set-prop 11 "libinput Middle Emulation Enabled" 1tuşlarını kullanın . 11cihaz numarasıxinput list ve set-prop komutunu ekleyebilirsiniz ~/.xstartup.

Veya yeniden oluşturmayı önlemek için bir libinput .quirks dosyası (denenmemiş) kullanın:

[My Mouse]
MatchUdevType=mouse
AttrEventCodeDisable=BTN_MIDDLE;
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.