USB Tastatur Emulieren

OP #1254595
Lesenswert?

Hallo,
ich möchte mit einem Mikrocontroller (Atmega32) folgenden 
bewerkstelligen.
Am Atmega32 sollen Taster angeschlossen werden, die bei eine Druck ein 
entsprechendes Zeichen auf den PC übertragen. Die Schlatung soll unter 
Windows als Tastatur erkannt werden. Weiter muß gewährleistet sein, dass 
wenn mehrere Tasten gleichzeitzig gedrückt werden das am PC auch so 
ankommt und nicht nach der Reihe. Bei PS/2 Tastaturen funktioniert das.

Gibt es da schon ein Projekt in der Richtung?

Über Tips und Anregungen freue ich mich.

Vielen Dank schonmal.
#1254607
Lesenswert?

Hallo,
wenn diese Schaltung tatsächlich vom Betriebssystem als Tastatur erkannt 
werden soll, könntest du ja einen Controller aus einer alten Tastatur 
verwenden und entsprechend manipulieren, z.B. indem du die ausgehenden 
Signale von der Elektronik aus der Tastatur mit Widerständen abschwächst 
und bei Bedarf einfach mit denen von ATmega überschreibst. Wäre 
natürlich eher die Holzhammermethode aber sicher am schnellsten.
Wenn du mehr Tasten verwenden möchtest als freie Pins am Mikrocontroller 
verfügbar sind, könntest du ja zwischen ATmega und Tastaturelektronik 
mit einigen Transistoren arbeiten und so Zugriff auf mehr Tasten 
bekommen. Wenn du allerdings das gleichzeitige Drücken von Tasten 
weitergeben möchtest, steigt die Zahl der dafür nötigen Transistoren 
natürlich sehr stark an, jenachdem wie viele Tasten maximal auf einmal 
gedrückt werden können.

Julius
#1254778
Lesenswert?

Sascha Dürkes schrieb:

> Bei PS/2 Tastaturen funktioniert das.
>
> Gibt es da schon ein Projekt in der Richtung?
>
> Über Tips und Anregungen freue ich mich.

Was denn nun? USB oder PS/2?

Für PS/2 wär auch die Ethersex-Firmware eine Idee, die hat das auch 
(zuschaltbar). Ist wohl aber noch etwas Beta.
OP #1255365
Lesenswert?

Also jetz nochmal etwas genauer.
Ich möchte zu einer Vorhandenen Tastatur (PS/2) eine zusätzliche 
Schaltung anschliessen die unter Windows als Tastatur erkannt wird.
Dabei ist es wichtig, dass wenn mehrere Tasten an der Schaltung 
gleichzeitzig gedrückt werden das am PC auch so Interpretiert wird.
Die Schaltung soll für einen Arcadejoystick für den MAME-Emulator 
verwendet werden.

@Netzwanze

Das ist ganau das was ich suche nur funktioniert das mit den mehreren 
Tasten gleichzeitig nicht :-(
1
/* We use a simplifed keyboard report descriptor which does not support the
2
 * boot protocol. We don't allow setting status LEDs and we only allow one
3
 * simultaneous key press (except modifiers). We can therefore use short
4
 * 2 byte input reports.
5
 * The report descriptor has been created with usb.org's "HID Descriptor Tool"
6
 * which can be downloaded from http://www.usb.org/developers/hidpage/.
7
 * Redundant entries (such as LOGICAL_MINIMUM and USAGE_PAGE) have been omitted
8
 * for the second INPUT item.
9
 */
Lässt sich der Sourccode entsprechend anpassen das es möglich ist 
mehrfach Tastendrücke auszuwerten?

Ich hoffe ich hab mich einigermaßen Verständlich ausgedrückt.
Gast #1255629
Lesenswert?

Was ist denn mit der Idee, einfach eine Standard-Tastatur für deine 
Zwecke umzubauen/zu adaptieren? Wurde doch oben schonmal vorgeschlagen. 
Halte ich für die einfachste Variante und Tastaturen bekommst du ab 5 
Euro.
OP #1255713
Lesenswert?

@Guido Körber
Ich wollte keine Fertige Lösung, aber trotzdem Danke.

@Winfried
Das mit der gehackten Tastatur hab ich im momment, ist mir aber zu viel 
Arbeit das bei jedem neuen Controller immer wieder auszutüfteln. Da wäre 
ne Lösung mit nem Mikrocontroller schöner.

Hab mir jetzt mal den Sourcecod vom MJoy angesehen, ist leider 
Assembler, da steig ich nicht so durch.

Hat jemand vielleicht eine Surcecode für MJoy in C?

Für den Anfang würde es ein Sourcecode tun der mir ein HID mit zwei 
Buttons erzeugt. Ich steig da schon bei dem Reportdescriptor nicht durch 
hab mir schon die entsprechenden Dokumente von usb.org besorgt aber 
irgendwie versteh ich das nicht.
Also wenn jemand ein kleines Beispiel in C für mich hat wäre echt Super.
Gast #1256015
Lesenswert?

@plutoonline
> @Netzwanze
> Das ist ganau das was ich suche nur funktioniert das mit den mehreren
> Tasten gleichzeitig nicht :-(
Mit dem Programm nicht.

> Lässt sich der Sourccode entsprechend anpassen das es möglich ist
> mehrfach Tastendrücke auszuwerten?
Ja. Habe ich bereits zuhause am Laufen (7 Tasten plus Drehimpulsgeber 
für eine Heizungsteuerung an Edimax-DSL-Router unter Linux).

USB-HDI kann aber maximal 6 (7?) Tasten plus Steuertasten (Shift, Strg, 
Alt) gleichzeitig verarbeiten. Wenn Du wirklich mehrere gleichzeitig 
gedrückte Tasten auswerten möchtest, bleibt Dir nur PS2.

Den Code mit Schaltung habe ich aber gerade nicht hier. Bei Interesse 
kann ich ja mal nach suchen.
Gast #1256332
Lesenswert?

@Netzwanze
der Sourcecode würde mich sehr Interessiern.
Ist das genrerell bei USB-HID so das nur 7 gleichzeitig verarbeitet 
werden können. Oder nur bei Tastatur-USB-HID, beim Joystick-USB-HID 
sollte das ja eigentlich funktionieren, oder?
Wieviele Tasten könnte man über PS/2 gleichzeitig abfragen?
Wenn das über PS/2 einfacher ginge wäre für mich auch O.K.
#1256402
Lesenswert?

auf www.hackaday.com gabs ein tolles Teil, das zufällig die Shifttaste 
aktiviert. War ein Atiny soweit ich weiß und als HID "Tastatur" 
angemeldet. Recht klein, dass man es jemand in einen USB-Platz stecken 
konnte ohne das man es sieht (naja fast).

Eine andere Möglichkeit, die mir einfällt, ist der Beispielcode vom 
MAX3420 von Maxim mit dem eine Tastatur emuliert wird. Dass lässt sich 
leicht portieren.

Sonst einfach nach USB-HID + Atmel suchen. Da gibts viele Links.

Benjamin
Gast #1258392
Lesenswert?

USB Tastaturen können bei Verwendung des Boot-Protocol maximal alle 
achtModifiers plus 6 andere Tasten übertragen. Es ist aber möglich einen 
eigenen Report mit mehr Datenfelder zu definieren, nur habe ich sowas in 
der Praxis noch nocht gesehen, daher wäre ich skeptisch ob die Treiber 
der bekannten Betriebssysteme damit klarkommen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren