Jadikan mouse tangan kiri dan touchpad dengan tangan kanan

10

Saya melihat bahwa saya dapat mengkonfigurasi mouse dan touchpad semua dalam satu panel (Ubuntu 13.10, default, Gnome). Yang sampai batas tertentu. Yaitu, saya ingin agar touchpad dikonfigurasikan secara berbeda daripada mouse dan ...

Ketika saya memiliki mouse (USB) terpasang saya menggunakannya biasanya kidal. Karena itu saya beralih tombol ke tangan kiri. Tetapi ketika saya menggunakan touchpad saya merasa sedikit tersesat dengan konfigurasi semacam itu. Karena itu saya ingin tangan kanan.

Apakah ada cara untuk mencapai hal berikut: ketika saya plugin mouse (masing-masing ketika terdeteksi) secara otomatis beralih ke tangan kiri dan ketika saya mencabutnya, beralih secara otomatis ke tangan kanan?

Leo
sumber

Jawaban:

10

Saya memahami frustrasi Anda, tetapi masalah ini dapat diselesaikan dengan sangat sederhana dengan bantuan xinputalat.

Pertama-tama colokkan mouse USB Anda, kemudian jalankan perintah berikut:

xinput list

untuk melihat idmouse Anda. Output dari perintah di atas dapat mirip dengan:

xinput | kucing
⎡ Virtual core pointer id = 2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id = 4 [pointer slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [pointer slave (2)]
⎜ ↳ USB Mouse id = 11 [pointer slave (2)]
⎣ Id keyboard inti virtual = 3 [keyboard master (2)]
    ...

Pada contoh di atas, mouse USB memiliki id=11. Kami akan menggunakan ini iddalam perintah berikut yang akan menukar tombol menjadi tangan kiri hanya untuk mouse USB (dan bukan untuk tauchpad):

xinput set-button-map 11 3 2 1

Secara umum:

set-tombol-map id xinput 3 2 1

Untuk mengembalikan perubahan, gunakan:

XInput set-tombol-peta id 1 2 3

Untuk melakukan perubahan secara permanen, tambahkan perintah berikut di Aplikasi Startup (cari di Dash untuk Aplikasi Startup ):

sh -c "xinput set-tombol-map id 3 2 1"

Memperbarui:

Karena id mungkin berubah setelah reboot tetapi nama USBmouse tidak, Anda juga bisa memahami nama mouse dan menerapkannya. Untuk melewati detail reg. memilih nama solusi akhir seperti:

untuk id di `/ usr / bin / xinput list | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; lakukan xinput set-button-map $ id 3 2 1; dilakukan;

masukkan ke dalam Aplikasi Startup yang disebutkan di atas Anda akan mendapatkan akhirnya:

sh -c "untuk id di` / usr / bin / xinput list | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; lakukan xinput set-button-map $ id 3 2 1; selesai; "
Radu Rădeanu
sumber
2
Saya tidak tahu, apakah saya harus mengedit posting Anda atau tidak. Pendekatan Anda memberi saya arah yang benar, tetapi masalahnya adalah bahwa restart mungkin mengubah id mouse. Karena itu saya mengubahnya menjadi sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"dan ini bekerja (mungkin orang harus peduli dengan tanda hubung yang tepat). Terima kasih untuk petunjuknya.
LEO
@ Leo dalam kasus saya reboot, tidak mengubah id mouse. Saya tidak menguji dengan lebih banyak tikus atau mengubah posisi port USB.
Radu Rădeanu
@LeO Lagi pula, ide Anda sangat bagus, jadi, silakan, silakan edit jawabannya. Jika tidak, saya akan melakukannya nanti.
Radu Rădeanu
8

Bahkan ada cara yang lebih sederhana daripada jawaban Radu Rădeanu . xinputmenerima nama perangkat input sebagai alternatif untuk ID numeriknya. Karena mouse USB Anda mungkin diperlakukan secara umum, kemungkinan besar namanya USB Mouse. Karena itu Anda bahkan mungkin tidak perlu berlari xinput list.

Dengan demikian xinput set-button-map, dengan nama ini menggantikan ID numerik, menjadi:

xinput set-button-map "USB Mouse" 3 2 1

Ini mengambil tempat dan harus mencapai hal yang sama, dengan menjadikannya mouse tangan kiri, sama seperti ketika cara numerik ID digunakan. (Dan menggantinya dengan masih akan bekerja untuk mengubahnya menjadi mouse tangan kanan.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

Ini memiliki keuntungan bahwa, asalkan bekerja pada awalnya, itu akan terus bekerja di reboot, tanpa harus mendapatkan nomor ID perangkat menggunakan perintah yang panjang dan kompleks.

reedstrm
sumber
1
Jawaban ini memang layak mendapat lebih banyak upvotes.
Mephisto
Dalam kasus saya, saya memiliki mouse + keyboard nirkabel, jadi xinput listmenunjukkan 2 entri dengan nama yang sama ("2.4G Wireless Keyboard & Mouse") kecuali satu mengatakan "[pointer slave (2)]" dan yang lainnya mengatakan "[keyboard slave (3 )] ". Jadi dengan solusi Anda, saya memiliki kesalahan ini "Ada beberapa perangkat bernama '2.4G Wireless Keyboard & Mouse'.". Saat ini, saya menggunakan menambahkan solusi Radu grep 'slave pointer'. Saya bertanya-tanya apakah xinput memungkinkan untuk menentukan kita merujuk ke suatu pointer tanpa melakukan semua ini.
matiascelasco
1

Saya menemukan bahwa perintah startup di jawaban lain hanya berfungsi jika id adalah angka dua digit. Berikut ini modifikasi saya yang dapat digunakan untuk nomor satu dan dua digit:

Di Aplikasi Startup

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"
perampok
sumber
0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

Berikut adalah solusi yang lebih verbose yang memecahkan dua masalah:

  • Ini berfungsi untuk id perangkat dengan sejumlah digit (sama dengan solusi @robbie, tetapi ditulis agak berbeda)
  • Mempertimbangkan bahwa nama perangkat dapat diduplikasi. Dalam kasus saya, saya memiliki mouse + keyboard nirkabel, jadi xinput listmenunjukkan 2 entri dengan nama yang sama ("2.4G Wireless Keyboard & Mouse") kecuali satu mengatakan "[pointer slave (2)]" dan yang lainnya mengatakan "[keyboard slave (3 )] ". Jadi dengan solusi @reedstrm Saya memiliki kesalahan ini "Ada beberapa perangkat bernama '2.4G Wireless Keyboard & Mouse'.", Sedangkan dengan larutan @Radu Rădeanu, yang foritu iterasi 2 id, satu untuk mouse dan satu untuk keyboard, memiliki pesan kesalahan "perangkat tidak memiliki tombol" dengan yang kedua.
matiascelasco
sumber