Zeitverhalten einer USB-Tastatur ? Wieviel delay?

Hallo zusammen Ich möchte für das Flugsimulationsspiel "Oolite" eine eigene Cockpit-Armatur (mit Leonardo und einem Teensy2.0++) bauen, Die ist fertig, nur beim Zeitverhalten des Programms komme ich nicht weiter.

Weder die einzelenen Befehlstasten funktionieren zuverlässig z.B: Keyboard.print('6'); delay(10); Keyboard.release('6'); delay(100);

noch die Tasten welche länger gedrückt werden müssen.

(Hätte ich eine alte Tastatur aufgesägt und die Tasten neu hartverdrahtet würde es schon funktionieren. :grin: )

Die Beispiele zeigen nur wie man einzelne Zeichen oder einzelne Zeichenketten sendet, aber wie programmiert man dass "Pfeil links" solange gedrückt und gehalten wird, wie der Button am Arduino gedrückt und gehalten wird ?

Wenn du die Taste gedrückt halten willst, solltest du es mit Keyboard.press(); probieren.

Die Codes für Pfeiltasten und ähnliches findest du hier: http://arduino.cc/en/Reference/KeyboardModifiers

So wie ich das sehe musst du da anders vor gehen. Du mußt zustandsänderungen abfragen.

Wenn du eine Taste haben willst die man drücken und auch halten kann müßtest du: wenn gedrückt wird den press befehl senden und in einer variable merken das die taste gedrückt ist wenn wieder los gelassen wird den release befehl senden und wieder merken das nicht mehr gedrückt ist.

So kannst du auch mehrere Tasten gleichzeitig drücken.

Dazu kommt das bei deinem delay beispiel wieder das Programm wartet bis alles abgearbeitet wurde.

Die Macros mit mehreren befehlen durch einen Tastendruck würde ich weiter mit den kleinen Delays machen. Geht sicher auch ohne aber weiß ich jetzt nicht ob der aufwand lohnt. Kommt halt drauf an wie lang deine Macros sind.

Ah, danke ! Es geht mit Keyboard.press(), einer Variablen als Zwischenspeicher und einem kleinen delay() gegen das prellen:

int key5 =0;
...

if ( digitalRead(23) == LOW && key5 == 0) {Keyboard.press(KEY_5); key5 = 1; delay(20);}
if ( digitalRead(23) == HIGH && key5 == 1) {Keyboard.release(KEY_5); key5 = 0; }

Juhu ! XD