Fareyi solak ve dokunmatik yüzeyi sağ elle yapın


10

Fare ve dokunmatik yüzeyi tek bir panelde yapılandırabileceğimi görüyorum (Ubuntu 13.10, varsayılanlar, Gnome). Hangi biraz uzatmak için. Yani, dokunmatik yüzeyin fareden sonra farklı yapılandırılmasını istiyorum ve ...

Takılı bir (USB) farem olduğunda normalde sol elle kullanılır. Bu yüzden düğmeleri solak olarak değiştiriyorum. Ancak dokunmatik yüzeyi kullandığımda, bu tür bir yapılandırmada biraz kaybolmuş hissediyorum. Bu yüzden sağ elini kullanmak istiyorum.

Aşağıdakileri elde etmenin bir yolu var mı: Bir fare eklediğimde (sırasıyla algılandığında) otomatik olarak solak olarak, fişini çektiğimde ise otomatik olarak sağ elle mi?

Yanıtlar:


10

Hayal kırıklığınızı anlıyorum, ancak bu sorun xinputaraç yardımıyla çok basit bir şekilde çözülebilir .

Önce USB farenizi takın, ardından aşağıdaki komutu çalıştırın:

xinput list

idfarenizi görmek için . Yukarıdaki komutun çıktısı aşağıdakine benzer olabilir:

xinput | kedi
⎡ Sanal çekirdek işaretçi kimliği = 2 [ana işaretçi (3)]
Core ↳ Sanal çekirdek XTEST işaretçi kimliği = 4 [bağımlı işaretçi (2)]
PS ↳ SynPS / 2 Synaptics Dokunmatik Yüzey id = 14 [bağımlı işaretçi (2)]
Mouse ↳ USB Fare kimliği = 11 [bağımlı işaretçi (2)]
Core Sanal çekirdek klavye kimliği = 3 [ana klavye (2)]
    ...

Yukarıdaki örnekte USB fare vardır id=11. Bunu, idyalnızca USB fare için sol tuşla değiştirilecek düğmeleri değiştiririz (dokunmatik yüzey için değil):

xinput set-button-map 11 3 2 1

Genel olarak:

xinput set-düğme-harita kimliği 3 2 1

Değişikliği geri almak için şunu kullanın:

xinput set-düğme-harita kimliği 1 2 3

Kalıcı değişikliği yapmak için aşağıdaki komutu ekleyin Başlangıç Uygulamaları (arama Dash için Başlangıç Uygulamaları ):

sh -c "xinput set-düğme-harita kimliği 3 2 1"

Güncelleme:

Yana id yeniden başlatma ama USBmouse isminden sonra değil değişebilir, ayrıca fare adını grep ve uygulamak olabilir. Ayrıntıları atlamak için reg. son çözümün göründüğü ismi seçerek:

/ usr / bin / xinput listesindeki id için | / bin / grep ' USB Fare ' | / bin / grep -o [0-9] [0-9] `; xinput set-button-map $ id 3 2 1; yapılan;

sonunda belirtilen Başlangıç ​​Uygulamalarına paketleyin :

sh -c "/ usr / bin / xinput listesindeki | / bin / grep ' USB Mouse ' | id / bin / grep -o [0-9] [0-9]`; xinput set-button-map $ id 3 2 1; bitti; "

2
Gönderinizi düzenlemem gerekip gerekmediğini bilmiyorum. Yaklaşımınız bana doğru yönü verdi, ancak sorun, yeniden başlatmanın farenin kimliğini değiştirebilmesiydi. Bu yüzden onu değiştirdim 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;"ve bu işe yarıyor (belki de uygun tirelere dikkat etmek gerekir). İpucu için teşekkürler.
LeO

@LeO Benim durumumda yeniden başlatma, farenin kimliğini değiştirmez. Daha fazla fare ile test yapmadım ya da USB portunun konumunu değiştirmedim.
Radu Rădeanu

Her neyse, fikriniz çok iyi, bu yüzden devam edin, lütfen cevabı düzenleyin. Eğer değilse, daha sonra yapacağım.
Radu Rădeanu

8

Radu Rădeanu'nun cevabından daha basit bir yol var . xinputgiriş aygıtının adını sayısal kimliğine alternatif olarak kabul eder. USB fareniz muhtemelen genel olarak tedavi edildiğinden, adı büyük olasılıkla olur USB Mouse. Bu nedenle muhtemelen kaçmanıza gerek yok xinput list.

Böylece xinput set-button-map, sayısal kimlik yerine bu adla sizin :

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

Bu , tıpkı sayısal kimlik yolu kullanıldığında olduğu gibi, solak bir fare yapmakla aynı şeyi gerçekleştirir ve aynı şeyi başarmalıdır . (Ve değiştirilmesi ile çalışmaya devam eder sağ elini fare olmak için geçin.)xinput set-button-map id 3 2 13 2 13 2 11 2 3

Bunun avantajı, başlangıçta çalışması şartıyla, uzun, karmaşık komutlar kullanarak cihazın kimlik numarasını almak zorunda kalmadan, yeniden başlatmalar arasında çalışmaya devam etmesidir.


1
Bu cevap daha fazla oyu hak ediyor.
Mephisto

Benim durumumda, bir kablosuz fare + klavyem var, bu yüzden xinput listbiri "[köle işaretçisi (2)]" ve diğeri "[köle klavye (3) )]". Böylece çözümünüzde "2.4G Kablosuz Klavye ve Fare" adında birden fazla cihaz var. "Hatası var. Şimdiye kadar Radu'nun çözüm eklemesini kullanıyorum grep 'slave pointer'. Acaba xinput bir şekilde tüm bunları yapmadan bir işaretçiye atıfta bulunuyoruz belirtmek için izin veriyor mu?
matiascelasco

1

Diğer cevaptaki başlatma komutunun sadece id iki basamaklı bir sayı ise işe yaradığını buldum. Hem bir hem de iki basamaklı sayılar için çalışması gereken değişikliklerim:

In Başlangıç Uygulamaları

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;"

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 

İşte iki sorunu çözen daha ayrıntılı bir çözüm:

  • İstediğiniz sayıda basamaklı cihaz kimlikleri için çalışır (@robbie çözümüyle aynı, ancak biraz farklı yazılmıştır)
  • Aygıt adının çoğaltılabileceğini düşünür. Benim durumumda, bir kablosuz fare + klavyem var, bu yüzden xinput listbiri "[köle işaretçisi (2)]" ve diğeri "[köle klavye (3) )]". Yani @reedstrm solüsyonu ile ben @Radu Rădeanu çözeltisiyle iken, " '2.4G Kablosuz Klavye ve Fare'. Adlı birden cihazı yok" Bu hatayı vardı fora sahip 2 üzerinde kimlikleri, fare için bir tane ve klavye için bir tane yineleme edildi ikincisinde "cihazda düğme yok" hata mesajı var.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.