Caps Numlock scrollock

Başlatan muhittin_kaplan, 27 Ağustos 2009, 17:20:21

muhittin_kaplan

iyi Çalışmalar. Başka Bir Klavyeden Basıldığında Benim Yaptığım Klavyedeki Caps Numlock  scrollock ledlerinin yanması gerekiyor. ama ben bir türlü yakalayamadım. bir yöntemini bilen varmı. Ayrıca yaptığım klavye USB ve 18F2550 ile çalışıyor. ve standart HID olarak Görünüyor.

wsxwsx

başka klavyeden gelen bilgiyi, bilgisayar değerlendirecek, senin klavyeye gönderecek.  o da lambayı yakacak

muhittin_kaplan

bir deneme yaptım.
iki adet usb klavye yi pc ye taktım hangisinde yaparasam yapayım(caps vs) diğeride aktif oluyor.

wsxwsx

Demekki lamba yakma isteğini bilgisayar gönderiyor.

Klavye, fare gibi aletler, işletim sistemi tarafından sürekli iletişime açık halde bulunduruluyormuş. geleneksel yöntemler ile bunlardangelen bilgiyi alıp saklamak (muhtemelen bilgi göndermek de) mümkün değilmiş.

(gönderme kısmını ben uydurdum ama o da öyledir)

picusta

Alıntı Yapgeleneksel yöntemler ile bunlardangelen bilgiyi alıp saklamak (muhtemelen bilgi göndermek de) mümkün değilmiş.

(gönderme kısmını ben uydurdum ama o da öyledir)
Bu kisimda biraz yaniliyorsun. Hook yöntemi ile windows'a gönderilen klavye mesajlarina erisebiliyrosun. Ister ilave mesaj koy ister (tus'a basma), ister gelen tuslari filtrele.

XX_CİHAN_XX

PIC den PS2 ye data göndermek için yapılacak işlemleri adım adım özetlersek:
1)   Clock hattı en az 80uS boyunca Low seviyeye getirilir.
2)   Ardından data hattı low seviyeye getirilir ve en az 20uS kadar beklenir.
3)   Clock hattı boşta bırakılır (Giriş yapılır).
4)   Aygıtın(klavyenin) Clock hattını low seviyeye çekmesi beklenir.
5)   1 yada 0 olarak data hattına ilk data biti gönderilir.
6)   Aygıtın (Klavyenin) Clock hattını high konuma getirmesi beklenir.
7)   Aygıtın (Klavyenin) Clock hattını low konuma getirmesi beklenir.
8)   Datanın sıradaki biti klavyeye gönderilir ve yine 6. ve 7. Adımlardaki gibi clock alınır. Bu şekilde 8 bitlik data ve akabinde birde parity biti gönderilir.
9)   Data hattı serbest bırakılır (giriş yapılır). (Clock hattı zaten yukarıda giriş olarak ayarlanmıştı)
10) Aygıtın (Klavyenin) Data hattını low konuma getirmesi beklenir.
11) Aygıtın (Klavyenin) Clock hattını low konuma getirmesi beklenir.
12) Aygıtın (Klavyenin) Data ve Clock hattını serbest bırakması beklenir.



Klavye ledlerini kontrol etmek için yapılan örnek bir haberleşme:

  ;*** switch keyboard LEDs on (default status) ***

    KBDcmd 0xED       ; keyboard LEDs' control command
   KBDexp 0xFA       ; expect keyboard acknowledge (FA)
   movfw  KBDleds    ; load keyboard LEDs' status
   KBDcmdw           ; send keyboard LEDs' control data
   KBDexp 0xFA       ; expect keyboard acknowledge (FA)

Buradaki 0xFA datası klavyeden gönderilen ve ACK biti yerini alan bir bilgidir. Buna ACK Baytı da diyebiliriz. Birçok klavye ACK biti yerine yada ACK bitinden hemen sonra ACK byte ı dediğimiz 0xFA datasını göndermektedir.
0xED ise klavyeye gönderilen Led control bilgisidir. Bu bilgi gönderildikten sonra klavyeden 0xFA onay bilgisi gelirse hemen akabinden led bilgisi gönderilir ve yine aynı şekilde onay bilgisi beklenir.

0xED   Klavyedeki ledlerin durumunu set edebilmek için (klavyeye) gönderilir – Bu komut gönderildikten sonra Num Lock, Caps Lock & Scroll Lock LED ledleri açıp kapatılabilir. Klavye bu komutu aldıktan sonra 0xFA (ACK) byte ı gönderir. Ardından ledlerin konumunu belirten bilgiyi gönderebiliriz. Gönderceğimiz bilgide Bit 0 Scroll Lock ledini kontrol eder, Bit 1 Num Lock ve bit 2 de Caps lock ledini kontrol eder. Bits 3 ile 7 arası önemsizdir.

Kaynak:
http://www.electronic-engineering.ch/microchip/projects/keyboard/v1xx/keyboard_v1xx.html#host2kbd_protocol
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.