URL: https://linuxfr.org/forums/programmationautre/posts/recevoir-des-evenements-clavier-dans-un-script-bash-en-tache-de-fond Title: recevoir des événements clavier dans un script bash en tâche de fond Authors: Vincent Gay Date: 2014年11月05日T16:27:09+01:00 License: CC By-SA Tags: Score: 0 Bonjour, j'ai un script bash qui me rend bien des services : il récupère la sélection X (xsel -o) et la renvoie après transformation dans le presse papier et la zone de notification. Les transformations possibles sont : passage en majuscules passage en minuscules passage en casse inverse remplacement des . (points) par des , (virgule) ou inverse traduction de auto vers anglais ou vers français (via google traduction) J'appelle ce script via des raccourcis clavier, autant de raccourcis qu'il y a d'options. Cela ne pose pas de problème sous openbox grâce aux raccourcis doubles lames mais cela devient vite encombrant d'en d'autre environnements, notamment sur le PC de ma douce sous KDE. J'ai tenté 'read -st 2 -N 1' mais sans surprise cela ne fonctionne pas quand le script tourne en tâche de fond. Cela fonctionne si je le lance dans xterm mais cela n'est pas bien élégant. Mes recherches sur le web me laissent bien peu d'espoir mais peut-être ai-je mal posé la question. Quelqu'un de cette noble assemblée aurait-il une piste à me proposer ? Merci d'avance le script : ```sh #! /bin/bash # dépendance xsel xclip html2text libnotify IFS=$'\n' traduction () { # fonction provenant d'un script de Johnraff sur le forum de crunchbang # http://crunchbang.org/forums/viewtopic.php?id=17034 result=$(curl -s -i --user-agent "" -d "sl=auto" -d "tl=1ドル" --data-urlencode "text=$selection" https://translate.google.com) encoding=$(awk '/Content-Type: .* charset=/ {sub(/^.*charset=["'\'']?/,""); sub(/[ "'\''].*$/,""); print}' <<<"$result") trad=$(iconv -f $encoding <<<"$result" | awk 'BEGIN {RS=""};/]* id=["'\'']?result_box["'\'']?/' | html2text | tr "\n" " ") } selection=$(xsel -o | tr "\n" " ") #read -st 2 -N 1 key #if [ -z $key ]; then exit 1;fi case 1ドル in u) # tout en majuscule echo ${selection^^} | xclip -i -selection clipboard;; l) # tout en minuscule echo ${selection,,} | xclip -i -selection clipboard;; i) # casse inverse echo ${selection~~} | xclip -i -selection clipboard;; v) # remplace le point par une virgule echo $selection | sed "s/\./,/g" | xclip -i -selection clipboard;; p) # remplace la virgule par un point echo $selection | sed 's/,/\./g' | xclip -i -selection clipboard;; a) # traduit de auto en anglais traduction "en" NotifyTime=15000 echo $trad | xclip -i -selection clipboard;; f) # traduit de auto en français traduction "fr" NotifyTime=15000 echo $trad | xclip -i -selection clipboard;; *) # cas non prévus echo "usage inattendu" | xclip -i -selection clipboard esac notify-send --icon=dialog-information -t 10000 'scopy' $(xclip -o -selection clipboard) ```

AltStyle によって変換されたページ (->オリジナル) /