Ich versuche, den Tastaturtreiber in Minix zu ändern, meine Idee ist, in einer Datei alle Zeichen zu speichern, die die verwendeten in der Tastatur eingeführt. Ich deklariere eine globale Datei * fp und fügen Sie diesen Code ein /usr/src/drivers/tty/keyboard.cMinix Tastatur Treiber
while (icount > 0) {
scode = *itail++; /* take one key scan code */
if (itail == ibuf + KB_IN_BYTES) itail = ibuf;
icount--;
/* Function keys are being used for debug dumps. */
if (func_key(scode)) continue;
/* Perform make/break processing. */
ch = make_break(scode);
if (ch <= 0xFF) {
/* A normal character. */
fp = fopen("log.txt","a+");
fprint(fp,"%c",ch);
fclose(fp);
buf[0] = ch;
(void) in_process(tp, buf, 1);
} else ...
dann laufe ich „make“ im Verzeichnis und starten Sie neu, aber das funktioniert nicht. Ich meine, die Datei wird nicht erstellt. Irgendeine Idee?
"... funktioniert nicht" ist ein wenig verschwommen. Bitte bearbeiten Sie Ihre Frage und fügen Sie einige zusätzliche Informationen darüber hinzu, was "nicht funktioniert". Ist es zu langsam? Schreibt nicht die Schlüssel zu der Datei? Öffnet ein Tor zwischen den Welten, durch die Pestilenzgeschöpfe des schlimmsten Bösen austrinken? –
Wenn Sie _truly_ modifizieren die Tastatur _driver_ (dh es ist im Minux-Kernel), können Sie nicht 'stdio.h' Stil Streams verwenden [es sei denn, minux unterscheidet sich von jedem anderen Unix-Kernel, den ich je benutzt habe] . Sie müssen die internen Minix-Funktionen für I/O verwenden. Und 'offen zu machen, einen Buchstaben zu schreiben, zu schließen' ist _ extremely ineffizient [und kann zu Komplikationen führen]. Öffnen Sie die Protokolldatei _once_ –
Aber ich denke, dass Minix-Treiber zum Benutzerraum gehört, und in diesem Minix-Tutorial verwendet die Stdlib-Funktionen ... http://wiki.minix3.org/doku.php?id=developersguide:driverprogramming –