82 votes

Est-il possible de programmer Android pour qu'il agisse comme un clavier USB physique?

Ce que je veux vraiment savoir, c'est si c'est un problème matériel ou un problème de logiciel. Pourrais-je brancher mon téléphone android à l'ordinateur via le port USB et la faire agir comme un clavier matériel. Je ne veux pas installer n'importe quoi sur l'ordinateur, je veux android à se comporter comme la norme de matériel.


Edit: Précisions Je veux écrire un programme, d'une bibliothèque pour android qui permet à l'appareil entièrement émuler un clavier ordinaire, de sorte que le système d'exploitation le signale comme un clavier standard de l'appareil, et il serait de travailler dans le BIOS ou n'importe où ailleurs qu'un clavier fonctionne.

44voto

pelya Points 886

J'ai modifié le noyau sur la Nexus 7 de la loi comme norme HID de clavier et de souris, sans perdre de MTP/BAD/autre fonctionnalité USB.

Vous pouvez utiliser usb-gadget-test de l'utilitaire de ligne de commande pour envoyer des séquences de touches et les mouvements de la souris de votre PC. Je veux créer une administration à distance app plus tard, ce qui permettra d'envoyer des principaux événements et de recevoir de la vidéo de la caméra.

Mise à jour du noyau, les binaires et les instructions: https://github.com/pelya/android-keyboard-gadget

Edit: j'ai publié une bonne application sur Google Play, si votre Nexus 7 est enraciné vous pouvez flash noyau à partir de l'app, et envoyer des combinaisons de touches avec elle.

14voto

Chris Bye Points 753

La plupart des claviers USB besoin de pilotes pour fonctionner. Toute la fonctionnalité de clavier (non-standard des boutons) - delà de la capacité de la norme pilotes HID aurez besoin d'installer un logiciel sur l'ordinateur.

Cela étant dit, Il peut être possible d'utiliser Android USB capacités, ainsi que l'écriture d'un pilote personnalisé si le défaut CACHÉ n'est pas suffisant pour atteindre votre objectif. Il est probablement un très non-trivial entreprise.

Edit: Je pense que KristopherMicinski est juste que le niveau de contrôle que vous obtenez avec le stock Android USB API est inadéquate à cet effet. Ses deux solutions de modifier le firmware pour communiquer à l'aide CACHÉ normes, ainsi que d'un matériel intermédiaire qui traduit à partir de l'Android Accessoire protocole HID deux semblent valables pour moi. Si l'installation des pilotes sur l'ordinateur est hors de question, ce sont peut-être les deux seules options.

Toutefois, si vous êtes ouvert à l'installation d'un pilote pour ce comportement, Il doit être possible d'écrire un pilote personnalisé qui peut gérer Android protocole USB, et de traduire à l'corriger les appels/interruptions pour la fonctionnalité de clavier. Si ma mémoire est bonne, tous les périphériques clavier que j'ai utilisé au cours des 10 dernières années, a besoin d'installer un pilote pour la fonctionnalité complète, de sorte que cela peut ne pas être considéré comme non-standard de comportement. (Bien que tout se produit que cette approche ne permettent à l'appareil de fonctionner comme un clavier de windows à l'intérieur, pas pendant le processus de démarrage)

11voto

Orwellophile Points 2695

On dirait que quelqu'un l'a finalement fait, c'est un petit peu moche - mais ici, il est:

http://forum.xda-developers.com/showthread.php?t=1871281

Il implique une certaine recompilation du noyau, et un peu de montage, et vous perdre partielle des fonctionnalités (le MDC?) .. mais c'est fait.

Personnellement, maintenant que je vois le "coût réel", j'aurais probablement mis en place un petit adaptateur sur un Teency ou quelque chose - en supposant que Android peut parler de série des appareils via le port USB. Mais c'est basé sur le fait que j'ai un samsung et il aurait besoin d'un câble spécial pour faire une connexion USB de toute façon pas de mal d'avoir un petit appareil sur la fin, si j'ai à faire ce fichu câble autour de toute façon.

5voto

JavaMan Points 1350

Il semble que quelqu'un l'ai fait par patcher le noyau. Je viens de tomber sur un article intitulé "l'Exploitation de Téléphone Intelligent, la Connectivité USB Pour le Plaisir Et le Profit" par Angelos Stavrou, Zhaohui Wang, Département des Sciences Informatiques de l'Université George Mason, Fairfax, VA. (disponible librement par googler le titre ci-dessus). Ici, les deux chercheurs sont en train d'étudier la possibilité d'un compromis android dispositif de contrôle de l'attaché PC par avoir de l'appareil android, se présentant comme un périphérique HID (clavier). Comme une preuve de concept, il semble qu'ils ont corrigé correctement un noyau en train de faire exactement ce que vous voulez. Ils ne fournissent pas le détail des étapes, mais de toute façon je viens de citer ce qu'ils ont dit qu'ils ont fait:

.....nous avons mis au point un gadget USB pilote existantes, USB interface composite sur l'Android noyau Linux en utilisant le Gadget USB API pour Linux[4]. Le UGAL cadre nous a aidé à mettre en œuvre un simple USB L'homme Pilote de l'Interface (HID) fonctionnalité (c'est à dire de pilote de périphérique) et le code de la colle entre les différentes Api du noyau. En utilisant le code fourni dans: "drivers/usb/gadget/composite.c", nous avons créé notre propre gadget pilote comme un supplément de composite de l'interface USB. Ce pilote permet de simuler un USB clavier de l'appareil. On peut aussi simuler une souris USB périphérique d'envoi pré-programmé de commande d'entrée pour le système de bureau. Par conséquent, il est simple à poser comme un fait normal de souris ou un clavier USB de l'appareil et de envoyer commande prédéfinie furtivement pour simuler malveillants interactive les activités de l'utilisateur. Pour vérifier cette fonctionnalité, dans notre contrôlé expériences, nous envoyer mot de code séquences non-fatal opérations et de montrer comment un tel manipulé appareil peut causer des dommages Dans en particulier, nous avons simulé un Dell clavier USB (id=413C, productID=2105) l'envoi de "CTRL+SUPPR" combinaison de touches et de "U" et "Enter" la clé de la séquence de redémarrage de la machine. Notez que cela nécessite seulement USB connexion et peut acquérir la "utilisateur actuel" privilège sur le bureau système. Avec l'augmentation de la local ou distant exploiter envoyé en tant que charge utile, le malware peut dégénérer le privilège et le plein accès de l' système de bureau.

3voto

La seule façon pour moi de voir cela possible est si vous:

  • modifié le micrologiciel Android pour vous donner un accès au niveau USB à un niveau suffisamment bas pour pouvoir fonctionner à l'aide du protocole nécessaire

ou

  • Faites une sorte de convertisseur de niveau de matériel spécial que vous avez attaché à l'appareil.

(Je suppose donc que, selon le travail que vous souhaitez effectuer, il pourrait s'agir d'un problème matériel ou logiciel.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X