วิธีปิดการใช้งานปุ่มส่งต่อ / ย้อนกลับบนเมาส์ของฉัน


36

เมาส์ของฉันมีคุณสมบัติที่โชคร้าย ทางด้านซ้ายขวาที่นิ้วหัวแม่มือของฉันนั่งเบา ๆ เมื่อฉันใช้มันมีปุ่มสองปุ่มที่ไวต่อการสัมผัสเพียงแปรงจะทำให้พวกเขาคลิก

ฉันกำลังพูดถึงแน่นอนเกี่ยวกับปุ่มไปข้างหน้า / หลังที่น่ารำคาญซึ่งหากกดในเบราว์เซอร์สามารถทำให้การดูวิดีโอ YouTube ที่ใช้เวลานานเป็นชั่วโมงซึ่งยากกว่ามาก มีวิธีที่ฉันจะปิดการใช้งานพวกเขา? สิ่งนี้จะถูกจัดการโดย X หรือไม่?


2
ฉันเกือบจะแน่ใจว่าคุณสามารถปิดการใช้xinputงานได้ แต่ฉันไม่ทราบรายละเอียด ...
pbm

คำถามและคำตอบนี้ใช้ได้กับปุ่มย้อนกลับ / ไปข้างหน้าบนคีย์บอร์ดเช่นบนแป้นพิมพ์ Thinkpad
Daniel S. Sterling

คำตอบ:


43

เริ่มโปรแกรมxevในเทอร์มินัล เลื่อนเมาส์ไปที่xevหน้าต่าง คุณจะเห็นสิ่งต่าง ๆ มากมายเลื่อนตาม กดปุ่มแต่ละปุ่ม แล้วสลับกลับไปที่หน้าต่าง terminal และกด+Ctrl แสดงคำอธิบายของเหตุการณ์การป้อนข้อมูลแต่ละรายการโดยเฉพาะและสำหรับการคลิกเมาส์ (คุณจะเห็นจำนวนการเคลื่อนไหวของเมาส์และกิจกรรมอื่น ๆ )CxevButtonPressButtonReleaseMotionNotify

อาจเป็นไปได้ว่าปุ่มไปข้างหน้าและปุ่มย้อนกลับของคุณถูกจับคู่กับปุ่มเมาส์อาจเป็นปุ่ม 8 และ 9:

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

หากเป็นเช่นนั้นให้ทำการแมปปุ่มเหล่านี้ซ้ำกับการกระทำอื่นในเบราว์เซอร์ของคุณหากทำได้ หรือคุณสามารถตั้งค่าปุ่มใหม่ให้กับหมายเลขปุ่มที่แตกต่างกันซึ่งเบราว์เซอร์ของคุณไม่ตอบสนองหรือปิดการใช้งานปุ่มทั้งหมดในระดับระบบ หากต้องการทำสิ่งนี้ให้วางบรรทัดเหล่านี้ในไฟล์ชื่อ~/.Xmodmap:

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

xmodmap ~/.Xmodmapทดสอบด้วยคำสั่ง สภาพแวดล้อมเดสก์ทอปส่วนใหญ่และตัวจัดการหน้าต่างเรียกใช้คำสั่งนี้โดยอัตโนมัติเมื่อคุณเข้าสู่ระบบ หากคุณไม่จัดการให้มันทำงานเมื่อ X เริ่ม

อาจเป็นไปได้ว่าเมาส์ของคุณส่งเหตุการณ์แป้นพิมพ์เมื่อคุณกดปุ่มเหล่านี้:

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

ในกรณีนี้ให้วางบรรทัดแบบนี้ใน~/.Xmodmap:

keycode 166 = NoSymbol
keycode 167 = NoSymbol

2
ขอบคุณทั้งคำถามและคำตอบ อนึ่งเพื่อลดความบ้าของxevการส่งออกเพียงท่อมันผ่าน grep: xev | grep -A2 ButtonPress; สิ่งนี้จะทำให้เหตุการณ์การเคลื่อนไหวของเมาส์ทั้งหมดโฟกัสเหตุการณ์ ฯลฯ และแสดงButtonPressเหตุการณ์ซึ่งเป็นสิ่งที่คุณต้องการที่นี่
Lambart

ขอขอบคุณ! มันช่วยในไม่กี่วินาที! :-)
Brian Haak

วิธีนี้ใช้ได้ใน Wayland ด้วยเช่นกัน!
Ray Foss

2

คุณสามารถใช้xevเพื่อค้นหาคีย์แผนที่ที่แมปปุ่มและใช้รหัสด้านล่าง (ใน $ HOME / .xsessionrc) เพื่อแมปคีย์นั้นกับสิ่งที่คุณไม่ได้ใช้

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

หรือคุณสามารถทำได้จาก GUI ของคุณที่ใช้ Gnome / KDE หรือเดสก์ท็อปสมัยใหม่อื่น ๆ

อีกตัวเลือกหนึ่งคือแฮ็ก xorg.conf เพื่อลบคำจำกัดความของปุ่ม


1

เพียงคำสั่งด่วนในการแก้ไขไม่แตกต่างจากคำตอบอื่น ๆ :

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

การทดสอบ

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"

คุณสามารถใส่ fix cmd ที่แอพเริ่มต้น

จะดีกว่าถ้าใช้ xdotool เพื่อตรวจสอบว่าหน้าต่างที่ใช้งานอยู่เป็นเบราว์เซอร์ของคุณหรือไม่และเรียก xmodmap ตามต้องการเพื่อปิดการใช้งาน / enable'm แต่นั่นจะต้องใช้สคริปต์บางอย่าง:>

ฉันไม่เห็นเหตุผลที่จะเปิดใช้งานปุ่มด้านบน 7 เหตุผลใด ๆ


0

สามารถทำได้ด้วยไฟล์ xorg config

นี่คือตัวอย่างที่ปิดใช้งานการเลื่อนแนวนอน (บันทึกไฟล์ใหม่และรีบูต)

นาโน /etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf

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

คำสั่งที่มีประโยชน์อื่น ๆ

xinput list
xinput list-props 15

ตอนนี้สำหรับคำถามนี้ไฟล์ xorg config สามารถใช้เพื่อทำการแมปปุ่มใหม่ได้ที่นี่เป็นตัวอย่าง

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

0

หากคุณกำลังพยายามxmodmapคำสั่ง (ใน X ไม่ Weyland) และคุณจะได้รับข้อผิดพลาดBadValue (integer parameter out of range for operation)ในX_SetPointerMappingคุณอาจจำเป็นต้องใช้xinputแทน เรียกใช้xinputโดยไม่มีพารามิเตอร์เพื่อรับ ID อุปกรณ์ (มองหาตัวชี้) จากนั้นเรียกใช้

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

ในกรณีของฉันเม้าส์ของฉันคืออุปกรณ์ # 4 และฉันจำเป็นต้องสร้างปุ่ม 6 และ 7 เป็น 8 และ 9 เพื่อไปข้างหน้าและกลับสู่การทำงานดังนั้นฉันจึงใช้

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

(ฉันเก็บปุ่มไว้ 8 และ 9 ก็แมปกับ 8 และ 9 ในกรณีที่ฉันเปลี่ยนหนู)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.