Teensy 2.0 ++ Keyboard Problem

Gast #5101386
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
#5101392
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.
Gast #5101489
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.