J'essaie de simuler une pression sur une touche de support en utilisant un raccourci personnalisé.
Jusqu'à présent, j'ai pu réaliser la simulation dont j'ai besoin à l'aide de la commande:
xdotool key XF86AudioPlay
Il fonctionne parfaitement, il met en pause ou démarre le lecteur de musique à chaque exécution.
Le problème vient en essayant de l'exécuter comme un raccourci.
J'ai d'abord essayé de créer un alias avec un raccourci personnalisé, mais cela n'a pas fonctionné.
Comme expliqué sur cette question :
Les commandes exécutées par les liaisons au clavier ne sont pas analysées via un shell. Votre meilleur pari est de créer un répertoire bin dans votre répertoire personnel.
Ensuite, j'ai créé le script suggéré et l'ai nommé simplay:
#! /bin/sh
xdotool key XF86AudioPlay
Il se trouve dans un dossier bin faisant partie de PATH
name__. Cela fonctionne correctement et peut être exécuté à partir de n’importe quel emplacement.
Lors de la tentative de création du raccourci personnalisé, je ne pouvais pas l'exécuter, la configuration est la suivante:
Name: test
Command: simplay
Shortcut: Ctrl+Alt+R
Après avoir cherché un peu plus, j'ai trouvé un autre moyen d'exécuter le raccourci:
gnome-terminal -e simplay
Je l'ai essayé sur un terminal et j'ai remarqué que lors de son exécution, il ouvrirait rapidement une nouvelle fenêtre de terminal, exécuterait le processus enfant, mettrait en pause la musique et fermerait immédiatement la fenêtre.
J'ai changé la commande sur le raccourci et en le frappant j'ai remarqué le même comportement en ouvrant un terminal et en le fermant immédiatement, mais cette fois, le processus enfant n'a pas mis la musique en pause, ce qui me fait penser que le script a été appelé à toutes mes tentatives précédentes. mais c'est en quelque sorte ne pas pouvoir exécuter.
Comment puis-je résoudre ce problème en fonction de vos connaissances?
Votre raccourci est effectué en même temps que la touche simulée, appuyez sur
Si vous exécutez une commande, simulant une touche, appelée avec ... une autre touche, vous simulerez une touche third , qui est la combinaison des deux :)
Vous devez empêcher votre raccourci de s'exécuter en même temps que la touche simulée. En d'autres termes, ajoutez un délai:
/bin/bash -c "sleep 1 && xdotool key XF86AudioPlay"
Ajoutez cette commande à un raccourci et cela devrait fonctionner.
Bien sûr, vous pouvez jouer un peu avec la valeur dans sleep 1
, pour la régler sur la meilleure valeur qui soit confortable, en fonction de la façon dont la combinaison est collée. sleep 0.5
pourrait très bien faire l'affaire et faire en sorte que le raccourci agisse plus rapidement.
Vous pouvez également utiliser la commande directement dans la définition du raccourci. Il n'est donc pas nécessaire de créer un script autonome pour cette dernière.
Au lieu d'utiliser la solution de contournement "sleep 1", vous pouvez utiliser l'indicateur --clearmodifiers
, c'est-à-dire que votre raccourci personnalisé ressemblerait à ceci:
Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay
Shortcut: Ctrl+Alt+R
Pour moi, cela fonctionne lors du mappage des raccourcis sur Super+F9
.