55 votes

zsh (z Shell) numpad/numlock ne fonctionne pas

Je viens de passer à zsh/oh-my-zsh. Presque immédiatement, je remarque sur ma machine que le pavé numérique à 10 chiffres ne fonctionne pas. Il fonctionnait dans bash et fish Shell.

Curieusement, si je maintiens la touche fn/fonction enfoncée, cela agit comme un verrouillage numérique et fonctionne, mais cela ne " verrouille " pas et je dois maintenir la touche fn enfoncée pour taper les chiffres.

Des idées ?

107voto

Dženan Points 306

Les touches du pavé numérique n'envoient pas les mêmes symboles que les touches numériques "normales" de la rangée supérieure. Par exemple : La touche numpad-1 envoie KP_1 alors que la touche 1 envoie simplement 1 .

Certains terminaux remappent automatiquement la touche du pavé numérique pour envoyer les mêmes codes au Shell. De même, certains shells (par exemple bash ) interprète simplement les touches du pavé numérique comme leurs équivalents dans le bloc principal.

zsh ne fait pas le mappage automatiquement, mais vous pouvez utiliser bindkey pour faire la cartographie par vous-même. J'ai les éléments suivants dans mon ~/.zshrc pour faire fonctionner le clavier :

# Keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[Ol" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * /
bindkey -s "^[Ok" "+"
bindkey -s "^[Om" "-"
bindkey -s "^[Oj" "*"
bindkey -s "^[Oo" "/"

bindkey -s in-string out-string se lie à in-string à out-string . Si in-string est tapé out-string est repoussé et traité comme une entrée.

Les codes réels (par exemple ^[Oq ) peut être différent sur votre système. Vous pouvez appuyer sur Ctrl + v suivi de la clé en question pour obtenir le code de votre terminal.

20voto

Robin Daugherty Points 300

Pour compléter la réponse donnée par @adaephon, voici les bindings corrects pour le clavier USB Apple (A1243). Ils doivent être ajoutés à ~/.zshrc .

# Fix numeric keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[On" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * / =
bindkey -s "^[Ol" "+"
bindkey -s "^[Om" "-"
bindkey -s "^[Oj" "*"
bindkey -s "^[Oo" "/"
bindkey -s "^[OX" "="

4voto

Daniel Bermudez Points 41

Complétant également la réponse de @adaephon. Voici ce que j'ai dû utiliser pour mon ordinateur Dell, cela pourrait vous aider. Il suffit de l'ajouter dans votre fichier .zshrc.

(BTW ne pas ajouter les liaisons de toutes les réponses, vous devriez avoir juste une liaison par clé)

# Keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[On" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * /
bindkey -s "^[OQ" "/"
bindkey -s "^[OR" "*"
bindkey -s "^[OS" "-"
bindkey -s "^[Ol" "+"
#END Keypad

4voto

Mr. Doomsbuster Points 141

Sur mon Mac OSX El Capitan, la touche de point est ^[0n 代わりに ^[01 . J'ai aussi un clavier sans fil Logitech pour le Mac et il a une fonction d'alarme. = sur le pavé numérique aussi. Mon mapping final ressemble à ce qui suit :

# Keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[On" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * / =
bindkey -s "^[Ok" "+"
bindkey -s "^[Om" "-"
bindkey -s "^[Oj" "*"
bindkey -s "^[Oo" "/"
bindkey -s "^[OX" "="

La solution proposée par d'autres fonctionne cependant correctement.

2voto

pegasuspect Points 121

Sur MacOS Catalina avec le clavier Apple A1843 :

J'ai réglé la configuration du terminal sur ansi . Il fonctionne avec toutes les clés.

Aucun lien avec les touches n'est nécessaire.

Terminal.app Screenshot

iTerm Screenshot

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X