Hi,
ich wollt fragen ob mein in C++ geschriebener Tastaturtreiber überhaupt legitiem ist:
#include "multitask.h"
int main()
{
CreateProcess();
int CAPSLOCK = 0;
int *SEND;
int *ASCII = (int*) 0x000010; //Tastatur-Zwischenablage
int *KEY_PORT = (int*) 0x0060;
int SCANNCODE;
while(1)
{
SCANNCODE = KEY_PORT[0];
if(SCANNCODE == 0x58)//CAPSLOCK
{
while(SCANNCODE == 0xF0){SCANNCODE = KEY_PORT[0];}
if(CAPSLOCK = 0){CAPSLOCK = 1;}
if(CAPSLOCK = 1){CAPSLOCK = 0;}
}
//Buchstabe A
if(SCANNCODE == 0x1C)
{
if(CAPSLOCK == 0)
{
while(1)
{
SCANNCODE = KEY_PORT[0];
*SEND = 0x61;
*SEND = *ASCII;
if(SCANNCODE = 0xF0)
{
break;
}
}
}
else if(CAPSLOCK == 1)
{
while(1)
{
SCANNCODE = KEY_PORT[0];
*SEND = 0x41;
*SEND = *ASCII;
if(SCANNCODE = 0xF0)
{
break;
}
}
}
}
//Taste ENTER
if(SCANNCODE == 0x5A)
{
while(1)
{
SCANNCODE = KEY_PORT[0];
*SEND = 0x10;
*SEND = *ASCII;
if(SCANNCODE = 0xF0)
{
break;
}
}
break;
}
}
CloseProcess();
}
Erklärung:Als erstes wird vom I/O Hardware Port 0x0060 der Scanncode der einzelnen Tasten gelesen und dann an eine art Tastaturzwischenablage der ASCII Wert geschickt.
Natürlich ließt und schickt der Treiber nicht nur 'A' 'ENTER' und 'CAPSLOCK'.
Problem:
Nur das Problem eben ist. Das der ASCII Code nur Buchstaben zaheln und einpaar Sonderzeichen umfasst. Aber weit nicht alle Tasten wie z.B. ENTER, CAPSLOCK usw.
Soll ich jetzt einen eigenen Zeichensatz benutzen oder wie ??
Und meine eigentliche Frage ist eben: Ist das überhaupt für ein Tastaturtreiber legitiem ??
MFG
TOMEK