Dizüstü bilgisayarda dahili klavye ve touchpad devre dışı bırakma

Başlatan Exanturkor, 02 Haziran 2016 - 04:35:32

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Exanturkor

Öncelikle iyi geceler ve tüm ubuntu-tr ailesine bir çok konuda insanlara sabırla çözüm yolları sunmaya çalıştığınız için teşekkürler.
Galiba konuyu da yanlış yere açıyorum ancak girişi yapayım.

Genellikle Usb klavye-fare kullanıyorum ve harici klavyeyi bilgisayara taktığımda dahili klavyeyi, harici fareyi taktığımda touchpadi otomatik olarak devre dışı edebilecek bi script aramaktayım. İnternette yaptığım aramalarda pek bi sonuca ulaşamadım. Yardımlarınızı beklemekteyim  :)

mhmtkrktr

Şu komutun çıktısı ne değeri veriyor?
xinput list | grep -Eio 'touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'

Exanturkor

xinput list | grep -Eio 'touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}' çıktısı yok hocam


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Haziran 2016 - 05:04:57

Alıntı yapılan: Exanturkor - 02 Haziran 2016 - 05:02:20
xinput list | grep -Eio 'touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}' çıktısı yok hocam

Kusura bakmayın touchpadin bağlantısını donanımsal olarak kaldırmıştım geçtiğimiz haftalarda.
Touchpadi tekrar bağlayıp sabah bakabilirim. Ancak:
xinput list çıktısı:
⎡ Virtual core pointer                    id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]
⎜   ↳ A4TECH USB Device                        id=12 [slave  pointer  (2)]
⎜   ↳ A4TECH USB Device                        id=13 [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)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Power Button                            id=8 [slave  keyboard (3)]
    ↳ Sleep Button                            id=9 [slave  keyboard (3)]
    ↳ Logitech Gaming Keyboard G103            id=10 [slave  keyboard (3)]
    ↳ Logitech Gaming Keyboard G103            id=11 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            id=14 [slave  keyboard (3)]

mhmtkrktr

Komutun güncelliğine bakmak için istemiştim çıktıyı. Anlam ifade eden bir dönüş alırsan, şu sayfanın en altında ki betik işine yarayabilir belki.

http://askubuntu.com/questions/58584/can-i-automatically-deactivate-my-touchpad-when-a-usb-mouse-is-connected

Bu sadece dokunmatik yüzey için. Bu bölüm çalıştırılırsa, klavye içinde düzenleme yapılabilir büyük olasılıkla.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Haziran 2016 - 05:34:18

Diyez (#) ile kapatılmış şu bölümü açarsan, farenin açık / kapalı durumuna göre bildirim mesajı da verecek.
notify-send 'Touchpad' 'Disabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png
Durumu konrol etmeni kolaylaştıracaktır.

Exanturkor

Touchpad'in bağlantısını yaptığımda o kısma daha sağlıklı eğilmek mümkün olacaktır ve sanırım bu betiği biraz kurcalayarak klavye işini de söylediğiniz gibi halledebilirim hocam. Bu noktada teşekkürler. Ancak bu seferde gconftool-2 ile eriştikleri /desktop/gnome/peripherals/keyboard/ içeriğini herhangi bir komutla görüntülemeyi beceremedim
Anladığım kadarıyla dizin ~/.gconf/desktop/gnome/peripherals/keyboard olarak görünüyor ancak benim .gconf klasörümün içerisinde yalnızca apps isimli bir klasör bulunuyor

Düzeltme: https://people.gnome.org/~bmsmith/gconf-docs/C/ isimli bir döküman buldum incelemem burada basit sorular sormamdan daha ilerletici olacaktır sanırım.
Ben konuya dair çözemediğim sorunla karşılaşırsam bu konuya tekrar yazarım :)

mhmtkrktr

gconftool-2 bir dizin değil, klavyeyi kontrol eden komut. Ama senin ilgilenmen gereken yer orası değil. O bölümde soruyu soran arkadaş bunlarla bir şey yapabilir miyim diye sormuş.
Devamında cevaplar verilmiş. Yapmak istediğine en uygun cevap en altta ki betik olabilir. Yani ilgilenmen gereken bölüm burası.
#!/bin/bash
declare -i ID
ID=`xinput list | grep -Eio 'touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
declare -i STATE
STATE=`xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}'`
if [ $STATE -eq 1 ]
then
    xinput disable $ID
    # echo "Touchpad disabled."
     notify-send 'Touchpad' 'Disabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png
else
    xinput enable $ID
    # echo "Touchpad enabled."
     notify-send 'Touchpad' 'Enabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png
fi

Bu kodları /usr/local/bin/ dizini içerisinde touchpad_toggle.sh ismiyle yeni bir dosya oluşturup, kodları içine koymanı ve dosyaya çalıştırma izni vermeni söylüyor. Devamında uçbirimden touchpad_toggle.sh komutunu verip elle kontrol edebilirsin.

Not: Üst mesajda söylediğim diyez bölümü açtım.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Haziran 2016 - 07:40:12

İlave ederek şunu da belirteyim. Ubuntu üzerinde bu istediğini yapacak doğrudan bir ayarda olabilir. Konu hakkında bilgisi olabilecek birileri daha basit yoldan sonuca götürebilir. İstersen sen araştır yine, yeni döndüm demişsin, antreman olur hem biraz. :)

heartsmagic

Çok özel istekler değil mi bunlar :) Fare takıldığında imleçsürer (touchpad) tamamen iptal olacağına, yazarken iptal olmasını sağlasan basit bir şekilde ayarlardan? Ayrıca, harici klavye takıldığında dahili olan etkin olsa ne gibi bir sorun oluşuyor? Hani sorgulamak için söylemiyorum bunlar, bu türde çok özel istekler için net ve sağlıklı çözümler bulmak zor.

Betik doğru ayarlanabilirse belki iş görür ancak farenin takıldığını nasıl anlayacak? Elle yürütülecekse zaten imleçsürerin elle kapatılma komutu mevcut. Kendisi anlasın deniyorsa verilen kaynaktaki udev kuralları kısmına bakmak lazım biraz.
Hatta:
http://askubuntu.com/questions/533266/how-to-disable-notebooks-touchpad-on-usb-mouse-connect-and-slower-the-last

Herkesin de yapamadığını görüyoruz. Bu daha imleçsürer, bir de klavyeyi düşünelim? :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Exanturkor

gconftool'a bağımlılığımın olmamasını öğrenmem doğrudan işimi kolaylaştırdı touchpad konusunda.

@heartsmagic harici klavyeyi dahili klavyenin üzerine koyarak kullanmak bana fazlasıyla yer kazandırıcak ve hali hazırda programlama ile uğraştığımdan harici klavyeme fazlasıyla alışmış olmam dahili klavye beni fazlasıyla yoruyor :) Ayrıca tüm bunların ötesinde bash programlama ve kişisel yazılımlar ilgimi cezbediyor bu aralar, sorunlarla karşılaşırsamda sayenizde çözmeye-öğrenmeye-geliştirmeye çalışırım :)

Konuya dönecek olursak xinput list'de isim id eşleşmelerine if ile ulaştığımda touchpad'i aktif etmek çok zor olmasa gerek diye düşünmüştüm.
Ancak karşılaşabileceğimi düşündüğüm bi problem ortaya çıktı benim açımdan: xinput list ile sürekli aygıtları taratmak arka planda sürekli işlem yapılması anlamına geliyor
Oluşturduğum scriptin yalnızca herhangi bir usb aygıt takıldığında yada çıkartıldığında çalışmasını nasıl sağlayabilirim?

Ben scripti aşağıdaki formda düzenleyip buraya ekleyeyim. touchpad'in bağlantısını yenileyip lehimlerini düzelttim ve sonuçta:
xinput list
⎡ Virtual core pointer                    id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]
⎜   ↳ A4TECH USB Device                        id=15 [slave  pointer  (2)]
⎜   ↳ A4TECH USB Device                        id=16 [slave  pointer  (2)]
⎜   ↳ FSPPS/2 Sentelic FingerSensingPad        id=12 [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)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Power Button                            id=8 [slave  keyboard (3)]
    ↳ Sleep Button                            id=9 [slave  keyboard (3)]
    ↳ USB Webcam                              id=10 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            id=11 [slave  keyboard (3)]
    ↳ Logitech Gaming Keyboard G103            id=13 [slave  keyboard (3)]
    ↳ Logitech Gaming Keyboard G103            id=14 [slave  keyboard (3)]


olarak değişti.

ID=`xinput list | grep -Eio 'touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'` birimin id'sini ID değişkenine atadığından o kısmı ID=`xinput list | grep 'FSPP' | cut -d'=' -f2 | cut -c -2`
olarak değiştirdim. Devamını getirip takıldığım yerlerde tekrar belirtirim

Edit : Final haftamı henüz yeni atlattığımdan çok uykusuzum ve cümleler devrik olabiliyor. Forumu kullanmaya başladığım ilk günüm için lütfen kusuruma bakmayın :)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Haziran 2016 - 20:03:21

Programı yazdım ve şuanda fare takılıyken touchpad devre dışı kalıyor - fareyi çıkarttığımda touchpad devreye giriyor.
Ancak şuanki sorunum bu değişikliği algılaması için scripti çalıştırma zorunluluğumun olması. Scripti bir program gibi arka planda çalıştırmak istemiyorum.
Dediğim gibi usb slotlarında herhangi bir değişiklik yapıldığında scriptin devreye girmesini nasıl sağlayabilirim?

Belki ihtiyacı olan olur da düzenlemek ister diye xinput list çıktımı ve scripti buraya koyuyorum
xinput list
⎡ Virtual core pointer                    id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]
⎜   ↳ A4TECH USB Device                        id=15 [slave  pointer  (2)]
⎜   ↳ A4TECH USB Device                        id=16 [slave  pointer  (2)]
⎜   ↳ FSPPS/2 Sentelic FingerSensingPad        id=12 [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)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Power Button                            id=8 [slave  keyboard (3)]
    ↳ Sleep Button                            id=9 [slave  keyboard (3)]
    ↳ USB Webcam                              id=10 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            id=11 [slave  keyboard (3)]
    ↳ Logitech Gaming Keyboard G103            id=13 [slave  keyboard (3)]
    ↳ Logitech Gaming Keyboard G103            id=14 [slave  keyboard (3)]


#!/bin/sh

IDT=`xinput list | grep 'FSPP' | cut -d'=' -f2 | cut -c -2`
STATET=`xinput list-props $IDT|grep 'Device Enabled'|awk '{print $4}'`
IDM=`xinput list | grep 'A4TECH' | cut -d'=' -f2 | cut -c -2 | head -1`
STATEM=`xinput list-props $IDM|grep 'Device Enabled'|awk '{print $4}'`
IDINTKY=`xinput list | grep 'AT' | cut -d'=' -f2 | cut -c -2`
STATEINTKY=`xinput list-props $IDINTKY|grep 'Device Enabled'|awk '{print $4}'`
IDEXTKY=`xinput list | grep 'Logi' | cut -d'=' -f2 | cut -c -2 | head -1`
STATEEXTKY=`xinput list-props $IDEXTKY|grep 'Device Enabled'|awk '{print $4}'`
if [ $STATEM -eq 1 ]
then
    xinput disable $IDT
    # echo "Touchpad disabled."
    notify-send 'Touchpad Disabled' 'Because A4Tech-x7 Mouse Connected' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad-symbolic.symbolic.png
else
    xinput enable $IDT
    notify-send 'Touchpad Enabled' 'Because A4Tech-x7 Mouse Removed' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad-symbolic.symbolic.png
fi
if [ $STATEEXTKY -eq 1 ]
then
    xinput disable $IDINTKY
    # echo "Touchpad disabled."
    notify-send 'Internal Keyboard Disabled' 'Because Logitech-G103 Keyboard Connected' -i /usr/share/icons/Adwaita/48x48/devices/input-keyboard-symbolic.symbolic.png
else
    xinput enable $IDINTKY
    notify-send 'Internal Keyboard Disabled' 'Because Logitech-G103 Keyboard Connected' -i /usr/share/icons/Adwaita/48x48/devices/input-keyboard-symbolic.symbolic.png
fi

Exanturkor

Scriptin usb porta belirlediğim fare takıldığında çalışmasını bir türlü beceremedim. Elle çalıştırmada sorun yok ancak

/etc/udev/rules.d içine 30-touch.rules
isimli ayar dosyasını oluşturdum ve içini:
ACTION=="add" , KERNELS=="input26" , ATTRS{phys}=="usb-0000:00:1d.0-1.3.4/input1" , RUN+="/home/exanxl/asonki/sys/scripts/touch-detector.sh"


ACTION=="remove" , KERNELS=="input26" , ATTRS{phys}=="usb-0000:00:1d.0-1.3.4/input1" , RUN+="/home/exanxl/asonki/sys/scripts/touch-detector.sh"


ACTION=="change" , KERNELS=="input26" , ATTRS{phys}=="usb-0000:00:1d.0-1.3.4/input1" , RUN+="/home/exanxl/asonki/sys/scripts/touch-detector.sh"


olarak düzenledim ancak halen tepki alamıyorum

heartsmagic

Ben de Udev'e bakmak lazım diyecektim ama sen çoktan denemişsin. Acaba hiç mi tetiklenmiyor yoksa tetikleniyor ama betik mi devreye giremiyor?
Bir de kuraldaki seçenek KERNELS mı KERNEL mı? Tamam, KERNELS kullanımı da varmış.

Betiği sen bash ile mi çağırıyorsun elle yoksa doğrudan mı? Eğer bash ile çağırıyorsan udev içinden çalışmaz, çalıştırma hakkı ister. Yok, zaten çalıştırma hakkı verdiysen bu ihtimali geçebiliriz.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.