/ / zsh (z shell) numpad / numlock funktioniert nicht - zsh

zsh (z shell) numpad / numlock funktioniert nicht - zsh

Zsh

Ich habe gerade ein Upgrade auf zsh / oh-my-zsh durchgeführt. Fast sofort bemerke ich auf meinem Computer, dass das 10-stellige Nummernfeld nicht funktioniert. Es funktionierte in Bash und Fish Shell.

Seltsamerweise verhält es sich, wenn ich die Fn / Funktionstaste gedrückt halte, wie eine Num-Taste und funktioniert, aber sie wird nicht gesperrt, und ich müsste die Fn-Taste gedrückt halten, um die Zahlen einzugeben.

Irgendwelche Ideen da draußen?

Antworten:

89 für Antwort № 1

Die Zifferntasten senden nicht die gleichen Tastensymbole wie die "normale" Zifferntaste in der oberen Reihe. Zum Beispiel: Die NumPad-1-Taste sendet KP_1 während die 1-Taste nur sendet 1.

Einige Terminals ordnen die Zifferntasten automatisch neu zu, um dieselben Codes an die Shell zu senden. Auch einige Muscheln (zum Beispiel bash) interpretieren Sie einfach die Zifferntasten wie ihre Entsprechungen im Hauptblock.

zsh führt das Mapping nicht automatisch durch, sondern kann verwendet werden bindkey das Mapping selbst durchführen. Ich habe folgendes in meinem ~/.zshrc um die Tastatur zum Laufen zu bringen:

# 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 bindet in-string zu out-string. Wenn in-string ist getippt out-string wird zurückgeschoben und als Eingabe behandelt.

Die tatsächlichen Codes (zum Beispiel ^[Oq) kann auf Ihrem System unterschiedlich sein. Sie können drücken Strg+v gefolgt von dem betreffenden Schlüssel, um den Code für Ihr Terminal abzurufen.


16 für Antwort № 2

Um die Antwort von @adaephon zu vervollständigen, sind die folgenden Angaben für die Apple USB-Tastatur (A1243) richtig. Diese müssen hinzugefügt werden ~/.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" "="

4 für Antwort № 3

Ergänzt auch die Antwort von @adaephon. Hier ist, was ich für meinen Dell Desktop verwenden musste, möglicherweise hilfreich. Fügen Sie es einfach in Ihre .zshrc-Datei ein.

(Übrigens, fügen Sie keine Bindungen aus allen Antworten hinzu, Sie sollten nur eine Bindung pro Schlüssel haben.)

# 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

3 für Antwort № 4

Auf meinem Mac OS X El Capitan lautet der Punktschlüssel ^[0n Anstatt von ^[01. Außerdem habe ich eine Logitech Wireless-Tastatur für den Mac und eine = auch auf dem Nummernblock unterschreiben. Meine endgültige Zuordnung sieht wie folgt aus:

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

Die von anderen vorgeschlagene Lösung funktioniert jedoch korrekt.


1 für Antwort № 5

Wenn Sie Kitty verwenden, um auf einen Linux-Server unter SSH zuzugreifen, und die Tastatur mit Bash, aber nicht mit ZSH einwandfrei funktioniert, können Sie versuchen, Folgendes in Ihre Datenbank aufzunehmen ~/.zshrc Konfigurationsdatei:

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

Speichern. Melden Sie sich ab und wieder an, um die ZSH-Konfiguration neu zu laden. Alternativ können Sie Folgendes in Ihr Terminal eingeben:

. ~/.zshrc

Die Tastatur sollte nun wie erwartet funktionieren!


Verwandte Fragen
Bemerkungen
Einen Kommentar hinzufügen