Was ich suche:
Gibt es eine Möglichkeit, das Gerät als Tastatur / HID zu bezeichnen, wenn es an einen USB-Anschluss angeschlossen ist und den Inhalt der Zwischenablage "eingibt"? Genauer; Was würde es brauchen, um es zu verwirklichen?
Motivierender Anwendungsfall:
Ich habe ein Kennwortverwaltungsprogramm auf meinem Telefon, aber es ist ärgerlich, das Kennwort vom Gerät lesen und versuchen zu müssen, es auf einem anderen Computer einzugeben.
Hintergrund:
Ich besitze ein Android-Gerät, das erstellt wurde, bevor MTP für die Übertragung von Dateien unterstützt wurde, das bei den letzten Upgrades jedoch jetzt unterstützt wird. Auf dieser Grundlage kann die USB-Klasse, die sie angeblich ist, nicht hardwaredefiniert werden und muss in der Software definiert werden.
IIRC, dieses Projekt hat Android-Geräte (was ich für einen Standardkernel halte), die als eine USB-Klasse bezeichnet werden, die definitiv nicht integriert wurde. Dies zeigt mir, dass Sie möglicherweise steuern können, welche USB-Klassen es unterstützt, ohne dass der Kernel funktioniert, aber ich Ich weiß es nicht genau.
Was den Host betrifft (dh den PC), so habe ich noch nie gesehen, dass ein PC, ein Mac oder eine Linux-Box spezielle Laufwerke für Tastaturen benötigen, selbst für einige eher esoterische Geräte, die angeblich Tastaturen sind (Barcodescanner, Kreditkarten und Smartphones) Kartenleser usw.), so sollten die generischen Treiber gut genug für das sein, was ich will.
Alles, was darauf hindeutet, dass das, wonach ich suche, aus der Sicht der Hardware getan werden kann , sagt jedoch sehr wenig darüber aus, welche Software-Unterstützung vorhanden ist, und nichts darüber, ob es eine App dafür gibt.
Antworten:
Ja. Dies ist definitiv möglich und erfordert keine Änderungen oder Treiber auf dem PC. Wie im OP erwähnt, erfolgt die USB-Identifizierung am Telefon letztendlich über Software (in dieser Datei https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite) .c ), und es könnte geändert werden, um sich als Standard-USB-Tastatur zu identifizieren.
Diese Änderung würde ein paar Dinge erfordern.
Es gab ein paar Jahren ein Papier vor veröffentlicht (betitelt Ausnutzen Smartphone-USB - Anschluss für Spaß und Gewinn ) , die mit einem Telefon beschrieben Brute-Force - Desktop - Anmeldebildschirme. Bei der verwendeten Methode wurde das Telefon als USB-Tastatur angezeigt.
quelle
Dies beantwortet Ihre Frage nicht genau, kann jedoch in Ihrem Anwendungsfall hilfreich sein.
Vielleicht möchten Sie einen Blick auf InputStick werfen . Dies ist ein USB-Stick, den Sie über Bluetooth mit Android koppeln. Wird es an einen Computer angeschlossen, emuliert es ein generisches USB-HID, um Tastaturanschläge zu senden. Eine erweiterte Java-API ermöglicht es auch, z. B. Gerätedeskriptoren anzugeben, um nicht standardmäßige Funktionen zu emulieren. Es könnte ein gutes Beispiel dafür sein, dass es eher in Software als in Hardware definiert ist.
Als Referenz arbeitet der Entwickler auch an Beispielprogrammen wie einem Demo Password Manager.
quelle
Dies würde mindestens Software auf dem Telefon und auf dem PC erfordern. Die 2 Software-Teile müssten miteinander kommunizieren. Nichts dergleichen, von dem ich derzeit weiß, existiert.
Und damit der PC denkt, dass das Gerät wirklich eine Tastatur ist, ist ein neuer Treiber erforderlich, der dem PC mitteilt, dass das Gerät eine Tastatur ist und wie "es als Tastatur verwendet wird".
Ich sage nicht, dass es nicht möglich ist, weil bei solchen Dingen so ziemlich alles möglich ist. Was ich aber sage, ist, dass derzeit nichts dergleichen existiert.
USB ist sowohl Hardware als auch Software. Wenn es nur Software wäre, würde derselbe USB-Treiber für alle Android-Geräte unter Windows funktionieren, und dies ist nicht der Fall. USB-Massenspeicher und MTP werden von den Treibern auf dem PC und nicht vom Gerät verwaltet. Welche Geräte unterstützen gleichzeitig MTP- und USB-Massenspeicher? Ich habe Artikel gefunden, die besagen, dass Geräte UMS und MTP unterstützen, aber nur UMS, wenn es eine externe SD-Karte gibt. Sie können die externe SD-Karte nicht mit MTP und mit UMS mounten. MTP ist für den internen Speicher. Und ich habe nichts gelesen, was bestätigen oder leugnen könnte, dass Sie beide gleichzeitig verwenden können.
Sie müssen keine Treiber für Tastaturen installieren, wenn sie der "Standard" -Spezifikation entsprechen, da Windows bereits die Treiber dafür hat. Es gibt Tastaturen mit eigenen Treibern. Wie gesagt, es wäre möglich. Ich bin mir nicht sicher, wie es gemacht werden würde. Es würde mit ziemlicher Sicherheit einen benutzerdefinierten Kernel erfordern, damit er wie eine Tastatur funktioniert und auf der PC-Seite keine zusätzlichen Treiber benötigt werden.
Darüber hinaus stimme ich @davidbb zu, dass dies möglich ist, und ich habe bereits gesagt, dass dies der Fall ist. Das Problem mit der Frage, ob etwas möglich ist, löst das Problem nie. Ich würde sagen: "Kann ich iOS-Anwendungen nativ unter Windows ausführen?". Dies ist theoretisch möglich, aber es gibt nichts, was dies jetzt tut, und es gibt nichts, was ein "normaler Benutzer" (oder sogar ein fortgeschrittener Benutzer) tun kann, um dies zu erreichen. Diese Website richtet sich an Benutzer. Die Aussage, dass Sie lediglich einen modifizierten Kernel schreiben müssen, ist keine Antwort, die jedem von Nutzen sein wird. Die eigentliche Antwort auf die Frage lautet also nein, da es keinen modifizierten Kernel gibt.
quelle
Haben Sie versucht , Remote - Unified - . Dies ist ein großartiges Werkzeug, um das Telefon als Tastatur und Maus zu verwenden. Es wird kein USB, sondern WLAN verwendet. Es gibt eine App auf Telefon und Computer, die zusammenarbeiten. Funktioniert gut für mich. Auch wenn Sie Vollversion erhalten, erhalten Sie Integration mit vielen gängigen Anwendungen.
quelle
Ich habe etwas ähnliches gesucht und gefunden
https://github.com/pelya/android-keyboard-gadget
Anscheinend kann in Ihrem Fall das Gleiche verwendet werden. Kurz gesagt, was ich bekommen habe, ist, dass Sie den USB-Treiber in Android-Kernel schreiben müssen, um das Gerät als HID zu erkennen.
quelle
Es ist jetzt> sechs Jahre später und irgendwo dazwischen hat jemand das Keepass2 USB Keyboard Plugin für Keepass2Android erstellt .
Wollte diese Informationen hier der Vollständigkeit halber hinzufügen und weil ich diese Frage und das oben genannte Plugin bei der Suche nach genau so etwas unbeantwortet fand .
Ich habe es selbst noch nicht getestet ...
quelle
InputStick ist ein kabelloser USB-Empfänger für Android-Geräte. Es ermöglicht Android-Anwendungen, viele verschiedene Arten von Geräten zu emulieren, zum Beispiel: USB-Tastatur, USB-Maus, USB-Gamepad und vieles mehr. Mit InputStick können Android-Apps alles tun, was ein physisches Gerät kann: Tippen, Bewegen des Mauszeigers, Steuern von Multimedia-Inhalten und Spielen.
Informationen finden Sie unter http://inputstick.com/
quelle