zsh (z shell) numpad / numlock ไม่ทำงาน


46

ฉันเพิ่งอัพเกรดเป็น zsh / oh-my-zsh เกือบจะในทันทีที่ฉันสังเกตเห็นเครื่องของฉันว่าตัวเลข 10 หลักไม่ทำงาน มันทำงานในทุบตีและเปลือกปลา

ถ้าฉันกดปุ่ม fn / function ค้างไว้มันจะทำหน้าที่เหมือน numlock และใช้งานได้ แต่มันไม่ "ล็อค" และฉันจะต้องกดปุ่ม fn ค้างไว้เพื่อพิมพ์ตัวเลข

มีความคิดอะไรบ้าง?

คำตอบ:


89

คีย์ numpad จะไม่ส่งสัญลักษณ์คีย์เดียวกันกับคีย์ 'ปกติ' ในแถวบนสุด ยกตัวอย่างเช่นการ numpad-1-สำคัญส่งKP_1ในขณะที่ 1 1ที่สำคัญเพียงแค่ส่ง

บางเทอร์มินัลทำการแมปคีย์ numpad ใหม่โดยอัตโนมัติเพื่อส่งรหัสเดียวกันไปยังเชลล์ นอกจากนี้เชลล์บางตัว (เช่นbash) เพียงแค่ interprete คีย์ numpad เช่นสิ่งที่เทียบเท่าในบล็อกหลัก

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 "^ [หรือ" "2" bindkey -s "^ [Os" "3" # 4 5 6 bindkey -s "^ [Ot" "4" bindkey -s "^ [Ou" "5" bindkey -s "^ [Ov" "6" # 7 8 8 bindkey -s "^ [Ow" "7 "bindkey -s" ^ [Ox "" 8 "bindkey -s" ^ [Oy "" 9 "# + - * / bindkey -s" ^ [Ok "" + "bindkey -s" ^ [Om "" - " bindkey -s "^ [Oj" "*" bindkey -s "^ [Oo" "

คู่มือสำหรับสิ่งนี้: gnu.org/software/screen/manual/html_node/…
krowe

และนี่ก็เป็นสิ่งที่ดีเช่นกัน: stackoverflow.com/questions/18042685/…
krowe

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
โรบินคุณสามารถขยายคำตอบของคุณเพื่อรวมที่ OP ควรป้อนข้อมูลนี้เพื่อแก้ไขปัญหาของพวกเขาหรือไม่?
music2myear

2
นี้ทำงานให้ฉันยกเว้น+(ต้องใช้bindkey -s "^[Ok" "+") และ=(หายไปbindkey -s "^[OX" "=")
Dain

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

ยินดีต้อนรับสู่ Super User! คุณช่วยแก้ไขคำตอบของคุณให้มีคำแนะนำเล็ก ๆ น้อย ๆ เกี่ยวกับสิ่งนี้คืออะไรและใช้อย่างไร?
Excellll

การแก้ปัญหานี้ทำงานให้ฉัน zsh กับหน้าต่างปุ่มกด (อุดด้วยTerminal > Keyboard > Initial state of numeric pad > Normal)
อีวาน Castellanos

3

บนของ Mac OSX El Capitan คีย์งวดเป็นแทน^[0n ^[01นอกจากนี้ฉันยังมีคีย์บอร์ดไร้สาย Logitech สำหรับ Mac และมันก็มี=สัญลักษณ์บน numpad ด้วย การแมปสุดท้ายของฉันมีลักษณะดังนี้:

# 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

หากคุณใช้ Kitty เพื่อเข้าถึงเซิร์ฟเวอร์ linux บน SSH และปุ่มกดทำงานได้ดีกับ 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.