La tecla del teclado numérico no envía los mismos símbolos de tecla que la tecla numérica 'normal' en la fila superior. Por ejemplo: el teclado numérico-1-tecla envía KP_1mientras que la tecla-1 solo envía 1.
Algunos terminales reasignan automáticamente la tecla del teclado numérico para enviar los mismos códigos al shell. Además, algunos shells (por ejemplo bash) simplemente interpretan las teclas del teclado numérico como sus equivalentes en el bloque principal.
zshno hace el mapeo automáticamente, pero puede usarlo bindkeypara hacer el mapeo por su cuenta. Tengo lo siguiente en mi ~/.zshrcpara que el teclado funcione:
# 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-stringse une in-stringa out-string. Si in-stringse escribe, out-stringse empuja hacia atrás y se trata como entrada.
Los códigos reales (por ejemplo ^[Oq) pueden ser diferentes en su sistema. Puede presionar Ctrl+ vseguido de la tecla en cuestión para obtener el código de su terminal.
Ctrl+ves genial.