วิธีการผูกปุ่มเมาส์เพื่อคีย์?


19

ฉันมีLogitech MX400 Laser Mouseซึ่งมี 5 ปุ่ม + 4 สำหรับการเลื่อนแนวตั้ง / แนวนอน ฉันต้องการให้มันตั้งค่าดังนั้นแทนที่จะเลื่อนแนวนอนกดขวาบน scrollwheel จะส่งCtrl+ Tabและซ้ายจะส่งCtrl+ Shift+ Tabซึ่งจะช่วยให้ฉันวนรอบแท็บในเบราว์เซอร์

นอกจากนี้มันจะดีถ้าฉันสามารถทำการแมปปุ่มกลางให้กับปุ่มที่อยู่ด้านข้างได้เพราะมันยากที่จะกดลงไป

โบนัสอีกอย่างก็คือถ้าฉันสามารถเขียนสคริปต์ที่อนุญาตให้ฉันกำหนดปุ่มทำสิ่งที่ขึ้นอยู่กับว่าหน้าต่างใดเปิดใช้งานอยู่ในปัจจุบัน

ฉันลองใช้แล้วxmodmapแต่ฉันเห็นวิธีจัดเรียงปุ่มใหม่ไม่ได้ให้ส่งสัญญาณคีย์

ขอบคุณล่วงหน้า.


ปุ่มแผนที่ (โดยใช้xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9

คำตอบ:


18

xbindkeysและXteสามารถช่วยให้คุณ

ตัวอย่างเช่นไฟล์. xbindkeysrc ของฉันมีลักษณะดังนี้:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9

นี่เป็นสิ่งที่วิเศษและสามารถขยายได้ขอบคุณมาก
Callum Rogers

1
ที่จะได้รับXteบน Ubuntu 16.x คุณจะต้องติดตั้งxautomationจากฉลาด
1111161171159459134

มันไม่ทำงานเช่นเดียวกับที่ฉันชอบเพราะมันไม่ทำงานเหมือนกันถ้าฉันกดปุ่มค้างไว้ เมาส์ตัวเก่าของฉันมีปุ่มที่ช่วยให้ล้อหมุนหมุนได้อย่างอิสระซึ่งดีมากถ้าฉันแค่อยากเริ่มให้มันเคลื่อนที่เร็วและเลื่อนไปทางยาว แต่ปุ่มใหม่ของฉันไม่มีนั้นฉันเลยผูกสองปุ่มไว้ด้านข้าง (ฉันคิดว่าพวกเขาออกแบบมาเพื่อใช้เป็นปุ่มย้อนกลับ / ไปข้างหน้าสำหรับการท่องเว็บ) กับปุ่ม PgUp / PgDn แต่ฉันต้องกดมันซ้ำ ๆ ถ้าฉันต้องการเลื่อนต่อไป; ฉันไม่สามารถค้างไว้ได้ ฉันจะทำให้ปุ่มกดค้างไว้ตราบใดที่ฉันกดปุ่มค้างไว้?
flarn2006

5

ขอบคุณทุกคนสำหรับการแก้ปัญหา นี่คือคำแนะนำที่เข้าใจผิด / รวมมากขึ้น (ทำบน Xubuntu 18.04)

  1. เปิดเทอร์มินัล (เช่น xterm / terminal / terminator) กลายเป็น root ( sudo su -) หรือใช้ sudo หน้าคำสั่ง:

    apt install xbindkeys xautomation
  2. ตรวจสอบการแมปปุ่มด้วยxevคุณไม่จำเป็นต้องได้รับอนุญาตรูทดังนั้นออกจากเซสชันรูท (ด้วยexit) หรือเปิดเทอร์มินัลอื่นในฐานะผู้ใช้

    xev | grep button
  3. หน้าต่างเล็ก ๆ จะปรากฏขึ้น คุณต้องเลื่อนเมาส์ไปที่หน้าต่างนั้นและกดปุ่มที่คุณต้องการทำการแมปใหม่ ตัวอย่างเอาต์พุตในเทอร์มินัลจะเป็น:

    state 0x0, button 8, same_screen YES

    นี่คือปุ่มด้านที่ 2 บนเมาส์ซึ่งฉันต้องการใช้เป็น PAGE_DOWN

    state 0x0, button 9, same_screen YES

    นี่คือปุ่มด้านข้างที่ 1 (ใช่คำสั่งซื้อจะถูกกลับรายการ) ที่ฉันต้องการใช้เป็น PAGE_UP

  4. เมื่อคุณมีปุ่มทั้งหมดที่คุณต้องการทำการแมปใหม่คุณสามารถปิดหน้าต่าง xev ขนาดเล็กได้ เปิดโปรแกรมแก้ไขที่คุณชื่นชอบ (เช่น gedit / vi / nano) และแก้ไขไฟล์การกำหนดค่า

    vi .xbindkeysrc
  5. หากคุณมีเนื้อหาบางส่วนในไฟล์แล้วให้ดูว่ามีการเชื่อมโยงที่เหมือนกันอยู่แล้ว (ไม่น่าเป็นไปได้ไม่ใช่ตามค่าเริ่มต้น) และเพิ่มในตอนท้าย

    #Pagedown press
    "xte 'keydown Next'"
    b:8
    
    #Pagedown release
    "xte 'keyup Next'"
    b:8 + Release
    
    #Pagedup press
    "xte 'keydown Prior'"
    b:9
    
    #Pageup release
    "xte 'keyup Prior'"
    b:9 + Release

    หมายเหตุ: คุณต้องมีสองรายการหนึ่งรายการสำหรับการกดปุ่มและอีกรายการสำหรับการเปิดตัว

  6. ปุ่ม 8 + 9 จะถูกแมปกับปุ่ม "ถัดไป" (ซึ่งคือ PAGE_DOWN) และ "ก่อนหน้า" (PAGE_UP) หากคุณต้องการแมปคีย์ที่แตกต่างกันคุณสามารถค้นหา keysymbol ด้วย xev

    xev | grep keysym
  7. เหมือนเมื่อก่อนเริ่มในเทอร์มินัลเลื่อนเมาส์ไปที่หน้าต่างเล็ก ๆ แล้วกดปุ่มที่ต้องการ

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
  8. บันทึกและฆ่า xbindings

    killall xbindkeys ; xbindkeys

ตอนนี้คุณสามารถใช้ปุ่มด้านข้างเพิ่มเติมบนเมาส์ได้แล้ว การตั้งค่าจะถูกโหลดโดยอัตโนมัติในการรีบูต / ล็อกอินครั้งถัดไป คุณต้องการเพียงkillall [...]คำสั่งจากด้านบนหากคุณเปลี่ยนการตั้งค่า

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