Faremdeki İleri / Geri düğmelerini nasıl devre dışı bırakırım


36

Faremin talihsiz bir özelliği var. Sol tarafta, kullandığımda başparmağımın çok yumuşak bir şekilde oturduğu yerde, sadece bir fırçanın tıklayacağı kadar hassas olan iki düğme var.

Elbette, bir tarayıcıda basıldığında, bir saatlik youtube videosunu izlemeyi çok daha zorlaştırabilen sinir bozucu ileri / geri düğmelerinden bahsediyorum. Onları etkisiz hale getirmenin bir yolu var mı? Bu X tarafından ele alınır mı?


2
Kullanarak kapatabileceğinizden neredeyse eminim xinputama ayrıntıları bilmiyorum ...
pbm 12:11

Bu soru ve cevap, klavyelerdeki ileri / geri düğmeleri için de geçerlidir, örneğin Thinkpad klavyesinde
Daniel S. Sterling

Yanıtlar:


43

Programı xevbir terminalde başlatın. Fareyi xevpencerenin içinde hareket ettirin ; bir sürü şey göreceksiniz. Sırayla her düğmeye basın. Ardından terminal penceresine geri dönün ve Ctrl+ tuşuna basın C. xevözellikle ButtonPressve ButtonReleasefare tıklamaları için her bir giriş olayının açıklamasını gösterir (ayrıca MotionNotifyfare hareketleri ve diğer olaylar için bir miktar göreceksiniz ).

İleri ve geri düğmeleriniz fare düğmelerine, belki de 8 ve 9 düğmelerine eşlenmiş olabilir.

ButtonPress event, serial 29, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100159, (166,67), root:(1769,98),
    state 0x0, button 8, same_screen YES

Bu durumda, eğer mümkünse, bu düğmeleri tarayıcınızdaki farklı bir işlemle yeniden eşleyin. Alternatif olarak, düğmeleri tarayıcınızın tepki vermediği farklı düğme numaralarına yeniden düzenleyebilir veya düğmelerini tamamen sistem düzeyinde devre dışı bırakabilirsiniz. Bunu yapmak için, bu satırları adlı bir dosyaya yerleştirin ~/.Xmodmap:

! Remap button 8 to 10 and disable button 9.
pointer = 1 2 3 4 5 6 7 10 0

Komutla test et xmodmap ~/.Xmodmap. Çoğu masaüstü ortamı ve pencere yöneticisi, bu komutu oturum açtığınızda otomatik olarak çalıştırır; sizinki değilse, X başladığında çalışması için düzenleyin.

Bu düğmelere bastığınızda fareniz bir klavye olayı gönderebilir.

KeyPress event, serial 32, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100963, (957,357), root:(2560,388),
    state 0x0, keycode 166 (keysym 0x1008ff26, XF86Back), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Bu durumda, şuna benzer satırları yazın ~/.Xmodmap:

keycode 166 = NoSymbol
keycode 167 = NoSymbol

2
Hem soru hem de cevap için teşekkür ederim. Bu arada, xevçıktının deliliğini azaltmak için , sadece grep üzerinden geçirin xev | grep -A2 ButtonPress:; bu, tüm fare hareketi olaylarını, odak olaylarını vb. bırakacaktır ve ButtonPressburada ihtiyacınız olan tüm olayları gösterecektir .
Lambart

Teşekkür ederim! Birkaç saniye içinde yardımcı oldu! :-)
Brian Haak

Bu Wayland'da da çalışıyor!
Ray Foss

2

Sen kullanabilirsiniz xevanahtar eşleştiren düğmesine eşler hangi bulup kullanmadığınız bir şeye haritaya ($ HOME / .xsessionrc cinsinden) aşağıdaki kodu kullanın.

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

Alternatif olarak, bunu bir GUI'den Gnome / KDE veya diğer modern masaüstlerini kullanabilmeniz gerekir.

Yine başka bir seçenek, düğme tanımlarını kaldırmak için xorg.conf dosyasını kesmek olacaktır.


1

düzeltmek için sadece hızlı bir komut, diğer cevaplardan pek de farklı değil:

xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0" #the fix

test yapmak

xmodmap -pp # check the changes
xterm -e xev # test the nullified buttons

# to restore in case you are going to play some game that uses them
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13"

cmd'yi başlangıç ​​uygulamalarına yerleştirebilirsiniz.

Etkin pencerenin tarayıcılarınızdan herhangi biri olup olmadığını kontrol etmek için xdotool kullanmak ve xmodmap'i istendiğinde devre dışı bırakmak / etkinleştirmek için çağırmanız daha iyi olacaktır, ancak bu biraz komut dosyası gerektirebilir:>

Düğmeleri 7'nin üzerinde etkin tutmak için hiçbir neden görmedim, herhangi bir sebep var mı?


0

Xorg config dosyası ile yapılabilir

Yatay kaydırmayı devre dışı bırakan bir örnek: (Yeni dosyayı kaydedin ve yeniden başlatın)

nano /etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf

Section "InputClass"
        Identifier "Logitech catchall"
        MatchIsPointer  "on"
        Driver "libinput"
        Option "HorizontalScrolling" "false"
EndSection

Diğer faydalı komutlar

xinput list
xinput list-props 15

Şimdi bu soru için xorg config dosyası burada remap butonu için kullanılabilir bir örnek

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection

0

Eğer çalışıyorsanız xmodmap(X üzerinde değil, Weyland) komutları ve hatayı alıyorsanız BadValue (integer parameter out of range for operation)içinde X_SetPointerMapping, kullanmak gerekebilir xinputyerine. xinputAygıt kimliklerini almak için parametre olmadan çalıştırın (işaretçi için birini arayın), sonra çalıştırın.

xinput set-button-map [pointer-device-id] 1 2 3 4 5 0 0 0 0

Benim durumumda, farem # 4 cihazdı ve ileri ve geri çalışmak için 6 ve 7'den 8 ve 9'a kadar düğmeler yapmam gerekiyordu, böylece kullandım.

xinput set-button-map 4 1 2 3 4 5 8 9 8 9

( Fareleri değiştirmem durumunda düğmelerin 8 ve 9'unu ayrıca 8 ve 9 ile eşledim.)

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.