OOStuBS/MPStuBS
Keyboard_Controller Klassenreferenz

Abstraktion für den Tastaturcontroller des PCsDie Klasse Keyboard_Controller dient dazu, die PC Tastatur zu initialisieren und aus den gesendeten Make- und Break-Codes den Scan- und ASCII Code der gedrückten Taste zu bestimmen. Mehr ...

#include <keyctrl.h>

Klassendiagramm für Keyboard_Controller:
Zusammengehörigkeiten von Keyboard_Controller:

Klassen

struct  kbd_cmd
 Kommandos an die Tastatur. Mehr ...
 
struct  kbd_reply
 Antworten der Tastatur. Mehr ...
 

Öffentliche Typen

enum  led_t { led_caps_lock = 4, led_num_lock = 2, led_scroll_lock = 1 }
 Namen der LEDs. Mehr ...
 

Öffentliche Methoden

 Keyboard_Controller ()
 Konstruktor; Initialisierung der Tastatur. Mehr ...
 
Key key_hit ()
 Dient der Tastaturabfrage nach dem Auftreten einer Tastatur- unterbrechung. Mehr ...
 
void reboot ()
 Führt einen Neustart des Rechners durch. Ja, beim PC macht das der Tastaturcontroller. Mehr ...
 
void set_repeat_rate (int speed, int delay)
 Funktion zum Einstellen der Wiederholungsrate der Tastatur. Mehr ...
 
void set_led (led_t led, bool on)
 Setzt oder löscht die angegebene Leuchtdiode. Mehr ...
 

Geschützte Methoden

void send_command (unsigned char cmd, unsigned char data)
 Sendet einen Befehl an den Tastaturcontroller. Mehr ...
 
void send_byte (unsigned char byte)
 Sendet ein Datum an den Tastaturcontroller. Mehr ...
 
void drainKeyboardBuffer ()
 Leert den Tastaturpuffer vollständig. Mehr ...
 

Private Typen

enum  
 Bits im Statusregister.
 
enum  
 Konstanten fuer die Tastaturdekodierung.
 

Private Methoden

bool key_decoded ()
 Interpretiert die Make und Break-Codes der Tastatur und liefert den ASCII Code, den Scancode und Informationen darüber, welche zusätzlichen Tasten wie Shift und Ctrl gedrückt wurden. Mehr ...
 
void get_ascii_code ()
 ermittelt anhand von Tabellen aus dem Scancode und den gesetzten Modifier-Bits den ASCII Code der Taste. Mehr ...
 

Ausführliche Beschreibung

Abstraktion für den Tastaturcontroller des PCs

Die Klasse Keyboard_Controller dient dazu, die PC Tastatur zu initialisieren und aus den gesendeten Make- und Break-Codes den Scan- und ASCII Code der gedrückten Taste zu bestimmen.

Dokumentation der Aufzählungstypen

◆ led_t

Namen der LEDs.

Aufzählungswerte
led_caps_lock 

Caps Lock.

led_num_lock 

Num Lock.

led_scroll_lock 

Scroll Lock.

Beschreibung der Konstruktoren und Destruktoren

◆ Keyboard_Controller()

Keyboard_Controller::Keyboard_Controller ( )

Konstruktor; Initialisierung der Tastatur.

Alle LEDs werden ausgeschaltet und die Wiederholungsrate auf maximale Geschwindigkeit eingestellt.

Dokumentation der Elementfunktionen

◆ drainKeyboardBuffer()

void Keyboard_Controller::drainKeyboardBuffer ( )
protected

Leert den Tastaturpuffer vollständig.

Die Tastatur schickt u.U. keine weiteren Interrupts wenn nicht alle Daten abgeholt werden. Deswegen kann mit dieser Funktion sichergestellt werden, dass immer neue Interrupts kommen, auch wenn dabei Tastendrücke verloren gehen könnten.

◆ get_ascii_code()

void Keyboard_Controller::get_ascii_code ( )
private

ermittelt anhand von Tabellen aus dem Scancode und den gesetzten Modifier-Bits den ASCII Code der Taste.

◆ key_decoded()

bool Keyboard_Controller::key_decoded ( )
private

Interpretiert die Make und Break-Codes der Tastatur und liefert den ASCII Code, den Scancode und Informationen darüber, welche zusätzlichen Tasten wie Shift und Ctrl gedrückt wurden.

Rückgabe
true bedeutet, dass das Zeichen komplett ist, anderenfalls fehlen noch Make- oder Breakcodes.

◆ key_hit()

Key Keyboard_Controller::key_hit ( )

Dient der Tastaturabfrage nach dem Auftreten einer Tastatur- unterbrechung.

Wenn der Tastendruck abgeschlossen ist und ein Scancode, sowie gegebenenfalls ein ASCII Code emittelt werden konnte, werden diese in Key zurückgeliefert. Wenn dagegen bloß eine der Spezialtasten Shift, Alt, CapsLock usw. gedrückt wurde, dann liefert key_hit() einen ungültigen Wert zurück, was mit Key::valid() überprüft werden kann.

Rückgabe
Dekodierte Taste

◆ reboot()

void Keyboard_Controller::reboot ( )

Führt einen Neustart des Rechners durch. Ja, beim PC macht das der Tastaturcontroller.

◆ send_byte()

void Keyboard_Controller::send_byte ( unsigned char  byte)
protected

Sendet ein Datum an den Tastaturcontroller.

Sobald der Controller alle von der CPU geschriebenen Zeichen abgeholt hat, kann der Befehl und anschließend die Daten übermittelt werden.

Parameter
bytezu sendende Daten

◆ send_command()

void Keyboard_Controller::send_command ( unsigned char  cmd,
unsigned char  data 
)
protected

Sendet einen Befehl an den Tastaturcontroller.

Ein Tastaturbefehl besteht aus Tastaturkommando und einem zugehörigem Datumsbyte. Zur Implementierung soll die send_byte() Methode verwendet werden.

Parameter
cmdabzusetzender Befehl
datazu sendende Daten

◆ set_led()

void Keyboard_Controller::set_led ( led_t  led,
bool  on 
)

Setzt oder löscht die angegebene Leuchtdiode.

Parameter
ledGibt an, welche LED geschaltet werden soll.
onLED an- oder ausschalten.

◆ set_repeat_rate()

void Keyboard_Controller::set_repeat_rate ( int  speed,
int  delay 
)

Funktion zum Einstellen der Wiederholungsrate der Tastatur.

Parameter
delaybestimmt, wie lange eine Taste gedrückt werden muss, bevor die Wiederholung einsetzt. Erlaubt sind Werte von 0 (250ms), 1 (500ms), 2 (750ms) und 3(1000ms).
speedbestimmt, wie schnell die Tastencodes aufeinander folgen soll. Erlaubt sind Werte zwischen 0 (30 Zeichen pro Sekunde) und 31 (2 Zeichen pro Sekunde).

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: