Spezieller Treiber für Arduino Leonardo Tastatureingabe?

Hallo,

ich würde über einen Arduino Leonardo gerne Tastaturbefehle an diverse Rechner schicken.

Der Leonardo soll hierfür lediglich immer an einem Rechner gleichzeitig hängen.

Mein Problem ist nun, dass von zehn Rechnern lediglich fünf diese Tastatureingaben registrieren, während die anderen fünf Computer die eingehenden Befehle zu ignorieren scheinen.

Momentan gehe ich noch davon aus, dass für mein Vorhaben kein Treiber notwendig ist.

Gruß Chris

void setup()
{
  Keyboard.begin();
}

void loop()
{
  static unsigned long lastTime;
  if (millis() - lastTime >= 10000)
  {
    Keyboard.press(' ');            // Das erste Byte auslesen und nur dieses als Tastaturbefehl ausgeben
    delay(100);                     // Kurz warten
    Keyboard.releaseAll();          // Taste loslassen
    lastTime = millis();
  }
}

Was bedeutet der Komentar: "// Das erste Byte auslesen und nur dieses als Tastaturbefehl ausgeben" ?

Jeder PC an dem eine USB-Tastatur möglich ist, müßte mit dem Leonardo funktionieren, ohne jeglichen Treiber.

wieso nimmst Du
Keyboard.press()
und nicht
Keyboard.write()
?
Grüße Uwe

Der von Dir angefragte Kommentar hat nichts mit dem Sketch zu tun, sorry. :smiley:

Keyboard.write() kannte ich schlichtweg nicht.

Ich hab es jetzt an mehreren Rechnern probiert. Wenn es an einem Rechner zunächst nicht funktionierte, dieser beim erneuten Anschließen des Leonardos jedoch dann Zugang zum Internet hat, wird irgendein Treiber geladen und ab da an funktioniert es (Windows).

Ich würde gerne wissen, was da geladen wird, so dass ich diesen Treiber bei Bedarf alternativ manuell, also auch ohne Internetzugang laden kann.

Gruß Chris

Könnte einfach ein Tastaturtreiber (HID) ein.

Grüße Uwe

Vermutlich.

Welcher von denen es jedoch ist, vermag ich leider nicht herauszufinden. :confused:

Theoretisch müsste der gesuchte Treiber ja eigentlich auch Bestandteil der Arduinoinstallation sein, oder?

Gruß Chris

(Ich gehe mal davon aus, dass wir über die Situation unter Windows sprechen...)

Wenn ein Leonardo an einen PC angesteckt wird, mit dem er noch nie vorher verbunden war, will er einen Treiber* für den Leonardo installerien.

Der Leonardo meldet sich ja als mehrere Geräte gleichzeitig an, mal als "Arduino Leonardo" mit serieller Schnittstelle und zusätzlich noch als HID (Tastatur und Maus), möglicherweise noch als anderes.

Meine Erfahrung ist, dass für den HID-Teil kein zusätzlicher Treiber* benötigt wird, sehr wohl aber für den Rest.

*) Treiber
Unter Windows wird eine INF-Datei gebraucht, das ist eigentlich kein Treiber (sondern nur eine Textdatei) aber da drinnen stehen Infos, über das jeweilige Gerät (schau doch einfach mal rein in so eine INF-Datei).
Die INF-Datei für die Arduino-Boards befindet sich zum Beispiel bei der IDE-Version 1.6.5-r5 hier:
...arduino-1.6.5-r5\drivers\

Das ist ein "Universaltreiber", der für die meisten Arduino-Boards funktioniert und zusätzlich noch signiert ist (damit z.B. Win7, 8 oder neuer nicht meckern). Dazu gibt es auch einen Hinweis in README.txt:

With this version of Arduino a new all-in-one driver (with security signature for Windows 8 ) is supplied.

The old (deprecated) drivers are still available in the Old_Arduino_Drivers.zip

Der alte/frühere Treiber* für den Leonardo befindet sich also hier:
...arduino-1.6.5-r5\drivers\Old_Arduino_Drivers.zip\Arduino Leonardo.inf

Du hast also recht, wenn du meist

Theoretisch müsste der gesuchte Treiber ja eigentlich auch Bestandteil der Arduinoinstallation sein, oder?

Arduino Leonardo als Tastatur bzw Mouse braucht keinen Arduino-Treiber. Den Arduino-Treiber braucht es nur für den COM Port.

Ich glaube auch eine USB-Tastatur hat einen Treiber und der müßte Bestandteil vom Betriebssystem sein. Da aber jede USB-Tastatur ihren Hersteller bzw Model hat (als VID und PID) könnte Windows erst bei Microsoft/ USB-Konsorzium nachfragen, was da angeschlossen wurde und dementsprechend einen Standart-Treiber aussuchen bzw einen Spetialtreiber suchen, wenn die Tastatur Spetialfunktionen hat.

Genaueres müßte aber ein Windowe-Aministartor sagen können.

Grüße Uwe

uxomm:
Die INF-Datei für die Arduino-Boards befindet sich zum Beispiel bei der IDE-Version 1.6.5-r5 hier:
...arduino-1.6.5-r5\drivers\

Meinst du arduino.inf? Diese Datei konnte ich in der 1.6.8 finden.

Gruß Chris

Ja, Informationen zum Leonardo sind in dieser arduino.inf enthalten (in arduino-org.inf übrigens auch).

Aber wahrscheinlich reicht diese inf-Datei alleine nicht. Für Rechner ohne Arduino-IDE solltest du am besten den ganzen Ordner "drivers" bereitstellen.

Nähere Infos zu inf-Dateien gibt es hier (ich bin da ja kein Experte):

und recht ausfühlich:
msdn.microsoft.com: Overview of INF Files

Ich werde anzusteuernde Rechner in Zukunft beim erstmaligen Anschließen eines Leonardos am Internet hängen haben.

Ist mir zugegebenermaßen zu kompliziert, mich in irgendwelche Microsoft-Dokumente einzulesen. Trotzdem vielen Dank fürs Raussuchen.

Gruß Chris