J'ai un petit problème. Je voulais remapper certains raccourcis clavier auxquels je suis habitué à partir de mon système précédent, mais je ne peux pas le faire fonctionner correctement xbindkeys
.
xbindkeys
reconnaît la combinaison, mais la commande ne se déclenche pas.
Si j'utilise la commande
xdotool key braceleft
Il me sort le bon {
signe dans la console. Cependant, si j'utilise la même commande dans xbindkeys, rien ne se passe. Si je remplace la commande par firefox
elle fonctionne correctement et ouvre Firefox, donc je suppose que ça xbindkeys
marche.
Je veux atteindre les objectifs suivants:
Je veux taper le caractère {
dans la fenêtre active avec
Alt_R+ 7ou Alt_Left+ Ctrl+ 7pour pouvoir utiliser les deux. Je sais que Alt_R(AltGr) est la bonne façon, mais sur les claviers allemands, il est en quelque sorte difficile de taper le braceleft avec la AltGrtouche (Alt_R), donc je dois utiliser Alt_L+ Control+ à la 7place (comme je l'étais dans mon système précédent). J'ai réussi à le faire fonctionner correctement en 12.04, mais je ne peux pas le faire fonctionner en 14.04.
Aucune suggestion? J'ai essayé plusieurs commandes. Tous ont fonctionné dans la console, mais aucun n'a fonctionné lorsqu'il était exécuté par xbindkeys
xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'
Ceci est ma config, qui ne fonctionnera pas
"xdotool key braceleft"
Control+Alt + 7
Cependant, cela fonctionne:
"firefox"
Control+Alt + 7
Modification de la solution
Comme j'ai essayé plusieurs autres choses, j'ai remarqué que xdotool semble se déclencher trop tôt. J'ai modifié la config comme ceci:
"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7
MAINTENANT, il envoie le bon signe {à la fenêtre active. Maintenant, la seule chose qui reste est de réduire le sommeil et le retard à une valeur réalisable, car 1 seconde semble un peu trop long :)
** Informations sur l'ajout ** Eh bien, maintenant j'ai réussi à trouver des valeurs appropriées. CEPENDANT, cela ne fonctionne que si vous relâchez les touches jusqu'à ce que la durée de sommeil soit terminée. Si vous êtes trop lent ou ne fonctionnera pas.
Ceci est ma configuration actuelle pour tous les caractères AltGr allemands peu pratiques
"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7
"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q
"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e
"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8
"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9
"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0
"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus
Cependant, si vous voulez taper plusieurs signes @ (par exemple), vous devez appuyer sur Ctrl + Alt + Q comme prévu, mais relâchez toutes les touches et appuyez à nouveau dessus. Cependant, c'est beaucoup, beaucoup mieux que de ne pas avoir l'option Control + Alt au lieu d'AltGr mais ce n'est pas aussi efficace que moi aussi. Je trouverai peut-être aussi une solution à cela.
xdotool
répéter la touche tout en maintenant la touche enfoncée?xdotool getactivewindow key Home
Réponses:
Le problème avec
xdotool
est pendant que les vraies touches sont pressées Xorg envoie à plusieurs reprises des événements de pression de touche (regardez laxev
sortie). Pour surmonter cela, vous devez désactiver temporairement la fonction de répétition, puis générer un événement KeyRelease sur une clé qui était en panne.Au lieu de
essayez ce qui suit:
la source
Comme j'ai essayé plusieurs autres choses, j'ai remarqué que xdotool semble se déclencher trop tôt. J'ai modifié la config comme ceci:
MAINTENANT, il envoie le bon signe {à la fenêtre active. Maintenant, la seule chose qui reste est de réduire le sommeil et le retard à une valeur réalisable, car 1 seconde semble un peu trop long :)
** Informations sur l'ajout ** Eh bien, maintenant j'ai réussi à trouver des valeurs appropriées. CEPENDANT, cela ne fonctionne que si vous relâchez les touches jusqu'à ce que la durée de sommeil soit terminée. Si vous êtes trop lent ou ne fonctionnera pas.
Ceci est ma configuration actuelle pour tous les caractères AltGr allemands peu pratiques
Cependant, si vous voulez taper plusieurs signes @ (par exemple), vous devez appuyer sur Ctrl + Alt + Q comme prévu, mais relâchez toutes les touches et appuyez à nouveau dessus. Cependant, c'est beaucoup, beaucoup mieux que de ne pas avoir l'option Control + Alt au lieu d'AltGr mais ce n'est pas aussi efficace que moi aussi. Je trouverai peut-être aussi une solution à cela.
la source
sleep
, je pense que vous voulez ajouter+ release
aux combos clés. Cela indiqueraxbindkeys
d'attendre que la touche soit relâchée avant de déclencher la commande.Comme indiqué dans des questions similaires ( pourquoi ces commandes xte fonctionnent-elles dans le terminal, mais pas lorsqu'elles sont liées à xbindkeys? ), Vous pouvez demander
xbindkeys
de déclencher des événements à la sortie (à la clé):De cette façon, il n'y a pas de conflit entre les touches utilisées pour le raccourci et celles envoyées.
la source
J'ai récemment rencontré ce problème, où j'ai essayé de simuler la clé de lecture / pause multimédia (XF86AudioPlay) à l'aide de Ctrl + G.Après quelques recherches, il est apparu non seulement que j'avais besoin d'annuler le contrôle , mais également la touche g (qui est ce qui avait besoin du
sleep 0.1
délai pour commencer). Si j'annule ces deux clés en utilisantkeyup
dans xdotool ainsi que le commutateur --clearmodifiers, cela fonctionne. Voici ma nouvelle commande, dans mon fichier .xbindkeys.rc:la source
Je ne sais pas pourquoi cela ne fonctionne pas
xbindkeys
, je suppose que vous devez spécifier la fenêtre dans laquelle écrire. Comme solution de contournement, vous pouvez utiliser à laxvkbd
place.Installer
xvkbd
Ajoutez ceci à votre
.xbindkeysrc
fichierCela devrait fonctionner.
REMARQUES
Pour une raison quelconque, sur ma machine,
xvkbd
j'utilise l'une de mes mises en page secondaires (espagnol) au lieu de ma principale (anglais américain), ce qui entraîne l'{
impression"
. Si vous rencontrez également ce problème, jouez un peu pour savoir quelle touche correspond à{
la disposition utilisée. Alternativement, vous pouvez creuser plus profondément et déterminer d'où proviennentxvkbd
seslocale
paramètres.la source