กำหนดค่าปุ่มเมาส์พิเศษภายใต้ Wayland


10

ฉันใช้เมาส์ 10 ปุ่ม (Logitech M705) ภายใต้ X11 etc/X11/xorg.conf.dผมก็สามารถที่จะเป็นหนึ่งในการกำหนดค่าของปุ่มพิเศษที่จะประพฤติเป็นที่สองกลางคลิกโดยการปรับเปลี่ยนไฟล์ใน

ภายใต้ Wayland สิ่งนี้ไม่ทำงานอีกต่อไป libinputแสดงให้เห็นว่างานวิจัยของฉันที่ฉันต้องการจะทำอะไรกับ ฉันคิดว่านี่จะเป็นปัญหาทั่วไป แต่ไม่สามารถหาคำตอบได้ทุกที่

บางคนสามารถอธิบายวิธีการแมปปุ่มเมาส์ใหม่หรืออธิบายว่าทำไมมันไม่สามารถทำได้


ฉันใช้ Wayland อยู่พักหนึ่งแล้วก็หาปุ่มแมปใหม่ไม่เจอ
paulodiovani

คำตอบ:


6

ปุ่มแมปหากคุณกำลังใช้งาน Wayland สามารถทำได้ดังนี้:

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

    state 0x10, button 2, same_screen YES
    

    และฉันต้องการแผนที่บน:

    state 0x10, button 13, same_screen YES
    
  2. จากนั้นเรียกใช้xinput --listและค้นหาอุปกรณ์ตัวชี้ของคุณเหมืองคือ:

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9 ผลตอบแทน:

    1 2 3 4 ... 20
    
  4. xinput set-button-map:

    $ xinput set-button-map 9  1 13 3 4 .. 12 2 14 .. 20
    

หมายเหตุ:แทนที่หมายเลข9สำหรับหมายเลขที่ส่งคืนโดยid=

และถ้าพฤติกรรมของคีย์นั้นถูกกำหนดเหตุการณ์ของคุณจะถูกแมป หากไม่ใช่นั่นเป็นปัญหาที่แตกต่างออกไปเล็กน้อย ภายใต้ Wayland TBH ฉันไม่พบวิธีดำเนินการคำสั่งในเหตุการณ์ (ซึ่งค่อนข้างง่ายกับ Xorg's xbindkeys) และดังนั้นจึงปรับแต่งพฤติกรรมทั้งหมดของเหตุการณ์ที่สำคัญและเมาส์ .. ฉันเชื่อว่า Wayland พยายามที่จะปลอดภัยมากขึ้นและปิดใช้งานพฤติกรรมนี้ .

ไม่ว่าในกรณีใดคุณยังคงมีโอกาสที่จะเปลี่ยนมาใช้ Xorg ได้อย่างง่ายดายและเพลิดเพลินกับการใช้งาน


ทำงานให้ฉัน แต่คุณจะทำการเปลี่ยนแปลงแบบถาวรได้อย่างไร ดูเหมือนว่าผมต้องใช้xinput set-button-mapสำหรับเซสชัน Wayland ใหม่ในแต่ละ ...
mgalgs

1
ใช่คุณต้องเรียกใช้ทุกครั้ง ในการทำให้สิ่งนี้เป็นแบบอัตโนมัติคุณสามารถวางสิ่งนี้ลงในสคริปต์และสร้างไฟล์บริการหรือใส่มันลงในโฟลเดอร์ init ที่ทำงานเมื่อเริ่มต้นระบบซึ่งสอดคล้องกับ distro ของคุณ (บนระบบที่อิงกับ systemd ซึ่งจะเป็น /etc/rc.d/init
.d

คุณสามารถใส่ตัวเลือกในแฟ้ม xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais Volant

สิ่งนี้เปลี่ยนเฉพาะไดรฟ์เวอร์ xorg ไม่ใช่แอพพลิเคชั่นใด ๆ ที่ใช้การเรียงตัวแบบเวย์แลนด์เช่น Gnome Shell หรือ Nautilus
Ray Foss

3

ฉันทำสคริปต์เชลล์ขนาดเล็ก + หน่วย systemd ไฟล์ที่ผมเรียกWayland เมาส์ mapper

ข้อความที่ตัดตอนมาทางคณิตศาสตร์ / wayland-mapper เมาส์

สคริปต์ขนาดเล็กสำหรับการแมปปุ่มเมาส์เพื่อกดแป้นบน Wayland

ฉันทำเพื่อตัวเองเพื่อใช้ปุ่มพิเศษของเมาส์สำหรับสิ่งที่มีประโยชน์ มันได้รับการทดสอบและทำงานกับ Logitech MX Master 2S ใน Fedora 27 โดยใช้ Gnome และทำงานกับ Logitech Performance MX รุ่นเก่าของฉันด้วย อาจใช้ได้กับเมาส์ Wayland และ Logitech ใด ๆ (หรือเมาส์ใด ๆ หากคุณแก้ไขการแมป) เนื่องจากไม่มีวิธีอื่น (xdotools, xbindkeys ฯลฯ ) ดูเหมือนว่าจะทำงานได้

มันทำงานได้โดยการอ่านจาก libinput debug-events และเรียกใช้เหตุการณ์สำคัญโดยใช้ evemu ขึ้นอยู่กับปุ่มที่รู้จักจากอุปกรณ์ที่รู้จัก

ปุ่ม

นี่เป็นเพียงการตั้งค่าเริ่มต้นคุณสามารถปรับแต่งได้ที่จุดเริ่มต้นของสคริปต์ mousemapper.sh

  • ส่งต่อ: ย้ายไปยังพื้นที่ทำงานด้านบน ( Super+ Page up)
  • กลับ: ย้ายไปยังพื้นที่ทำงานด้านล่าง ( Super+ Page down)

0

ลองปรับเปลี่ยนกฎ hwdb udev นี่เป็นการลงทะเบียนปุ่มเมาส์เป็นแป้นคีย์บอร์ดเช่น Launch8 / F16 และปิดการใช้งานฟังก์ชั่นในทุกโปรแกรมทางหรืออื่น ๆ

# /usr/lib/udev/hwdb.d/71-mouse-local.hwdb

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

จากนั้นในฐานะที่เป็น root systemd-hwdb update; udevadm triggerและถอดปลั๊กเมาส์แล้วเสียบกลับเข้าไป

ตรวจสอบสติเพิ่มเติม: sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYหรือค้นหาตามsystemd-hwdb query "evdev:input:v046dp406a*แหล่งที่มาเพื่อดูรายละเอียดในการดึงรหัส

ที่มา: https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

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