Ich stehe gerade vor einem Problem, welches mich schon ein Weilchen beschäftigt.
Grosschreiben usw geht, aber keine Zeichen mit ALT/ALT GR, meine Tastaturtreiber sieht in etwa so aus:
Klein und Gross geht, aber ALT nicht.
Eine Debug-Ausgabe in der ich mir die Variablen des Structs kc ansehe, zeigt immer die Richtigen Tasten an....
Das Array sieht so aus:
0 // kleinbuchstaben anfang
...
127 // ende
128 // grossbuchstaben, sonderzeichen, usw anfang
...
255 //ende
256 // inhalt fuer strg
...
383 // ende
Ein Tastatur-Reset mit Alt funktioniert z.B.....
Ich hoffe ihr könnt mir einen Tip geben wo es bei mir hängt und sollte ich was vergessen haben bitte melden
Grosschreiben usw geht, aber keine Zeichen mit ALT/ALT GR, meine Tastaturtreiber sieht in etwa so aus:
Code: [Auswählen]
#define STRG 0x1D // keycode
#define ALT 0x38 // keycode
#define LSHIFT 0x2A // keycode
#define RSHIFT 0x36 // keycode
struct key_combinations { // wird mit jedem aufruf des irq handlers
unsigned char lshift_pressed; // aktualisiert, 1 = gedrückt
unsigned char rshift_pressed;
unsigned char alt_pressed;
unsigned char strg_pressed;
unsigned char keyboard_reboot;
} kc;
void keyboard() {
unsigned char scancode = inb(0x60);
if(scancode & 0x80) { // taste wurde losgelassen
scancode -= 0x80; // released-bit wegmachen
switch(scancode) {
case STRG:
kc.strg_pressed = 0; // 0, taste also nicht gedrückt
break;
case ALT:
...
...
}
} else { // taste wurde gedrueckt
switch(scancode) {
case STRG:
kc.strg_pressed = 1; // 1, taste wurde gedrueckt
break;
case ALT:
...
...
}
if(kc.lshift_pressed || kc.rshift_pressed) {
scancode = scancode + 128;
}
if(kc.alt_pressed) {
scancode = scancode + 256;
}
printf("%c", keyboard_layout[scancode]);
}
Hier nur ein Ausschnitt. Das array keyboard_layout ist vom Typ unsigned char und enthält an der jeweiligen Stelle wie die Scancodes sind, das entsprechende Zeichen.Klein und Gross geht, aber ALT nicht.
Eine Debug-Ausgabe in der ich mir die Variablen des Structs kc ansehe, zeigt immer die Richtigen Tasten an....
Das Array sieht so aus:
0 // kleinbuchstaben anfang
...
127 // ende
128 // grossbuchstaben, sonderzeichen, usw anfang
...
255 //ende
256 // inhalt fuer strg
...
383 // ende
Ein Tastatur-Reset mit Alt funktioniert z.B.....
Code: [Auswählen]
if(kc.strg_pressed && kc.alt_pressed && kc.keyboard_reboot && (scancode == DELKEY)) {
reset();
}
Ich hoffe ihr könnt mir einen Tip geben wo es bei mir hängt und sollte ich was vergessen haben bitte melden


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert

