답변:
숫자 키패드 키는 맨 위 행의 '일반'숫자 키와 동일한 키 기호를 보내지 않습니다. 예를 들어 : numpad-1-key는 보내고 1-key는 KP_1
을 보냅니다 1
.
일부 터미널은 동일한 코드를 쉘에 보내기 위해 숫자 키패드 키를 자동으로 다시 매핑합니다. 또한 일부 셸 (예 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의 답변도 보완합니다. Dell 데스크탑에 사용해야 할 내용이 있습니다. 도움이 될 수 있습니다. .zshrc 파일에 추가하십시오.
(BTW는 모든 답변에서 바인딩을 추가하지 않으며 키 당 하나의 바인딩 만 있어야합니다)
# 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" "="
그러나 다른 사람들이 제안한 솔루션은 올바르게 작동합니다.
키티를 사용하여 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
팁은 훌륭합니다!