回答:
テンキーは、一番上の行の「通常の」数字キーと同じキーシンボルを送信しません。例:numpad-1-keyは送信しますKP_1
が、1-keyは単に送信します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から問題のキーを押すと、端末のコードを取得できます。
@adaephonの回答を完成させるために、Apple USBキーボード(A1243)の正しいバインディングを次に示します。これらはに追加する必要があります~/.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" "="
+
(使用する必要がありましたbindkey -s "^[Ok" "+"
)と=
(欠落しているbindkey -s "^[OX" "="
)を除いて私のために働いた
@adaephonからの回答も補完します。デルのデスクトップに使用しなければならなかったものがあります。.zshrcファイルに追加するだけです。
(ところで、すべての回答からバインディングを追加することはできません。キーごとに1つのバインディングが必要です)
# 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
Terminal > Keyboard > Initial state of numeric pad > Normal
)
Mac OSX El Capitanでは、ピリオドキーはの^[0n
代わりになり^[01
ます。また、Mac用のLogitechワイヤレスキーボードがあり=
、テンキーにもサインがあります。最終的なマッピングは次のようになります。
# 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" "="
しかし、他の人が提案した解決策は正しく機能します。
Kittyを使用してSSH上のLinuxサーバーにアクセスし、キーパッドがBashで正常に機能しているがZSHでは機能していない場合、~/.zshrc
設定ファイルに以下を追加してみてください。
# 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 "^[OS" "-"
bindkey -s "^[OR" "*"
bindkey -s "^[OQ" "/"
セーブ。ログアウトして再度ログインし、ZSH構成を再ロードするか、端末に次のように入力します。
. ~/.zshrc
これで、キーパッドは期待どおりに動作するはずです!
Ctrl
+のv
ヒントは素晴らしいです!