Fn+F5 Komutunu C İle OS'ye Göndermek Mümkün Mü ?

Başlatan noktakom, 30 Ekim 2011 - 15:51:19

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

noktakom

Fn+F5 komutunu C ile işletim sistemine göndermek mümkün mü ? Mümkünse nasıl ?

sem

Keylogger'a kadar gidiyor mudur işin ucu nedir =)

Çünkü bir deneme prgoramı ile baktım... fn tuşu tuşunu önce sisteme algılıyor... Yani fn + F6 örneğin ekran parlaklığını kısmaya yarıyor bende... Basıyorum programımım açıkken, program çıktı vermiyor ve ekranın parlaklığı kısılıyor...

Bu donanım kesmeleri hakkında bilgisi olan arkadaş var mı? Belirli kombinasyonlar ile sinyaller oluşturuluyor ve kesmeler o şekilde mi çalışıyor? Eğer öyle ise acaba fn tuşu farklı bir karakter basmaya değil de (shift ya da capslock gibi) sinyal üretmeye mi yarıyor acaba...

Denemeler şu şekilde yapılabilir...

#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int mygetch(void)
{
struct termios oldt,newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}


int main()
{
    while(1)
        printf("*-)   %d\n", mygetch());

      /*ya da
       printf("*-)   %c\n", mygetch()); */
}



Güzel soru... Takip =)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 31 Ekim 2011 - 00:29:09

Soruyu yanlış okumuşum ben...

İşletim sistemine gönderilmek istenen bir kombinasyon var sanırım... Bu durumda fn + F5'in ürettiği sinyali araştırmak gerekebilir... Ya da yfn + F5 ile yapmak istediğiniz donanıma özel bir şey ise o da araştırabilir?
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

noktakom

Tam olarak ikinci mesajınızda bahsettiğiniz şeyi yapmak istiyorum, yani fn+f5 tuşlarına fiziksel olarak değil de yazılımsal olarak basmaktan bahsediyorum. Bu kombinasyon ekran parlaklığını azaltmaya yarıyor. Bu amaca uygun alternatif yöntem varsa onu da kullanabiliriz. ancak şunu belirteyim, bulduğum bazı terminal komutları işe yaramadı.

KOmbinasyonun nasıl bir sinyal gönderdiği konusunda net bir bilgi bulamadım. Bulabildiğim tek kaynak şu http://www.yolinux.com/TUTORIALS/C++Signals.html .Burada da ctrl+c nin SIGINT sinyali gönderdiği (ya da nasıl deniyorsa) dışında bir tüyo verilmemiş.

sem

Evet bazı kombinasyonların hangi siinyallari yaydığı bilinyor aslında...

Bir de şöyle bir durum var tabii standart sinyallerin neler oldukları az çok belli... fn ile bir başka tuşun kombinasyonunun standart sinyal yayması zor bir ihtimal gibi geliyor bana.

Ki zaten bunu denemek aslında biraz hamallık bir yol ile olsa da yapılabilir... kill komutu ya da sigaction fonksiyonu ile belirli processlere sinyaller gönderilip sonuç incelenebilir. Fakat gereksiz bir deneme olur... Açıkcası okuduğum bazı kaynaklarda gözüme çarpan "Donanım Kesmeleri" ibaresi aklıma yatıyor şu anda... Sinyaldan daha çok bu tarz bir yöntem kullanılıyor gibi hissediyorum...

Kolaya kaçarak şöyle yapılabilir istediğiniz; system() ya da popen() ya da benzeri bir fonksiyon ya da yapı ile konsoldan bu işi yapan uygulamalarla ile haberleşip, bu uygulamalar kontrol edilebilir. Konsoldan parlaklık ayarı yapan uygulamalar vardı çünkü... Hatta QT ile yazılmış (Pardus'un forumunda paylaşılmıştı) bir uygulama da var bu işi yapan... Yani bir başka uygulamacığı kontrol ederek bu işi yapabilirsiniz.

Arka planı öğrenmek için bu uygulamacıkların kaynak kodunu incelemek gerekiyor sanırım... Araştırmak lazım, merak ettim açıkcası. =)
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

noktakom

Kesmeler ile yapmak gerekiyorsa onu araştırıcaz o zaman. hem diğer yöntemlere göre daha orjinal bir çözüm olur hem de bu sayede belki kesmeler konusunda birşeyler öğreniriz.

Ben birşeyler bulabilirsem yapabilirsem buraya aktarırım. Bu arada forumda bu konuda bilgisi olan varsa, az çok demeden yol gösterebilir...