zsh (z 셸) 숫자 키패드 / ​​숫자 잠금이 작동하지 않습니다


46

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

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

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

답변:


89

숫자 키패드 키는 맨 위 행의 '일반'숫자 키와 동일한 키 기호를 보내지 않습니다. 예를 들어 : 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다음 해당 키를 누르면 터미널 코드를 얻을 수 있습니다.


3
고마워요, 이것은 나를 위해 완벽하게 작동했으며 Ctrl+ v팁은 훌륭합니다!
BradGreens

1
고마워, 이것은 실제로 유용했지만 Apple USB 키보드에 대한 일부 키가 누락되었습니다. 이것은 Apple Keyboard의 키 바인딩입니다 : # 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 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" "



github.com/krowe/kshrc-k800-keybindings 이 답변을 기반으로 작성했습니다.
krowe

16

@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" "="

1
Robin, 문제를 해결하기 위해 OP가이 정보를 입력해야하는 위치를 포함하도록 답변을 확장 할 수 있습니까?
music2myear

2
이것은 제외하고 나를 위해 일한 +(사용했다 bindkey -s "^[Ok" "+")과 =(실종 bindkey -s "^[OX" "=")
다인

4

@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

슈퍼 유저에 오신 것을 환영합니다! 당신은 기쁘게 할 수 편집 이가 어떻게 / 어디를 사용하는 것에 대한 약간의 지침을 포함하는 답변을?
Excellll

이 솔루션은 Windows 키패드가있는 zsh (PUTTY, with Terminal > Keyboard > Initial state of numeric pad > Normal)를 사용 하여 저에게 효과적이었습니다
Ivan Castellanos

3

내 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" "="

그러나 다른 사람들이 제안한 솔루션은 올바르게 작동합니다.


1

키티를 사용하여 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

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


이것은 다른 답변을 복제하고 새로운 내용을 추가하지 않습니다. 실제로 새로운 내용이 없다면 답변을 올리지 마십시오.
DavidPostill

동의하지 않겠습니다. 이 답변 만 비슷한 코드를 가지고 있습니다 : superuser.com/a/907695/351420 그리고 나는이 답변보다 더 나은 컨텍스트와 코드를 사용하는 방법을 설명합니다.
Gabriel Hautclocq
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.