2017-04-08 2 views
2

Je commence à utiliser zsh sur macOS Sierra. Je voudrais avoir les applications clés suivantes:Est-il possible de lier la touche Maj + Entrée dans zsh?

  • Entrée => accept ligne
  • Maj-Entrée => accepte-bloqueurs

Cependant, je ne peux pas sembler différencier entre les deux. Je ne suis en mesure d'obtenir Enter et Esc-Entrée, mais pas Maj-Entrée:

bindkey "^M" accept-line  # Enter 
bindkey "^[^M" accept-and-hold # Esc-Enter 
bindkey "????" accept-and-hold # Shift-Enter 

Est-il possible de détecter et de gérer Shift-Enter?

Répondre

0

Cela pourrait répondre à votre problème (ne peut pas le mettre en commentaire, ne pas avoir 50 rep). Vous pouvez essayer # showkey --scancodes qui vous donne des codes clés et jetez un coup d'oeil dans les pages de manuel par exemple. man zshzle et recherchez "code". J'ai essayé de mapper la touche Maj sans succès. Peut-être que ce n'est pas possible. ont également un coup d'oeil dans bindkey -l Wich vous donne les keymaps et bindkey -M emacs pour emacs keymap

+0

'showkey' ne semble pas être disponible sur macOS. –

+0

Vous pouvez essayer http://macbiblioblog.blogspot.de/2014/12/key-codes-for-function-and-special-keys.html?m=1 ou google pour les codes clés mac – rav

2

zsh (ainsi que d'autres coquilles) n'agissent pas sur les raccourcis clavier, mais plutôt sur des séquences de touches reçues du terminal. La conversion des touches et des combinaisons en séquences de touches relève de la responsabilité du terminal. Vous pouvez récupérer la séquence de touches pour une combinaison de touches en appuyant sur Ctr + v suivi de la combinaison de touches, par ex. Décalage + Entrez.

Par défaut Entrez et Maj + Entrez (ainsi que Ctrl + v et Ctrl + Maj + m) génèrent tous la séquence de touches identiques ^M (at moins dans la plupart des émulateurs de terminaux communs).

Heureusement, certains émulateurs de terminal permettent de configurer les séquences de touches envoyées. Par exemple iTerm2 vous permet de définir des raccourcis clavier personnalisés qui envoient des séquences d'échappement (en profil> Touches), vous devriez être en mesure de définir une séquence pour Maj +y entrer, par exemple [[SE et peut ensuite effectuer les paramètres appropriés dans zsh: bindkey '^[[[SE' 'accept-and-hold'. (Malheureusement, je n'ai pas accès à un Mac pour le moment, donc je n'ai pas pu tester ça).