Notebook Fn tuşlarını aktifleştirme


(osman) #1

Notebookların linux sistemlerde en büyük sıkıntılarından birisidir, biliyorsunuz. Hepsinde işe yaramasa da bir kaç bilgisayarda işe yaradığını gördüğüm yöntemi paylaşmak istedim. Örnek üzerinden anlatıyorum.
Diyelim ki fn + f1 tuşu touchpadimizi aktif-pasif yapmalı ama çalışmıyor.
Adımları sırayla takip edelim.

  1. Öncelikle apt-get install acpid yazıp paketi yükleyin. (acpid paketi bastığımız tuş kombinasyonlarının sinyal kodlarını veriyor)

  2. Terminali açın ve acpi_listen yazıp enterlayın. Terminal ekranı sizden tuş kombinasyonlarının girdisini bekleyecek

  3. fn+f1 tuşuna basın. Şayet sinyali okuduysa ekrana şu çıktıyı verecek
    sony/hotkey SNY5001:00 00000001 0000000c
    sony/hotkey SNY5001:00 00000001 0000003b
    başka marka bilgisayrlarda
    asus/hotkey ASS5001:00 00000001 0000000c
    asus/hotkey ASS5001:00 00000001 0000003b
    şeklinde de olabilir. Genellikle iki satır şeklinde çıktı veriyor. Biz ilk satırı kullanacağız.

  4. masaüstüne sağ tıktan sony-touchpad isminde boş bir dosya oluşturuyoruz ve içine şu kodları yazıyoruz

    event=sony/hotkey SNY5001:00 00000001 0000000c
    action=/usr/share/icons/sony-touchpad-script.sh

Evet sadece bu kadar. Kodun açılımın yapayım. event kısmı çıktısını aldığımız tuş kombinasyonun sinyal kodu, action kısmı da çalıştırılmasını istediğimiz görevi içeriyor. Aslında işin can alıcı kısmı burası. Çünkü event kısmına firefoxu açsın isterseniz action=firefox da yazabilirsiniz. Ama bizim amacımız orjinalliği korumak adına touchpadi aktifleştirmekti. O zaman touchpadi nasıl enable-disable edeceğinize dair komutu veya scripti sizin elde etmeniz lazım. Ben sony laptopum için uygun scripti biraz araştırıp buldum. Farklı bilgisayarlara referans olması açısından paylaşıyorum.

Yine masaüstüne sony-touchpad-script.sh adında boş bir dosya açıp içine aşağıdaki kodları yazıp kaydediyorum.

TP=/sys/devices/platform/sony-laptop/touchpad
test -f "$TP" || exit 0
 
state=$(cat $TP)
if [ $state = 1 ] ; then
  echo 0 > $TP
else
  echo 1 > $TP
fi
  1. Eğer iki dosyamız da hazırsa şimdi sıra bunları atacağımız yerlere geldi. İlk oluştuduğumuz ve acpi kodunu içeren sony-touchpad dosyası kesinlikle /etc/acpi/events/ yoluna kopyalanmak zorunda. İkinci dosyayı istediğiniz yere kopyalayabilirsiniz. Ben onu örneğin /usr/share/icons/ yoluna kopyaladığımızı varsayarak anlatımıma devam ediyorum. Oluşturduğumuz ilk dosyanın event kısmına /usr/share/icons/sony-touchpad-script.sh şeklinde yazmak zorundayım.

  2. Bu adıma geldiyseniz son bir işimiz kaldı. sh dosyalarını çalıştırılabilir hale getirmek için terminalden bir defaya mahsus “chmod +x /usr/share/icons/sony-touchpad-script.sh” komutu uygulanmalı. Bunu yapın ve bilgisayarı yeniden başlatın. PC yeniden başlamadıkça işlemlerin etkisi olmuyor.

Konunun çok detayına hakim değilim arkadaşlar. Yol gösterici olsun diye paylaştım. Tek söyleyeceğim şu: Eğer yapamadıysanız büyük ihtimalle sh dosyasını doğru oluşturamadığınız içindir. Bu yüzden bu adımları uygulamadan önce oluşturduğunuz bash scriptleri yani sh dosyalarını terminalden deneyin. Çalıştığını teyit ettikten sonra tuş atamasına geçin. Yoksa çok yorucu olur sizin için. İyi çalışmalar diliyorum


Laptop kısa yollarında tutarsızlık ( Fn ile bağlantılı kullanılan komutlar)
(Can Akın) #2

Merhabalar Osman Bey,

böyle deneyebilirsiniz, ilk basta terminali acalim(ctrl +alt+t), sonra su komutlari girelim:

sudo apt install -y xbacklight 
sudo aptitude install -f

sonra nano, gedit ya da mousepad ile su dosyayi aciyoruz, tercih sizin.

sudo mousepad /etc/default/grub

sudo nano etc/default/grub 

sudo gedit /etc/default/grub 

Ve buraya su kodlari giroyruz:


GRUB_CMDLINE_LINUX_DEFAULT=

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_os_name=Linux acpi_osi= acpi_backlight=vendor"

Bu islemler tamamlandiktan sonra

sudo update-grub

sudo reboot

Ama bu kodlar makinadan makinaya degistiyi icin sizin notebokta ise yaramaya bilir.


(osman) #3

Verdiğiniz bilgi için teşekkür ederim. Galiba konuda ne demek istediğimi ben tam ifade edemedim. Notebook üreticileri ürünlerini windowsa göre yapıyor ve fn tuşları için özel driver hazırlıyorlar. Aynı marka ürüne farklı modelin sürücüsünü yükleseniz dahi çalışmayabiliyor. Linux için ise böyle halihazırda sunulan dosya hiç yok. Tuşların gönderdiği sinyali bizim tespit etmemiz ve görev atamamız lazım. Anlatımda fn+f1 tuşu örneğini kullandım ama mesela fn+f12 tuşu da normalde hibernate moduna geçmesi gerekirken geçmiyordu. Anlattığım yöntemde action kısmına action=systemctl hybrid-sleep komutunu ekleyerek fn+f12 tuşunu da çalıştırmaya başladım. Sizin verdiğiniz yöntem sadece ekran parlaklığını ayarlamak için geçerli. Onu da bu konuya şöyle uyarlayabiliriz: acpi_listen ile ekran parlaklık tuşunu açan ve kapatan tuş sinyal kodlarını ayrı ayrı öğrendikten sonra action kısmına ekran parlıklığını arttıran kombinasyon için (xbacklight yüklenmiş varsayıyorum)

event=acpi sinyal kodu
action=xbacklight -inc 4

ekleyebiliriz. Benzerini de ekran parlaklığını azaltan kombinasyon için

event=acpi sinyal kodu
action=xbacklight -dec 4

kodlarını uygulayıp /etc/acpi/events/ yoluna atarsak da çalıştırabiliriz. Aslında konuyu açma amacım acpid paketinin önemine dikkat çekmek. Bu konu biraz daha geliştirilip ileride bir arayüzle kullanıcıya seçenek olarak sunulursa çok faydalı olacağını düşünüyorum. İyi günler


(Can Akın) #4

Ah Pardon ben yanlis anladim evet hacklisiniz, cok dogru yazdiklarinizi, Pardon :smiley: