Linux Mouse Konfigürasyonu (xinput,xev)

Kullandığınız farenin buton işlevlerini değiştirebilir, farklı görevler atayabilir ve tuş görevlerini yer değiştirebilirsiniz. Logitech M720 Triathlon kullanırken ileri ve geri tuşlarının yerlerini değiştirmem gerekti. Bunun için Linux’ta xinput komutu üzerinde lists ve set-button-map parametrelerini kullanarak seçili aygıt üzerinde tanımlama yaparken xev komutu ile de ilgili butonların hangi ID değerlerini öğreneceğiz.

Öncelikle xinput komutunun sözdizimine bir göz gezdirelim:

xinput --lists
usage :
	xinput get-feedbacks <device name>
	xinput set-ptr-feedback <device name> <threshold> <num> <denom>
	xinput set-integer-feedback <device name> <feedback id> <value>
	xinput get-button-map <device name>
	xinput set-button-map <device name> <map button 1> [<map button 2> [...]]
	xinput set-pointer <device name> [<x index> <y index>]
	xinput set-mode <device name> ABSOLUTE|RELATIVE
	xinput list [--short || --long || --name-only || --id-only] [<device name>...]
	xinput query-state <device name>
	xinput test [-proximity] <device name>
	xinput create-master <id> [<sendCore (dflt:1)>] [<enable (dflt:1)>]
	xinput remove-master <id> [Floating|AttachToMaster (dflt:Floating)] [<returnPointer>] [<returnKeyboard>]
	xinput reattach <id> <master>
	xinput float <id>
	xinput set-cp <window> <device>
	xinput test-xi2 [--root] <device>
	xinput map-to-output <device> <output name>
	xinput list-props <device> [<device> ...]
	xinput set-int-prop <device> <property> <format (8, 16, 32)> <val> [<val> ...]
	xinput set-float-prop <device> <property> <val> [<val> ...]
	xinput set-atom-prop <device> <property> <val> [<val> ...]
	xinput watch-props <device>
	xinput delete-prop <device> <property>
	xinput set-prop <device> [--type=atom|float|int] [--format=8|16|32] <property> <val> [<val> ...]
	xinput disable <device>
	xinput enable <device>

Biz, xinput set-button-map komutunu kullanacağız.

xinput --list

Komutumuzun çıktısı şuna benzer olmalıdır:

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech M720 Triathlon                 	id=11	[slave  pointer  (2)]
⎜   ↳ Logitech K360                           	id=12	[slave  pointer  (2)]
⎜   ↳ Elan Touchpad                           	id=14	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Asus Wireless Radio Control             	id=7	[slave  keyboard (3)]
    ↳ Video Bus                               	id=8	[slave  keyboard (3)]
    ↳ Video Bus                               	id=9	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=10	[slave  keyboard (3)]
    ↳ USB2.0 VGA UVC WebCam                   	id=13	[slave  keyboard (3)]
    ↳ Asus WMI hotkeys                        	id=15	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=16	[slave  keyboard (3)]

Logitech M720 Triathlon cihazımın Id değeri 11 gözükmekte. Şimdi, değiştirmek istediğimiz butonların hangi Id değerlerine sahip olduklarını öğrenelim.

xev | grep button

Komutu çalıştırdıktan sonra değiştirmek istediğimiz butonlara tıklayalım ve uçbirime bakalım. Çıktımız şuna benzer olmalıdır:

state 0x0, button 8, same_screen YES
state 0x0, button 8, same_screen YES
state 0x0, button 9, same_screen YES
state 0x0, button 9, same_screen YES

Ben burada Id değeri 8 olan butonum ile Id değeri 9 olan butonumu yer değiştireceğim. Bu sayede işlevleri de yer değiştirmiş olacaktır.

xinput set-button-map 11 1 2 3 4 5 6 7 9 8 10 11 12 13 14

Yukarıdaki komutu uçbirimde çalıştırdığımızda butonların işlevlerinin başarılı bir şekilde yer değiştirdiğini görebiliriz.

Oturumu her yeniden başlattığımızda seçili aygıtın Id değeri değişebilir. Şu anki oturumda Id değeri 11 olan aygıt üzerinde bu işlemi gerçekleştirdik. Bu komutu bir session dosyasında açılışta çalıştırmak istediğinizde hata alma olasılığınız çok yüksek çünkü her zaman Id değeri 11 olmayacaktır.

Bunun için basit bir script kullanalım.

#!/bin/sh
for id in `xinput --list|grep 'Logitech M720 Triathlon'|perl -ne 'while (m/id=(\d+)/g){print "$1\n";}'`; do
    echo "setting device ID $id"
    notify-send -t 10  'Mouse ayarları yapıldı.'
    xinput set-button-map $id 1 2 3 4 5 6 7 9 8 10 11 12 13 14
done

Burada Logitech M720 Triathlon olarak yazdığım aygıt ismi için siz kullanmak istediğiniz aygıtı yazabilirsiniz. For döngüsünde bu aygıtı bulur ve bir regex kuralı ile ilgili satırı parçalayarak bizlere Id değerini verir.

Bu dosyayı dosya.sh olarak kaydedebilir ve başlangıçta çalıştırabilirsiniz.

3 thoughts on “Linux Mouse Konfigürasyonu (xinput,xev)

Ali bey öncelikle teşekkürle. Vermiş olduğunuz komut mx master modelde başparmak tuşunu sol tuş ile değiştirmiyor. Ne yapmak gerekir? Tekrardan teşekkürler

Döngüden kaçmak için tek komut ve perl yerine sed kullanılmış biçimi de kullanılabilinir:

xinput set-button-map $(xinput | grep "Logitech M720 Triathlon" | sed 's/^.*id=\([0-9]*\)[ \t].*$//') 1 2 3 4 5 6 7 9 8 10 11 12 13 14

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.