zsh (z 셸) 숫자 키패드 / ​​숫자 잠금이 작동하지 않습니다 내 컴퓨터에서 10 자리 숫자 키패드가

방금 zsh / oh-my-zsh로 업그레이드했습니다. 거의 즉시 내 컴퓨터에서 10 자리 숫자 키패드가 작동하지 않는 것을 알았습니다. 배쉬와 생선 껍질에서 일하고있었습니다.

이상하게도, fn / function 키를 누르고 있으면 numlock처럼 작동하지만 작동하지만 “잠금”상태가 아니며 숫자를 입력하려면 fn을 계속 누르고 있어야합니다.

어떤 아이디어가 있습니까?



답변

숫자 키패드 키는 맨 위 행의 ‘일반’숫자 키와 동일한 키 기호를 보내지 않습니다. 예를 들어 : 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" "="

답변

@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

답변

내 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

키패드가 예상대로 작동합니다!