zsh (z shell) 小键盘/小键盘不起作用

Bra*_*ens 53 zsh

我刚刚升级到 zsh/oh-my-zsh。我几乎立即注意到我的机器上的 10 位数字小键盘不起作用。它在 bash 和 fish shell 中工作。

奇怪的是,如果我按住 fn/function 键,它就像 numlock 一样工作,但它不会“锁定”,我将不得不继续按住 fn 来输入数字。

有什么想法吗?

Ada*_*hon 104

小键盘键不会发送与顶行中的“普通”数字键相同的键符号。例如:numpad-1-key 发送,KP_1而 1-key 只是发送1.

一些终端会自动重新映射小键盘键以将相同的代码发送到 shell。此外,某些 shell(例如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" "/"
Run Code Online (Sandbox Code Playgroud)

bindkey -s in-string out-string绑定in-stringout-string. 如果in-string输入out-string则被推回并被视为输入。

^[Oq您系统上的实际代码(例如)可能会有所不同。您可以按Ctrl+v后跟有问题的键来获取终端的代码。

  • 谢谢先生,这对我来说非常有效,`Ctrl` + `v` 提示很棒! (3认同)
  • 谢谢,这确实很有用,但 Apple USB 键盘缺少一些按键。这是 Apple 键盘的按键绑定: # Keypad # 0 。输入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 绑定键 -s "^[Ot" "4" 绑定键 -s "^[Ou" "5" 绑定键 -s "^[Ov" "6" # 7 8 9 绑定键 -s "^[Ow" "7 " bindkey -s "^[Ox" "8" bindkey -s "^[Oy" "9" # + - * / bindkey -s "^[Ok" "+" bindkey -s "^[Om" "-"绑定键-s“^[Oj”“*”绑定键-s“^[Oo”“/”绑定键-s“^[OX”“=” (2认同)

小智 18

为了完成@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" "="
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,除了 `+`(必须使用 `bindkey -s "^[Ok" "+"`)和 `=`(缺少 `bindkey -s "^[OX" "="`) (2认同)

小智 7

在配备 A1843 Apple 键盘的 MacOS Catalina 上:

我将终端配置设置为ansi。它适用于所有按键。

无需按键绑定。

Terminal.app 截图

iTerm 截图