Forum: Mikrocontroller und Digitale Elektronik USB Tastatur Emulieren


von Sascha D. (plutoonline)


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.

von John K. (juliusk)


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

von micha (Gast)


Lesenswert?

das Stichwort ist HID

siehe auch http://www.mikrocontroller.net/articles/USB

von oszi40 (Gast)


Lesenswert?

Datei umleiten ?
http://www.antonis.de/dos/batchtut/bat-kurs/

Eine fehlende Tastatur am PC könnte das System evtl. am Hochfahren 
hindern. Deshalb Auge ins Bios wenn's klemmt.

von Netzwanze (Gast)


Lesenswert?


von Z8 (Gast)


Lesenswert?

@  Netzwanze,

der Type hat zwischendrin aufgehört weiter zu denken!
Damit lässt sich eine kompl. Tastatur emulieren. (Tastaturmatrix)

toller Link! Danke Z8

von Reinhard S. (rezz)


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.

von Sascha D. (plutoonline)


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.

von Sascha D. (plutoonline)


Lesenswert?

Hallo nochmal,
ich hab mich jetzt nochmal schlau gemacht, es würde auch funktionieren 
wenn das USB-Device als gampad mit 30 Buttons erkannt werden würde.

Hat da jemand eine Idee?

Danke schonmal.

von Winfried (Gast)


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.

von Guido Körber (Gast)


Lesenswert?

www.codemercs.com

JoyWarrior wenn es ein Gamecontroller werden soll, KeyWarrior bei 
Tastatur, vorzugsweise KeyWarrior24-8.

von Sascha D. (plutoonline)


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.

von Netzwanze (Gast)


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.

von Kai W. (kai-w)


Lesenswert?

Sascha Dürkes schrieb:

> 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.

wenn ich das beim überfliegen richtig gelesen habe, ist das hier gemacht 
worden:
http://symlink.dk/projects/c64key/

von Sascha Dürkes (Gast)


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.

von Benjamin S. (recycler)


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

von Guido Körber (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.