Envoi de touches à une session X distante via SSH

12

Je suis donc assis dans notre salon sur un ordinateur portable Ubuntu, tout en regardant un téléviseur contrôlé par un HTPC Ubuntu. J'ai une télécommande infrarouge configurée et je peux contrôler tout ce dont j'ai besoin avec elle, 99% du temps.

Cependant, la saisie de texte sur une télécommande n'est pas très facile. Je n'ai pas besoin de le faire très souvent, mais quand je le fais, il est plus facile de marcher 15 pieds pour brancher un clavier USB et de le faire de cette façon. Cependant ... Je suis criminellement et médicalement paresseux et sentir que marcher n'importe quelle distance n'est pas seulement inutile, cela montre les robots qu'ils ont gagnés. Je ne dis plus!

Je peux SSH dans l'amende HTPC ... Maintenant, comment puis-je envoyer des touches à la session X de cet ordinateur distant?

Je dois mentionner que je sais que je pourrais VNC mais le téléviseur est en 1080p et l'ordinateur portable en 720p, ce qui présente des problèmes de mise à l'échelle. Sur le plan technique, je préfère une solution qui m'a permis de transformer temporairement l'ordinateur portable en clavier distant.

Oli
la source
Je suis encore plus paresseux que toi. Au lieu de configurer une télécommande infrarouge (j'en ai même acheté une!), J'ai également acheté un clavier sans fil de confiance .
MadMike

Réponses:

13

Vous devriez pouvoir le faire en utilisant la xdotoolcommande, après avoir spécifié l'affichage X approprié, par exemple pour simuler une seule pression sur la flèche vers le bas dans la fenêtre actuellement active.

$ DISPLAY=:0 xdotool getactivewindow key Down

Pour saisir du texte littéral, vous pouvez utiliser xdotool type <string>par exemple

$ DISPLAY=:0 xdotool getactivewindow type 'your text here'

Le xdotoolpackage doit être disponible à partir du référentiel Universe.

tournevis
la source
Je ne nie pas que cela fonctionne, mais c'est un peu misérable si vous essayez de taper un emplacement réseau une clé à la fois.
Oli
3
Vous pouvez utiliser xdotool typepour envoyer des chaînes complètes telles que tapées - voir ma modification ci-dessus.
steeldriver
10

En utilisant x2xet certains transferts X11, je l'ai fait fonctionner.

ssh -X htpc x2x -to :0

Le seul inconvénient actuellement est que je devais me cogner dans un ATS pour tuer SSH pour le quitter. Je cherche toujours comment arrêter quand j'ai fini! Sinon, c'est une méthode assez agréable et simple (et raccourcissable) pour transférer les entrées d'un ordinateur à un autre.

Edit: l'ajout -nomousem'a donné la possibilité de fermer la x2xfenêtre transférée et je peux la dé-focaliser pour revenir rapidement à d'autres choses sans avoir à fermer la connexion.

Oli
la source
-nomousene semble plus fonctionner; pour moi sous ubuntu 16.04 x2x imprime uniquement les informations d'utilisation, peu importe où je mets ce drapeau.
Philipp Ludwig