
Salut Avez-vous rencontré le désir de copier du texte sur un appareil à proximité? Je voudrais que ce soit aussi simple que copier-coller sur l'émulateur - taper avec vos mains est ennuyeux et pas toujours pratique.
Et qu'en est-il des raccourcis clavier: cliquez dessus et le texte du presse-papiers du PC commence à taper sur l'écran de votre téléphone / tablette - ça sonne bien, non?
Dans cet article, nous parlerons de l'utilisation d'Adb en tant qu'outil de copie de texte et de la manière de le faire facilement
Si vous êtes un utilisateur adb expérimenté et que vous avez votre propre script de ce type - je vous conseille d'aller à l'implémentation elle-même et de partager vos réflexions à ce sujet dans les commentaires.
Quoi et pourquoi
Nous allons faire un petit script qui vous permet de taper rapidement le contenu du presse-papiers sur un vrai appareil:

Ceci est utile si:
- Vérifiez le travail avec des liens ou entrez une nouvelle adresse IP pour configurer à nouveau le proxy sur l'appareil:
http:
- Vérifiez la saisie de caractères spéciaux ou entrez des données de test délicates:
v3rY$ecUrEP@s$w0rD
- Juste eu à entrer une longue file:
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:
BUexKeGHiERJ4YYbd2_Tk8XlDMVEurbKjWOWvrY
Bien sûr, vous n'aurez probablement pas à le faire régulièrement. Mais de temps en temps, j'avais des cas où il était nécessaire d'entrer manuellement quelque chose de pas très pratique pour cela sur l'appareil.
En fin de compte, il s'agissait le plus souvent de données de test ou de paramètres d'api, et bien que le script n'ait pas enregistré 5 minutes, il a fait le travail beaucoup mieux.
Comment?
Cela peut être fait en utilisant ADB (Android Debug Bridge) . Tous les développeurs et la plupart des AQ le connaissent probablement, du moins en raison de la possibilité d'afficher les journaux dans Android Studio ou directement, via adb logcat
. Si vous n'avez jamais utilisé adb auparavant, un exemple d'installation sur macOS peut être vu ici.
Nous sommes intéressés par la commande d' adb shell input
, qui permet une entrée, telle que tap
ou swipe
.
Il vous permet également de transférer du texte - il commencera à être imprimé dans le champ de saisie, qui est maintenant au point:
adb shell input text <text>
Si vous entrez des espaces, vous devez les remplacer par %s
et les caractères spéciaux à échapper. Sinon, rien ne fonctionnera.
Il convient de noter que adb ne fonctionne qu'avec l'alphabet latin, les chiffres et les caractères spéciaux de la plaque ASCII, et la saisie est quelque peu limitée:
- Ne fonctionne pas avec des caractères comme
±§
- Ne fonctionne pas avec l'habillage de ligne (mais vous pouvez, par exemple, provoquer séparément l'habillage de ligne par un autre adb avec la
adb shell input keyevent 66
(enter) ou comme décrit ici ) - Ne fonctionne pas avec cyrillique
Il existe une solution de contournement intéressante pour saisir de tels caractères, il sera peut-être possible d'y attacher le presse-papiers et ensuite tout texte sera imprimé. Certes, l'appareil devra préinstaller .apk avec un clavier.
Important: sous la forme décrite ci-dessus et ci-dessous, les commandes adb impliquent qu'un périphérique est connecté. S'il y en a plusieurs, vous pouvez effectuer les opérations suivantes:
1) Appelez la commande sur un appareil spécifique. -s
-S
Vous pouvez trouver le numéro d'appareil avec la commande adb devices
. Utilisez ensuite le numéro lors de l'appel de la commande:
$ adb devices List of devices attached 023db62er9dd7d2b device $ adb -s 023db62er9dd7d2b shell input text qwe
2) Appelez la commande sur un seul appareil connecté via USB - option -d
:
adb -d shell input text qwe
3) Appelez la commande sur le seul émulateur actif - l'option -e
:
adb -e shell input text qwe
Plus de détails peuvent être trouvés ici .
Si vous travaillez avec plusieurs appareils et que ces cas vous concernent, corrigez la commande adb en conséquence.
Implémentation
Nous allons examiner de plus près la solution pour macOS, mais pour d'autres systèmes, il existe également un moyen:
Solution Linux
À un moment donné, les gars de KODE ( Dima Suzdalev et Dima Gaiduk ) ont fait une excellente solution Linux et l'ont partagée avec moi.
Il fonctionne via le tampon X11 (si vous avez Wayland , lisez ci-dessous) - vous sélectionnez le texte du pari, puis cliquez sur le raccourci clavier qui appelle le script.
Il est facile d'ajouter un tel raccourci clavier:
1) Mettez xclip
2) Ajouter un fichier script
3) Écrivez le chemin du script dans les paramètres de raccourcis du clavier
Merci les gars et grand respect.
Important: la solution ci-dessus fonctionne pour X11 (Xorg). Pour Wayland, cette solution n'est pas pertinente. Je ne pouvais toujours pas trouver un moyen d'obtenir du contenu à partir du tampon dans Wayland, à en juger par mes recherches, il n'y a pas encore une telle possibilité. Correct sinon pas juste.
Si vous ne savez pas quel type d’environnement vous avez, regardez ici. Très probablement, vous avez X11 et tout fonctionnera.
Solution pour macOS
Pour macOS linux, la solution ne convenait pas, j'ai donc essayé de créer un script similaire qui simplifierait l'appel au adb shell input text <text>
.
Je dois dire tout de suite - travailler avec sed n'est pas évident pour moi. J'ai essayé de rassembler en une seule équipe et de compléter légèrement les différents habitués des remplacements, ce qui aiderait à échapper correctement les caractères spéciaux.
Si vous découvrez comment améliorer ce script, ce sera très cool!
Cela ressemble à ceci:
source ~/.bash_profile adb shell input text $(pbpaste | sed -e 's/[_<>|&$;()\"]/\\&/g' -e 's/ /\%s/g' -e 's/!+/!/g')
( source ~/.bash_profile
ajouté si adb fonctionne dans la console standard, mais via Automator (plus de détails plus tard) adb n'est pas reconnu, pour cela, vous devez d'abord remonter le chemin vers adb - par exemple, écrit en ~/.bash_profile
.)
Fonctionne comme un adb shell input text <text>
normal adb shell input text <text>
, mais
- La source du texte est
pbpaste
- c'est-à-dire le presse-papiers macOS. - sed traite le texte du presse-papiers.
- Les caractères
_<>&$;()\"
échappés: - &
-> \&
- Les espaces sont remplacés par un caractère spécial:
` ->
% s` - Avec un point d'exclamation, tout est compliqué - si quelqu'un m'explique un tel remplacement
!
on !
aide l'équipe à ne pas tomber - ce sera cool.
Solution Windows
Malheureusement ( ou pas ) sous Windows, je n'ai pas essayé de le faire. L'option la plus évidente qui me vient à l'esprit est d'adapter la solution et d'installer Cygwin . Cela vous permettra d'avoir un terminal Linux pratique à portée de main, ce qui est certainement utile.
Vous aurez besoin du paquet sed
et de ses dépendances et du cygutils-extra
(fournit une commande pour obtenir le contenu du presse-papiers - getclip
pour remplacer pbpaste
)
Le résultat sera très similaire à la solution pour macOS:
adb shell input text $(getclip | sed -e 's/[_<>|&$;()\"]/\\&/g' -e 's/ /\%s/g' -e 's/!+/!/g')
Windows 10 a également la possibilité de sortir un terminal Linux de la boîte . Je n'ai pas essayé cette option, mais elle devrait ressembler à une solution avec Cygwin.

Script en action
Simplifiez le travail
Vous pouvez copier le script sur la console à chaque fois ou taper du adb shell input text <something>
avec vos mains, mais ce n'est pas très pratique. Il est plus facile de créer un alias ou d'attribuer un raccourci clavier.
À propos de l'alias pour la console
La difficulté ici est que dans l'alias lui-même, vous devrez toujours échapper tous les $
et "
pour que cela fonctionne. Je ne l'ai pas encore fait, car le raccourci clavier est plus pratique pour moi. Vrai, j'ai utilisé celui-ci auparavant - alias adp='adb shell input text'
qui aidé à taper un mot comme adp example
. Si quelqu'un se fait un alias avec un script, écrivez - attachez-le ici.
À propos du raccourci clavier qui exécutera le script
Si nous parlons de solution Linux - tout dépend de la distribution, mais ce n'est pas non plus difficile.
La solution Windows sur Cygwin est un moyen simple.
Initialement, l'article était à usage interne, donc la méthode pour macOS est décrite plus en détail, vous pouvez le voir ci-dessous:
Méthode pour macOS:Il existe de nombreuses options pour ce faire, mais Automator
est installé par défaut - vous pouvez rapidement créer un raccourci clavier en l'utilisant.
Tout d'abord, exécutez Automator
, sélectionnez le type de document Service
:

Configurez ensuite le service:
- pour le
service receives
définir no input
- dans l'onglet
Actions
, sélectionnez l'action Run shell script

Vous pouvez maintenant attribuer un raccourci clavier au nouveau service:

Voilà, maintenant la copie sur l'appareil devrait fonctionner par raccourci clavier.
Certes, le service de raccourci ne fonctionne que dans les applications où l'onglet Services
trouve dans le menu des applications:

Il n'y a pas un tel onglet dans l'application Zeplin pour macOS, donc cela ne fonctionne pas. Peut-être que d'autres applications pour utiliser des scripts peuvent contourner cette limitation; pour l'instant, j'ai eu un moyen de passer par Automator.
Il convient également de considérer qu'un raccourci clavier peut intercepter le même Google Chrome ou une autre application et effectuer son action au lieu d'un script.
C'est tout
J'espère que cet article vous sera utile et vous aidera à simplifier la solution de ces problèmes dans votre travail.