www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB Tastatur Emulieren


Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: John K. (juliusk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Stichwort ist HID

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

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Netzwanze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Netzwanze,

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

toller Link! Danke Z8

Autor: Reinhard S. (rezz)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht 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 :-(
/* We use a simplifed keyboard report descriptor which does not support the
 * boot protocol. We don't allow setting status LEDs and we only allow one
 * simultaneous key press (except modifiers). We can therefore use short
 * 2 byte input reports.
 * The report descriptor has been created with usb.org's "HID Descriptor Tool"
 * which can be downloaded from http://www.usb.org/developers/hidpage/.
 * Redundant entries (such as LOGICAL_MINIMUM and USAGE_PAGE) have been omitted
 * for the second INPUT item.
 */
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.

Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.codemercs.com

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

Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Netzwanze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai W. (kai-w)
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: Sascha Dürkes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benjamin S. (recycler)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.