zsh (z shell) numpad / numlock nie działa


46

Właśnie uaktualniłem do zsh / oh-my-zsh. Niemal natychmiast zauważam na moim komputerze, że 10-cyfrowy numpad nie działa. Działało w skorupce i skorupce rybnej.

Dziwne, jeśli przytrzymam klawisz fn / funkcyjny, działa on jak numlock i działa, ale nie „blokuje się” i musiałbym przytrzymać klawisz fn, aby wpisać cyfry.

Jakieś pomysły?

Odpowiedzi:


89

Klawisz numeryczny nie wysyła tych samych symboli klawiszy, co „normalny” klawisz numeryczny w górnym rzędzie. Na przykład: Numpad-1-klawisz wysyła, KP_1podczas gdy 1-klawisz po prostu wysyła 1.

Niektóre terminale automatycznie mapują klawisz Numpad, aby wysłać te same kody do powłoki. Ponadto niektóre powłoki (na przykład bash) po prostu interpretują klawisze numeryczne podobnie jak ich odpowiedniki w bloku głównym.

zshnie wykonuje mapowania automatycznie, ale możesz użyć bindkeygo do samodzielnego mapowania. Mam następujące funkcje, ~/.zshrcaby klawiatura działała:

# 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-stringwiąże się in-stringz out-string. Jeśli in-stringjest wpisane, out-stringjest wypychane i traktowane jako dane wejściowe.

Rzeczywiste kody (na przykład ^[Oq) mogą się różnić w systemie. Możesz nacisnąć Ctrl+, va następnie odpowiedni klawisz, aby uzyskać kod swojego terminala.


3
Dziękuję panu, to działało idealnie dla mnie, a wskazówka Ctrl+ vjest świetna!
BradGreens

1
Dzięki, to było naprawdę przydatne, ale brakowało niektórych klawiszy do klawiatury Apple USB. To jest skrót klawiszowy dla klawiatury Apple: # Klawiatura # 0. Wpisz bindkey -s "^ [Op" "0" bindkey -s "^ [On" "." bindkey -s "^ [OM" "^ M" # 1 2 3 bindkey -s "^ [Oq" "1" bindkey -s "^ [Lub" "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" "




16

Aby uzupełnić odpowiedź udzieloną przez @adaephon, poniżej podano prawidłowe powiązania z klawiaturą Apple USB (A1243). Należy je dodać do ~/.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, czy możesz rozszerzyć swoją odpowiedź, aby uwzględnić, gdzie OP powinien wprowadzić te informacje, aby rozwiązać swój problem?
music2myear

2
To działało dla mnie z wyjątkiem +(musiałem użyć bindkey -s "^[Ok" "+") i =(brakowało bindkey -s "^[OX" "=")
Dain

4

Uzupełnia również odpowiedź od @adaephon. Oto, co musiałem wykorzystać na swoim komputerze Dell, może być pomocne. Po prostu dodaj go do pliku .zshrc.

(BTW nie dodaje powiązań ze wszystkich odpowiedzi, powinieneś mieć tylko jedno powiązanie na klucz)

# 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

Witamy w Super User! Czy możesz zredagować swoją odpowiedź, aby zawierała krótkie wskazówki na temat tego, co to jest i jak / gdzie z niej skorzystać?
Excellll,

To rozwiązanie działało dla mnie dla Zsh z klawiaturą Windows (PUTTY, z Terminal > Keyboard > Initial state of numeric pad > Normal)
Ivan Castellanos

3

W moim Mac OSX El Capitan ^[0nzamiast tego jest kropka ^[01. Mam także bezprzewodową klawiaturę Logitech dla komputerów Mac i ma ona również =znak na klawiaturze numerycznej. Moje ostateczne mapowanie wygląda jak poniżej:

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

Rozwiązanie zaproponowane przez innych działa jednak poprawnie.


1

Jeśli używasz Kitty, aby uzyskać dostęp do serwera Linux na SSH i że klawiatura działa poprawnie z Bash, ale nie z ZSH, możesz spróbować dodać następujące elementy w ~/.zshrcpliku konfiguracyjnym:

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

Zapisać. Wyloguj się i zaloguj ponownie, aby ponownie załadować konfigurację ZSH, lub alternatywnie możesz wpisać w terminalu:

. ~/.zshrc

Klawiatura powinna teraz działać zgodnie z oczekiwaniami!


To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill

Pozwól mi się nie zgodzić. Tylko ta odpowiedź ma podobne kody: superuser.com/a/907695/351420 I wyjaśniam kontekst i sposób korzystania z tych kodów, imho lepiej niż ta odpowiedź.
Gabriel Hautclocq
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.