Ce que je cherche:
Existe-t-il un moyen de faire en sorte que l'appareil prétende être un clavier / HID lorsqu'il est branché sur un port USB et «taper» le contenu du presse-papiers? Plus précisément; Que faudrait-il pour y arriver?
Cas d'utilisation motivant:
J'ai un programme de gestion des mots de passe sur mon téléphone, mais c'est ennuyeux de devoir lire le mot de passe sur l'appareil et d'essayer de le saisir sur un autre ordinateur.
Contexte:
J'ai un appareil Android qui a été construit avant que MTP ne soit pris en charge pour le transfert de fichiers mais, avec les mises à niveau récentes, le prend désormais en charge. Sur cette base, la classe USB qu'elle prétend ne peut pas être définie par le matériel et doit être définie par le logiciel.
IIRC, ce projet a des appareils Android (avec ce que je pense être un noyau de stock) parlant comme une classe USB qui n'était définitivement pas intégrée. Cela m'indique que vous pourriez être en mesure de contrôler ce que les classes USB il prend en charge sans travail du noyau mais ne sais pas avec certitude.
En ce qui concerne le côté hôte (c'est-à-dire le PC), je n'ai jamais vu un PC, Mac ou Linux nécessiter des lecteurs spéciaux pour les claviers, même pour certains appareils plutôt ésotériques qui prétendent être des claviers (scanners de codes à barres, cartes de crédit et smart lecteurs de cartes, etc.) donc les pilotes génériques devraient être assez bons pour ce que je veux.
Tout cela fait valoir que ce que je recherche peut être fait d'un point de vue matériel , mais en dit très peu sur le support logiciel existant et rien sur le fait qu'il existe une application pour cela.
Réponses:
Oui. C'est certainement possible, ne nécessitant aucune modification ou pilote sur le PC. Comme le mentionne l'OP, l'identification USB sur le téléphone se fait finalement dans le logiciel (dans ce fichier https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ), et il pourrait être modifié pour s'identifier comme un clavier USB standard.
Ce changement nécessiterait deux ou trois choses.
Il y a quelques années, un article (intitulé Exploiter la connectivité USB des téléphones intelligents pour le plaisir et le profit ) décrivait l'utilisation d'un téléphone pour forcer les écrans de connexion au bureau. La méthode utilisée a consisté à faire apparaître le téléphone comme un clavier USB.
la source
Cela ne répond pas exactement à votre question, mais cela pourrait vous aider dans votre cas d'utilisation.
Vous voulez peut-être jeter un œil à InputStick . Ce sera une clé USB que vous associez à Android via Bluetooth. Branché sur un ordinateur, il émule un HID USB générique pour envoyer des coups de clavier. Une API Java avancée permettra également de spécifier, par exemple, des descripteurs de périphériques pour émuler des fonctions non standard. Il pourrait fournir un bel exemple qu'il est défini dans le logiciel plutôt que dans le matériel.
Pour référence, le développeur travaille également sur des exemples de programmes, tels que Demo Password Manager.
la source
Au minimum, cela nécessiterait à la fois un logiciel sur le téléphone et sur le PC. Les 2 logiciels devraient communiquer entre eux. Rien de tel, que je sache actuellement, n'existe.
Et pour que le PC pense que le périphérique est vraiment un clavier, il faudrait un nouveau pilote qui dirait au PC que le périphérique est un clavier et comment «l'utiliser comme clavier».
Je ne dis pas que ce n'est pas possible, car à peu près tout est possible quand il s'agit de choses comme ça. Ce que je dis cependant, c'est que rien de tel n'existe actuellement.
L'USB est à la fois matériel et logiciel.S'il s'agissait d'un logiciel seul, le même pilote USB fonctionnerait pour tous les appareils Android sous Windows, et ce n'est pas le cas. Le stockage de masse USB et MTP sont gérés par les pilotes du PC, pas par l'appareil. Quels appareils prennent en charge le stockage de masse MTP et USB en même temps? J'ai trouvé des articles indiquant que les appareils peuvent prendre en charge UMS et MTP, mais uniquement UMS s'il existe une carte SD externe. Vous ne pouvez pas monter la carte SD externe avec MTP et avec UMS. MTP est destiné au stockage interne. Et je n'ai rien lu qui puisse confirmer ou infirmer que vous pouvez utiliser les deux en même temps.
Vous n'avez pas besoin d'installer les pilotes pour les claviers, s'ils suivent la spécification "par défaut" car Windows a déjà les pilotes pour cela. Certains claviers sont livrés avec leurs propres pilotes. Comme je l'ai dit, ce serait possible. Je ne sais pas comment cela serait fait. Cela nécessiterait presque certainement un noyau personnalisé pour qu'il agisse comme un clavier et aucun pilote supplémentaire ne soit nécessaire du côté PC.
De plus, je suis d'accord avec @davidbb que c'est possible et je l'ai déjà dit. Le problème avec une question demandant si quelque chose est possible, ne résout jamais le problème. Ce serait comme si je disais "est-il possible pour moi d'exécuter des applications iOS nativement sur Windows?". C'est théoriquement possible, mais il n'y a rien qui le fasse maintenant et il n'y a rien que "un utilisateur normal" (ou même un utilisateur avancé) puisse faire pour que cela se produise. Ce site est destiné aux utilisateurs, donc dire que vous avez juste besoin d'écrire un noyau modifié n'est pas une réponse qui va bénéficier à personne. La vraie réponse à la question est donc non, car il n'y a pas de noyau modifié.
la source
Avez-vous essayé la télécommande unifiée . C'est un excellent outil pour utiliser le téléphone comme clavier et souris. Il n'utilise pas USB mais wifi à la place. Il existe une application sur le téléphone et l'ordinateur qui fonctionne ensemble. Fonctionne très bien pour moi. De plus, si vous obtenez la version complète, vous obtenez une intégration avec de nombreuses applications courantes.
la source
Je cherchais quelque chose de similaire et j'ai trouvé
https://github.com/pelya/android-keyboard-gadget
Semble la même chose peut être utilisée dans votre cas. En bref, ce que j'ai, c'est que vous devez écrire le pilote USB dans le noyau Android pour détecter le périphérique comme HID.
la source
C'est maintenant> six ans plus tard et quelque part entre les deux que quelqu'un a créé le plugin de clavier USB Keepass2 pour Keepass2Android .
Je voulais ajouter ces informations ici par souci d'exhaustivité et parce que j'ai trouvé cette question sans réponse et le plugin susmentionné tout en recherchant exactement quelque chose comme ça.
Je ne l'ai pas encore testé moi-même ...
la source
InputStick est un récepteur USB sans fil, conçu pour les appareils Android. Il permet aux applications Android d'émuler de nombreux types d'appareils, par exemple: clavier USB, souris USB, manette de jeu USB et bien d'autres. Avec InputStick, les applications Android peuvent faire tout ce qu'un appareil physique peut: taper, déplacer le pointeur de la souris, contrôler le multimédia et les jeux.
Des informations peuvent être trouvées sur http://inputstick.com/
la source