Forum: Mikrocontroller und Digitale Elektronik Teensy 2.0 ++ Keyboard Problem


von Tom (Gast)


Lesenswert?

Hi,

ich würde gerne einen Teensy 2.0 ++ als Keyboard benutzen.
Ich habe zur "Entwicklung" Teensyduino verwendet (wird über Arduino 
drüber installiert und enthält passende libs).

Mit folgendem Codebeispiel funktioniert der Teensy bei fast allen 
Geräten.
1
loop(){
2
   delay(2000);
3
   Keyboard.press('c');
4
   Keyboard.release('c');
5
}

Leider funktioniert das ganze bei genau einem Android Gerät (und genau 
für dieses brauche ich das ganze) nicht: Ab und an, wird ein c 
ausgegeben, dann wieder nicht. Und mit einem mal werden nur noch Keydown 
Events gesendet, so dass etwa 5 c's pro Sekunde getippt werden.
Eine normale USB Tastatur geht aber an dem Gerät.

Ich hab nicht herausfinden können, woran es liegt, dass sich der Teensy 
gerade mit dem einen Android Gerät nicht verträgt. Die Android Version 
ist hier 5.1.1

Auf meinem Handy mit Android 6 irgendwas geht es.


Soweit ich das verstehe, emuliert der Teensy das USB Softwaretechnisch?
Ist hier eventuell ein Timing Problem vorhanden? Weiß jemand was ich 
noch versuchen könnte, um das Problem in den Griff zu bekommen?

Hier gibt es auch einen Post dazu: 
https://electronics.stackexchange.com/questions/24112/teensy-usb-keyboard-android

Seine Lösung war eine gewissen Modus zu verwenden (Disk(internal) + 
Keyboard), das hat bei mir aber nicht gefruchtet.
Ohne die Arduino IDE habe ich das ganze noch nicht gebaut. Aber wenn das 
ja so geht, scheint ein Timing Problem doch in Frage zu kommen, da das 
Arduinozeug anscheinend ziemlich aufbläht.

Ich wäre für ein paar Tipps sehr dankbar.


Schöne Grüße

von Jim M. (turboj)


Lesenswert?

Delay von ca. 20 ms zwischen keydown und keyup einfügen.

Die Zeit kann man anpassen, muss etwas größer als das Abfrageintervall 
vom USB sein. Idee ist das das keyup und keydown Event nicht in 
demselben USB Paket landet.

von Tom (Gast)


Lesenswert?

Hi,

das habe ich schon probiert.
Ich hatte die Werte 1, 10, 20 und 100 versucht.
Hat leider nichts gebracht.

von Tom (Gast)


Lesenswert?

Also mit einem KEyEventViewer auf Android sehe ich, dass wie wild 
KeyDown Events gesendet werden und diese als RepeatKeyPress erkannt 
werden.

Ich weiß leider nicht wie eine USB Keyboard konrekt funktioniert, aber 
es scheint mir, als ob der Controller diese Events immer und immer 
wieder sendet, weil er in irgendeiner Schleife hängt.

Soweit ich weiß pollt der Host die Daten, und der Teensy soll diese dann 
schicken. Werden die Daten quittiert? Ich nehme an schon. Wenn die 
Quittung nicht zeitnahe kommt, wird wohl eine Retransmission versucht.

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.