Цифровые клавиши не отправляют те же символы клавиш, что и «обычные» цифровые клавиши в верхнем ряду. Например: клавиша numpad-1 отправляет KP_1
а клавиша 1 просто отправляет 1
.
Некоторые терминалы автоматически переназначают ключ numpad для отправки тех же кодов в оболочку. Кроме того, некоторые оболочки (например, bash
) просто интерпретируют цифровые ключи, как их эквиваленты в основном блоке.
zsh
не выполняет сопоставление автоматически, но вы можете использовать bindkey
для самостоятельного сопоставления. В моем ~/.zshrc
есть следующее, чтобы заставить работать клавиатуру:
# 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
связывает in-string
с out-string
. Если in-string
набирается, out-string
отбрасывается и обрабатывается как ввод.
Фактические коды (например, ^[Oq
) могут отличаться в вашей системе. Вы можете нажать Ctrl+v, а затем соответствующую клавишу, чтобы получить код для вашего терминала.