zpad (shell z) numpad / numlock não funciona


46

Acabei de atualizar para zsh / oh-my-zsh. Quase imediatamente noto na minha máquina que o teclado numérico de 10 dígitos não está funcionando. Ele estava trabalhando em bash e casca de peixe.

Estranhamente, se eu pressionar a tecla fn / function, ela funcionará como numlock e funcionará, mas não "trava" e eu teria que continuar pressionando fn para digitar os números.

Alguma idéia por aí?

Respostas:


89

A tecla numpad não envia os mesmos símbolos da tecla numérica 'normal' na linha superior. Por exemplo: A tecla numpad-1 envia KP_1enquanto a tecla 1 envia 1.

Alguns terminais remapeiam automaticamente a tecla numpad para enviar os mesmos códigos ao shell. Além disso, algumas conchas (por exemplo bash) apenas interpretam as teclas do teclado numérico como seus equivalentes no bloco principal.

zshnão faz o mapeamento automaticamente, mas você pode usá bindkey-lo por conta própria. Tenho o seguinte no meu ~/.zshrcpara fazer o teclado funcionar:

# 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-stringliga in-string- se a out-string. Se in-stringdigitado, out-stringé retornado e tratado como entrada.

Os códigos reais (por exemplo ^[Oq) podem ser diferentes no seu sistema. Você pode pressionar Ctrl+ vseguido da tecla em questão para obter o código para o seu terminal.


3
Obrigado senhor, isso funcionou perfeitamente para mim e a dica Ctrl+ vé ótima!
precisa saber é o seguinte

1
Obrigado, isso foi realmente útil, mas faltavam algumas teclas para o teclado USB da Apple. Esta é a ligação de teclas do Apple Keyboard: # Teclado # 0. Digite bindkey -s "^ [Op" "0" bindkey -s "^ [Ativado" "." bindkey -s "^ [OM" "^ M" # 1 2 3 bindkey -s "^ [Oq" "1" bindkey -s "^ [Ou" "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 Feito isso com base nesta resposta.
krowe

16

Para concluir a resposta que @adaephon deu, a seguir estão as ligações corretas para o teclado USB da Apple (A1243). Estes precisam ser adicionados a ~/.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, você poderia expandir sua resposta para incluir onde o OP deve inserir essas informações para corrigir o problema?
music2myear

2
Isso funcionou para mim, exceto +(teve de uso bindkey -s "^[Ok" "+") e =(faltando bindkey -s "^[OX" "=")
dain

4

Também complementa a resposta de @adaephon. Aqui está o que eu tive que usar para o meu Dell Desktop, pode ser útil. Basta adicioná-lo ao seu arquivo .zshrc.

(BTW não adiciona ligações de todas as respostas, você deve ter apenas uma ligação por chave)

# 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

Bem-vindo ao Super Usuário! Você poderia editar sua resposta para incluir um pouco de orientação sobre o que é isso e como / onde usá-lo?
Excellll

Esta solução funcionou para mim para zsh com teclado janelas (arremate, com Terminal > Keyboard > Initial state of numeric pad > Normal)
Ivan Castellanos

3

No meu Mac OSX El Capitan, a chave do período é em ^[0nvez de ^[01. Também tenho um teclado sem fio da Logitech para o Mac e também tem um =sinal no teclado numérico. Meu mapeamento final é exibido abaixo:

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

A solução proposta por outros funciona corretamente, no entanto.


1

Se você usa o Kitty para acessar um servidor Linux no SSH e se o teclado está funcionando bem com o Bash, mas não com o ZSH, tente adicionar o seguinte no seu ~/.zshrcarquivo de configuração:

# 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" "/"

Salve . Efetue logout e efetue login novamente para recarregar a configuração do ZSH ou, como alternativa, você pode digitar o seguinte no seu terminal:

. ~/.zshrc

O teclado agora deve funcionar como esperado!


Isso duplica outra resposta e não adiciona novo conteúdo. Não poste uma resposta, a menos que você realmente tenha algo novo para contribuir.
DavidPostill

Deixe-me discordar. Somente esta resposta tem códigos semelhantes: superuser.com/a/907695/351420 E eu explico o contexto e como usar esses códigos, imho melhor do que esta resposta.
Gabriel Hautclocq 4/17/17
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.