Question

J'écris une application console qui utilise la touche F1 (pour obtenir de l'aide). Malheureusement, bien que Konsole (de KDE) n'utilise pas cette clé, Gnome Terminal l'utilise, de sorte que la clé F1 devient inaccessible à mon application. Je ne pense pas qu'il soit possible de détecter si la clé F1 est déjà mappée dans l'interface graphique (Gnome Terminal), mais s'il y en a une, la réponse à cette question évitera cette question. :)

Ergo, mon autre meilleur choix est d'essayer de détecter si je cours dans Gnome Terminal. Y a-t-il un moyen de faire ça? Ce qui m'intéresse surtout de glaner cela depuis Ruby, mais si cela peut être fait via des variables d'environnement ou d'environnement, ou un système de fichiers virtuel (/ proc, / dev, etc.), cela suffira.

J'espère un moyen fiable de le faire, mais je peux me contenter de "meilleure estimation". Des approches telles que la recherche d’indices dans les variables d’environnement peuvent me permettre de supposer que Gnome Terminal est le terminal de recouvrement.

Informations supplémentaires: les autres clés sont également "volées". par Gnome Terminal. J'ai l'intention d'afficher une sorte de message informatif sur les clés alternatives pour les utilisateurs de Gnome.

Était-ce utile?

La solution

Googleage a révélé que je pourrais peut-être compter sur Gnome Terminal pour définir la variable d’environnement COLORTERM sur 'gnome-terminal'.

Autres conseils

Pour zsh:

[[ "$COLORTERM" == "gnome-terminal" ]] || [[ ${$(ps -p $(ps -p $ -o ppid=) -o cmd=):t} == gnome-terminal* ]]

gnome-terminal utilisé pour définir $ COLORTERM , mais cela a été abandonné (dans 3.12.0-67-g1d5c1b6).

Normalement, vous utilisez termcap info aka terminfo. Cela vous indique le type de terminal sur lequel vous travaillez et les clés.

C’est le choix de l’utilisateur, et comme Gnome Terminal s’annonce probablement comme une sorte de terme x, comme le fera probablement Konsole, il existe probablement un moyen pour l’utilisateur de créer une touche F1. Par conséquent, je soupçonne que les capacités de terminal des deux appareils seront considérées comme équivalentes.

Cette enquête sur les codes d'échappement de la touche de fonction peut être intéressant pour vous sans réellement expliquer comment, s’il est même possible, que le terminal gnome puisse produire une presse F1. En pensant au terminal Mac OS X que j’utilisais il y a longtemps, il a capturé PageUp et PageDown pour la barre de défilement, alors que Command-PageUp et Command-PageDown les transmettaient au terminal.

Une méthode plutôt grossière, si vous souhaitez déléguer cela au shell - sinon, en C ou C ++, vous devrez parcourir votre / proc, si vous en avez un:

ps x | grep `ps o ppid,fname | grep bash | grep -v grep | head -1 | awk '{print $1}'` | grep 'gnome-terminal' | wc -l

Si vous exécutez à partir de votre propre programme, via system () par exemple, vous pouvez utiliser pour "grep" le nom de votre programme plutôt que "bash"

Je sais, c’est vraiment "un hack comme un pirate". ;)

fwiw, c’est un paramètre dans gnome-terminal; les utilisateurs peuvent aller à Modifier - > Raccourcis clavier dans les menus de gnome-terminal et modification ou suppression du raccourci clavier F1.

Je vérifie simplement le $ TERM pour l'émulateur de terminal de mon choix, puis j'ajoute un alias pour créer un nouveau terminal dans le répertoire en cours.

if [[ $TERM == 'xterm' ]] ; then
  alias nw='gnome-terminal --working-directory=$PWD'
fi
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top