zsh (z kabuğu) numpad / numlock çalışmıyor


46

Az önce zsh / oh-my-zsh'e yükselttim. Hemen hemen makinemde 10 basamaklı sayısal tuş takımının çalışmadığını fark ettim. Bash ve fish shell'de çalışıyordu.

İşin garibi, fn / function tuşunu basılı tutarsam numlock gibi çalışır, ancak "kilitlenmez" ve sayıları yazmak için fn tuşunu basılı tutmam gerekir.

Dışarıda fikrin var mı?

Yanıtlar:


89

Sayısal tuş, üst satırdaki "normal" sayı tuşlarıyla aynı tuş simgelerini göndermez. Örneğin: KP_11 tuşu sadece gönderirken numpad-1 tuşu gönderir 1.

Bazı terminaller aynı kodları kabuğa göndermek için sayısal tuş takımını otomatik olarak yeniden eşler. Ayrıca, bazı kabuklar (örneğin bash) sadece sayısal tuş takımlarını ana bloktaki eşdeğerleri gibi yorumlar.

zsheşlemeyi otomatik olarak yapmaz, ancak bindkeyeşlemeyi kendi başınıza yapmak için kullanabilirsiniz . ~/.zshrcTuş takımının çalışmasını sağlamak için içimde aşağıdakiler var :

# 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-stringbağlandığı in-stringiçin out-string. Eğer in-stringyazılan out-stringgeriye itti ve girdi olarak kabul edilir.

Gerçek kodlar (örneğin ^[Oq) sisteminizde farklı olabilir. Tuşuna basabilirsiniz Ctrl+ vterminal için kodu almak için söz konusu anahtar ile izledi.


3
Teşekkürler efendim, bu benim için mükemmel çalıştı ve Ctrl+ vipucu harika!
BradGreens,

1
Teşekkürler, bu gerçekten yararlı oldu ama Apple USB klavyesinde bazı tuşlar eksikti. Bu Apple Klavyesi için önemli bir bağlayıcıdır: # Tuş Takımı # 0. Bindkey -s "^ [Op" "0" tuşlarına basın bindkey -s "^ [On" "." bindkey -s "^ [OM" "^ M" # 1 2 3 bindkey -s "^ [Oq" "1" bindkey -s "^ [Veya" "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" ^ [Öküz "" 8 "bindkey -s" ^ [Oy "" 9 "# + - * / bindkey -s" ^ [Tamam "" + "bindkey -s" ^ [Om "" - " Bindkey -s "^ [Oj" "*" Bindkey -s "^ [Oo" "



github.com/krowe/kshrc-k800-keybindings Bunu, bu cevaba dayanarak yaptım.
krowe,

16

@Adaephon'un verdiği cevabı tamamlamak için, Apple USB klavyenin (A1243) doğru ciltlemeleri verilmiştir. Bunlara eklenmesi gerekir ~/.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'nin sorunlarını düzeltmek için bu bilgileri nereye girmesi gerektiğini dahil etmek için cevabını genişletebilir misin?
music2myear

2
Bu benim için çalıştı +(kullanmak zorunda kaldı bindkey -s "^[Ok" "+") ve =(eksik bindkey -s "^[OX" "=")
dain

4

Ayrıca @adaephon'dan cevabı tamamlıyor. Dell Masaüstüm için kullanmam gerekenler yardımcı olabilir. Sadece .zshrc dosyanıza ekleyin.

(BTW tüm cevaplardan cilt eklemez, anahtar başına sadece bir bağlamanız gerekir)

# 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

Süper Kullanıcıya Hoşgeldiniz! Bunun ne olduğu ve nasıl / nerede kullanılacağı hakkında küçük bir rehberlik eklemek için lütfen cevabınızı düzenler misiniz ?
Excellll,

Bu çözüm benim için windows tuş takımı (PUTTY, ile Terminal > Keyboard > Initial state of numeric pad > Normal) ile zsh için çalıştı
Ivan Castellanos

3

Mac OSX El Capitan'da, ^[0nbunun yerine nokta anahtarı bulunuyor ^[01. Ayrıca Mac için bir Logitech kablosuz =klavyem var ve sayısal tuş takımında da bir işareti var. Son haritalamam aşağıdakine benziyor:

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

Ancak başkalarının önerdiği çözüm doğru şekilde çalışıyor.


1

Kitty'yi SSH'deki bir linux sunucusuna erişmek için kullanıyorsanız ve tuş takımının Bash ile iyi çalıştığını, ancak ZSH ile çalışmıyorsa, aşağıdakileri ~/.zshrcconfig dosyanıza eklemeyi deneyebilirsiniz :

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

Kayıt etmek. Oturumu kapatın ve ZSH yapılandırmasını yeniden yüklemek için tekrar giriş yapın veya alternatif olarak aşağıdakileri terminalinize yazabilirsiniz:

. ~/.zshrc

Tuş takımı şimdi beklendiği gibi çalışmalı!


Bu, başka bir yanıtı çoğaltır ve yeni bir içerik eklemez. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın.
DavidPostill

Katılmama izin ver. Sadece bu cevabın benzer kodları var: superuser.com/a/907695/351420 Ve bu cevabı daha iyi kullanmak yerine, bağlamı ve bu kodların nasıl kullanılacağını açıklıyorum.
Gabriel Hautclocq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.