Keyboard Controller — Änderungen 7064 → 7908

Zeile 327: Zeile 327:
 
     uint8_t scancode;
 
     uint8_t scancode;
 
     uint8_t keycode = 0;
 
     uint8_t keycode = 0;
−
     bool break_code = FALSE;
+
     int break_code = 1;
−
 
+
 
     // Status-Variablen fuer das Behandeln von e0- und e1-Scancodes
 
     // Status-Variablen fuer das Behandeln von e0- und e1-Scancodes
−
     static bool     e0_code = FALSE;
+
     static int     e0_code = 1;
 
     // Wird auf 1 gesetzt, sobald e1 gelesen wurde, und auf 2, sobald das erste
 
     // Wird auf 1 gesetzt, sobald e1 gelesen wurde, und auf 2, sobald das erste
 
     // Datenbyte gelesen wurde
 
     // Datenbyte gelesen wurde
 
     static int      e1_code = 0;
 
     static int      e1_code = 0;
 
     static uint16_t  e1_prev = 0;
 
     static uint16_t  e1_prev = 0;
−
 
+
 
     scancode = inb(0x60);
 
     scancode = inb(0x60);
−
 
+
 
     // Um einen Breakcode handelt es sich, wenn das oberste Bit gesetzt ist und
 
     // Um einen Breakcode handelt es sich, wenn das oberste Bit gesetzt ist und
 
     // es kein e0 oder e1 fuer einen Extended-scancode ist
 
     // es kein e0 oder e1 fuer einen Extended-scancode ist
Zeile 344: Zeile 344:
 
         (e0_code || (scancode != 0xE0)))
 
         (e0_code || (scancode != 0xE0)))
 
     {
 
     {
−
         break_code = TRUE;
+
         break_code = 0;
 
         scancode &= ~0x80;
 
         scancode &= ~0x80;
 +
return;
 
     }
 
     }
−
 
+
 
     if (e0_code) {
 
     if (e0_code) {
 
         // Fake shift abfangen und ignorieren
 
         // Fake shift abfangen und ignorieren
 
         if ((scancode == 0x2A) || (scancode == 0x36)) {
 
         if ((scancode == 0x2A) || (scancode == 0x36)) {
−
             e0_code = FALSE;
+
             e0_code = 1;
 
             return;
 
             return;
 
         }
 
         }
−
 
+
 
         keycode = translate_scancode(1, scancode);
 
         keycode = translate_scancode(1, scancode);
−
         e0_code = FALSE;
+
         e0_code = 1;
 
     } else if (e1_code == 2) {
 
     } else if (e1_code == 2) {
 
         // Fertiger e1-Scancode
 
         // Fertiger e1-Scancode
Zeile 369: Zeile 370:
 
     } else if (scancode == 0xE0) {
 
     } else if (scancode == 0xE0) {
 
         // Anfang eines e0-Codes
 
         // Anfang eines e0-Codes
−
         e0_code = TRUE;
+
         e0_code = 0;
 
     } else if (scancode == 0xE1) {
 
     } else if (scancode == 0xE1) {
 
         // Anfang eines e1-Codes
 
         // Anfang eines e1-Codes
Zeile 376: Zeile 377:
 
         // Normaler Scancode
 
         // Normaler Scancode
 
         keycode = translate_scancode(0, scancode);
 
         keycode = translate_scancode(0, scancode);
 +
keyboard_char = keycode;
 
     }
 
     }
−
 
+
        // Zum Testen sollte folgendes verwendet werden:
−
    if (keycode != 0) {
+
kprintf("%c", keycode);
−
    // Keycodes an Anwendungen verteilen, die sich dafuer interessieren.
+
        //Nach erfolgreichen Tests, könnte eine send_key_event Funtkion wie bei Týndur verwendet werden
−
        send_key_event(keycode, break_code);
 
−
    }
 
 
}
 
}
 
</c>
 
</c>