This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux-kernel-dev:capitole:capitol-07 [2015/09/11 09:34] razvan [Exerciții] |
linux-kernel-dev:capitole:capitol-07 [2015/09/11 10:27] (current) razvan [Afișare mesaj de tastă apasată] |
||
---|---|---|---|
Line 25: | Line 25: | ||
==== Afișare mesaj de tastă apasată ==== | ==== Afișare mesaj de tastă apasată ==== | ||
- | Actualizați driverul de la punctul anterior pentru a afișa în mesaj tasta care a fost apăsată, în măsura în care este afișabilă (ASCII). Va trebui să folosiți cele două porturi de tastatură (''0x60'' și ''0x64'') și să folosiți funcția ''inb()'' pentru a citi informațiile. În portul/registrul de stare puteți vedea dacă este vorba de o tastă apăsată iar în registrul de date aveți codificare tastei. | + | Actualizați driverul de la punctul anterior pentru a afișa în mesaj tasta care a fost apăsată, în măsura în care este afișabilă (ASCII). Va trebui să folosiți cele portul de date al tastaturii (''0x60'') și să folosiți funcția ''inb()'' pentru a citi informațiile. În portul/registrul de stare puteți vedea dacă este vorba de o tastă apăsată iar în registrul de date aveți codificare tastei. |
+ | |||
+ | <note tip> | ||
+ | Va trebui să implementați funcția ''i8042_read_data()'' pentru a citi valoarea din registrul de date al tastaturii. | ||
+ | |||
+ | În handler-ul de întrerupere (adică în funcția ''kbd_interrupt_handle()'') va trebui să rețineți valoarea citită cu ajutorul funcției ''i8042_read_data()'' și apoi să apelați funcția ''is_key_press()'' și ''get_ascii()''. | ||
+ | |||
+ | Este important să rețineți valoarea registrului într-o variabilă și să **nu** apelați de două sau mai multe ori funcția ''i8042_read_data()''. | ||
+ | </note> | ||
==== Stocare taste apăsate ==== | ==== Stocare taste apăsate ==== |