Keyboard
-
Also habe es jetzt geschafft mit Tastaturtreiber schreiben und habe auch schon text auf dem Bildschirm ausgegeben.Meine Frage ist jetzt wie gebe ich das aus also z.b. k_printf (Scancode, 1, 0xA); oder wie?
LG,Dennis
-
Dann fehlt nur noch die Konvertierung der Scancodes in ASCII-Zeichen.
Wenn Du die A-Taste drückst, sendet die Tastatur den Scancode 0x1E. Wenn Du sie wieder loslässt, kommt 0x9E (also 0x80|0x1E). Im ASCII-Zeichensatz (http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange) hat 'a' den Wert 0x61. D.h. du musst 0x1E nach 0x61 übersetzen.
Für diese Übersetzung legst Du dir ein Array an, sodass Du am Index 0x1E den Wert 0x61 stehen hast. Dann gilt:char ascii = keymap[scancode];
Diese direkte Übersetzung von Scancode in Zeichen ist recht einfach und funktioniert für den Anfang ganz gut. PrettyOS übersetzt allerdings in zwei Stufen: scancode -> key -> ascii. Dadurch können dann auch Tasten, die keine Repräsentation als Zeichen haben (Shift, Pfeiltasten, ...), wie jede andere genutzt werden.
-
Okay, Danke und noch mal eine frage.Wie mache ich das dann mit if also zum beispiel if (KeyGot == '0x1E') oder wie?Schonmal danke im vorraus.
LG, Dennis
-
Ruffy11heart schrieb:
Wie mache ich das dann mit if also zum beispiel if (KeyGot == '0x1E') oder wie?
Das würde zwar gehen, aber in einer Riesenmenge Code enden.
Wie gesagt, packs in ein Array. Das Array hat soviele Member wie der höchste scancode. Der Index ist der scancode. Jedem index/scancode ordnest Du ein ASCII-Zeichen zu.
So in diesem Stil:
char keymap[] = {'1', 'T', 0, 's'};
char ascii = keymap[scancode];
würde dann für scancode==0x3 ein 's' nach ascii schreiben.
-
Okay könnte mir das mal jemand mit dem Array erklären mit der Tastatur?
-
Ja, ich könnte das. Aber MrX hat es oben sehr schön erklärt. Du kannst es dir auch abschauen bei PrettyOS: http://85.214.142.202/pretty/doc/keyboard_8h-source.html und http://85.214.142.202/pretty/doc/keyboard_8c-source.html oder in meinem Tutorial.
-
Okay wo finde ich das tutorial?
-
-
Das Tutorial habe ich ja schon durchgearbeitet nur das verstehe ich nicht so richtig
-
Das Tutorial habe ich ja schon durchgearbeitet nur das verstehe ich nicht so richtig
Keyboard ist keine einfache Sache bei OS-Development. Wir haben dir alle Infos gegeben, die du benötigst. Das Array-Thema (Zuordnung scancode zu key und ascii)
char keymap[] = {'1', 'T', 0, 's'}; char ascii = keymap[scancode];
ist dabei noch der einfachste Teil. Das schafft bei Tastaturen die Freiheit völlig verschiedene Zeichensätze für die Tasten zu verwenden.
Schau dir die deutsche und die amerikanische Tastaturbelegung an in PrettyOS:
http://85.214.142.202/pretty/doc/keyboard__GER_8h-source.html
http://85.214.142.202/pretty/doc/keyboard__US_8h-source.html
Das sollte helfen beim Verstehen der Zuordnung verschiedener Zeichensätze (auch in Abhängigkeit von Shift etc.).
-
Okay vielen dank.Gucke mir das bei Pretty OS mal an.
LG, Dennis
-
Okay vielen dank.
Gerne geschehen. Melde dich, wenn es Probleme gibt, gerne auch im chat.