The numpad key do not send the same key symbols as the 'normal' number key in the top row. For example: The numpad-1-key sends KP_1
while the 1-key just sends 1
.
Some terminals automatically remap the numpad key to send the same codes to the shell. Also, some shells (for example bash
) just interprete the numpad keys like their equivalents in the main block.
zsh
does not do the mapping automatically, but you can use bindkey
to do the mapping on your own. I have the following in my ~/.zshrc
to get the keypad working:
# 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
binds in-string
to out-string
. If in-string
is typed out-string
is pushed back and treated as input.
The actual codes (for example ^[Oq
) may be different on your system. You can press Ctrl+v followed by the key in question to get the code for your terminal.