Konfigurasikan tombol mouse tambahan di bawah Wayland

10

Saya menggunakan mouse 10 tombol (Logitech M705). Di bawah X11, saya dapat mengkonfigurasi salah satu tombol ekstra untuk berperilaku sebagai klik tengah kedua dengan memodifikasi file di etc/X11/xorg.conf.d.

Di bawah Wayland, ini tidak lagi berfungsi. Penelitian saya menunjukkan bahwa saya perlu melakukan sesuatu libinput. Saya pikir ini akan menjadi masalah umum tetapi tidak dapat menemukan jawaban di mana pun.

Adakah yang bisa menjelaskan cara memetakan kembali tombol mouse atau menjelaskan mengapa itu tidak bisa dilakukan?

Kyle
sumber
Saya menggunakan Wayland untuk sementara dan saya tidak bisa menemukan cara untuk memetakan kembali tombol sejauh ini.
paulodiovani

Jawaban:

6

Mengganti tombol jika Anda menjalankan Wayland dapat dilakukan seperti ini:

  1. Jalankan xev | grep buttonuntuk mencatat peristiwa klik mouse dan mendapatkan nomor acara dengan mengklik di jendela. Dalam kasus saya, tombol tengah adalah:

    state 0x10, button 2, same_screen YES
    

    dan saya ingin memetakannya di:

    state 0x10, button 13, same_screen YES
    
  2. Kemudian jalankan xinput --listdan temukan perangkat penunjuk Anda, milik saya adalah:

    Logitech Performance MX  id=9  [slave pointer  (2)]
    
  3. xinput get-button-map 9 pengembalian:

    1 2 3 4 ... 20
    
  4. set-tombol-peta xinput:

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

CATATAN: ganti nomor 9untuk nomor yang dikembalikan olehid=

Dan jika perilaku kunci itu ditentukan, acara Anda dipetakan. Jika tidak, itu masalah yang sedikit berbeda. Di bawah Wayland TBH saya belum menemukan cara untuk mengeksekusi perintah pada suatu acara (yang cukup mudah dengan Xorg's xbindkeys) dan karena itu sepenuhnya menyesuaikan perilaku acara kunci dan mouse .. Saya percaya Wayland berusaha lebih aman dan menonaktifkan perilaku ini .

Bagaimanapun, Anda masih memiliki kesempatan untuk beralih ke Xorg dengan cukup mudah dan menikmati fungsionalitasnya.

CermakM
sumber
Bekerja untuk saya, tetapi bagaimana Anda membuat perubahan itu permanen? Sepertinya saya harus berlari xinput set-button-mapuntuk setiap sesi Wayland baru ...
mgalgs
1
Ya, Anda harus menjalankannya setiap waktu. Untuk mengotomatiskan ini, Anda dapat menempatkan ini dalam skrip dan membuat file layanan, atau meletakkannya di folder init yang dijalankan saat startup sesuai dengan distro Anda (pada sistem berbasis OS yang akan menjadi /etc/rc.d/init .d /)
CermakM
Anda dapat menempatkan opsi dalam file xconf: Option "ButtonMapping" "1 2 3 ..."
le hollandais volant
Ini hanya mengubah driver input xorg, bukan aplikasi apa pun yang menggunakan komposisi wayland, seperti Gnome Shell atau Nautilus
Ray Foss
3

Saya membuat skrip shell kecil + file systemd unit yang saya sebut wayland-mouse-mapper .

kutipan mathportillo / wayland-mouse-mapper

Sebuah skrip kecil untuk memetakan tombol mouse untuk menekan tombol di Wayland.

Saya membuat sendiri untuk menggunakan tombol ekstra mouse saya untuk hal-hal yang berguna. Ini diuji dan bekerja dengan Logitech MX Master 2S di Fedora 27 menggunakan Gnome, dan bekerja pada Logitech Performance MX lama saya juga. Mungkin berfungsi pada mouse Wayland dan Logitech (atau mouse apa pun jika Anda mengedit pemetaan) karena tidak ada metode lain (xdotools, xbindkeys, dll.) Yang tampaknya berfungsi.

Ia bekerja dengan membaca dari libinput debug-events dan memicu kejadian kunci menggunakan evemu tergantung pada tombol yang dikenali dari perangkat yang dikenali.

Tombol

Ini hanyalah pengaturan default, Anda dapat menyesuaikannya di awal skrip mousemapper.sh.

  • Maju: Pindah ke ruang kerja di atas ( Super+ Page up)
  • Kembali: Pindah ke ruang kerja di bawah ini ( Super+ Page down)
Matheus Portillo
sumber
0

Coba ubah aturan hwdb udev. Ini mendaftarkan tombol mouse sebagai tombol keyboard seperti Launch8 / F16 dan menonaktifkan fungsinya di semua program, wayland atau yang lainnya.

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

evdev:input:*
 KEYBOARD_KEY_90004=key_f16
 KEYBOARD_KEY_90005=key_f17

kemudian sebagai root systemd-hwdb update; udevadm triggerdan cabut mouse kemudian pasang kembali.

Pemeriksaan kewarasan tambahan:, sudo udevadm info /dev/input/by-path/*-usb-*-mouse | grep -A3 -P3 KEYBOARD_KEYatau systemd-hwdb query "evdev:input:v046dp406a*minta seperti itu, lihat sumber untuk detail tentang cara menarik id.

Sumber: https://yulistic.gitlab.io/2017/12/linux-keymapping-with-udev-hwdb/

Ray Foss
sumber