rumkugel am 26.08.2008 12:52 schrieb:
raytraceing-man am 25.08.2008 21:45 schrieb:
bin von beruf her Programierer, kann dir wohl weiterhelfen, das Geraet tut so als waere es eine Tastatur, die ja die Tastsautreingeaben absendet
aenliches wuerde passieren wenn du einfach den tastaturtreiber ueberschreibst, der dann zufaellig was abschickt.
also zu dem prinzipiellem verlauf bei usb:
die tastatur kann keine eingaben absenden, sondern kann nur auf anfragen antworten, sprich
jede milisekunde *hast du eine eingabe?* --> tastatur antwortet
wass am ersten blick weltfrend erscheint hat einen sin, naemlich dass nicht anfragen und meldungen gleichzeitig kommen, sprich dass nicht alle durcheinanderreden
(ehrer bei sticks das probelm)
der maustreiber schickt diese anfragen, und leitet die ergebnisse an das os weiter.
hoffe ich konnte dir weiterhelfen
Ja vielen Dank das hat mich schon mal sehr viel weiter gebracht bei meinem Verständnis für die Theorie. Mich interessiert aber noch wie man das praktisch in c++ Code umsetzen kann. Mir wurde im Thread ja schon die kebd_event Funktion genannt, deren Parameter ich leider noch nicht verstehe. Ich weiß das die Erklärung dafür etwas viel Schreibarbeit bedeutet aber darüber würde ich mich riesig freuen.
ok, wen du es wissen wilst,
in cpp sieht dass dann etwa so aus
kebd_event(int);
der int(int ist eine 32-bit zahl zwishen 0 und 4G)
ist eine zahl, die ueber zuordnungstabellen(seit win95 unicode
http://de.wikipedia.org/wiki/Unicode)
wenn ich jetzt z.B sage *a* ist 33, und du tippst 33, sendet das os kebd_event(33) an das betriebssystem.
uebrigens ist in unicode *a* und *A* vollig unterschiedlich, das interface zwishen keyboard und -treiber gescheht normalerweise ueber bytes(0 bis 127)
um dass mal verstaendlich zu erklaeren:
fuer jede taste am kbd gibt es eine zahl, mit der das kbd dann auf die anfragen antwortet.
und jetzt hat der treiber die taste, und schaut zuerst ob es eine normale taste oder eine sondertaste ist(shift, capslock, control, meta...)
jetzt kennst du sicher die tastaturlayauts(qwerty, qwertz....) in diesen layouts steht dann z.B
{
taste 27 + caps = unicode.1254
taste 27 = unicode.223
taste 27 + alt gr = unicode.1948
taste 28 + .....
.....
.....
}
die jeweilige unicode-zahl scickt der treiber dann an das betriebssystem, was z.B die taste an das textbearbeitungsprogramm weiterschickt, wass es dann mit berechneten x und y koordinaten, schriftgroese und art an den grakatreiber weiterschickt......
denkste garnicht was der pc da fuer berechnungen anstellt nur dass du den buchstaben auf dem bildschirm siehst.
(und dass ist nur die vereinfachte form.........)