zsh (z shell) numpad / numlock không hoạt động


46

Tôi vừa nâng cấp lên zsh / oh-my-zsh. Gần như ngay lập tức tôi nhận thấy trên máy của mình rằng numpad 10 chữ số không hoạt động. Nó đã làm việc trong bash và vỏ cá.

Điều kỳ lạ là, nếu tôi giữ phím fn / function thì nó hoạt động như numlock và hoạt động, nhưng nó không "khóa" và tôi sẽ phải giữ phím fn để gõ các số.

Có ý tưởng nào ngoài đó không?

Câu trả lời:


89

Khóa numpad không gửi các ký hiệu khóa giống như phím số 'bình thường' ở hàng trên cùng. Ví dụ: Phím numpad-1 gửi KP_1trong khi phím 1 chỉ gửi 1.

Một số thiết bị đầu cuối tự động sắp xếp lại khóa numpad để gửi cùng mã cho trình bao. Ngoài ra, một số shell (ví dụ bash) chỉ diễn giải các khóa numpad giống như các khóa tương đương của chúng trong khối chính.

zshkhông tự động thực hiện ánh xạ, nhưng bạn có thể sử dụng bindkeyđể tự thực hiện ánh xạ. Tôi có những thứ sau đây ~/.zshrcđể bàn phím hoạt động:

# 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-stringliên kết in-stringvới out-string. Nếu in-stringđược gõ out-stringđược đẩy lùi và được coi là đầu vào.

Các mã thực tế (ví dụ ^[Oq) có thể khác trên hệ thống của bạn. Bạn có thể nhấn Ctrl+ vtheo sau là phím được đề cập để lấy mã cho thiết bị đầu cuối của bạn.


3
Cảm ơn ngài, điều này đã làm việc hoàn hảo cho tôi và mẹo Ctrl+ vlà tuyệt vời!
BradGreen

1
Cảm ơn, điều này thực sự hữu ích nhưng một số phím bị thiếu cho bàn phím Apple USB. Đây là ràng buộc chính cho Bàn phím Apple: # Bàn phím số 0. Nhập bindkey -s "^ [Op" "0" bindkey -s "^ [Bật" "." bindkey -s "^ [OM" "^ M" # 1 2 3 bindkey -s "^ [Oq" "1" bindkey -s "^ [Hoặc" "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" "

Hướng dẫn cho việc này: gnu.org/software/screen/manual/html_node/ Kẻ
krowe

và điều này cũng tốt: stackoverflow.com/questions/18042685/ từ
krowe

github.com/krowe/kshrc-k800-keybindings Thực hiện điều này dựa trên câu trả lời này.
krowe

16

Để hoàn thành câu trả lời mà @adaephon đưa ra, sau đây là các ràng buộc chính xác cho bàn phím Apple USB (A1243). Những điều này cần phải được thêm vào ~/.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, bạn có thể mở rộng câu trả lời của mình để bao gồm nơi OP nên nhập thông tin này để khắc phục vấn đề của họ không?
âm nhạc2myear

2
Điều này làm việc cho tôi trừ +(phải sử dụng bindkey -s "^[Ok" "+") và =(thiếu bindkey -s "^[OX" "=")
dain

4

Cũng bổ sung câu trả lời từ @adaephon. Đây là những gì tôi đã sử dụng cho Dell Desktop của mình, có thể giúp ích. Chỉ cần thêm nó trong tập tin .zshrc của bạn.

(BTW không thêm các ràng buộc từ tất cả các câu trả lời, bạn chỉ nên có một ràng buộc cho mỗi khóa)

# 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

Chào mừng bạn đến với Siêu người dùng! Bạn có thể vui lòng chỉnh sửa câu trả lời của bạn để bao gồm một hướng dẫn nhỏ về việc này là gì và làm thế nào / sử dụng nó ở đâu không?
Xuất sắc

Giải pháp này hiệu quả với tôi cho zsh với bàn phím windows (PUTTY, với Terminal > Keyboard > Initial state of numeric pad > Normal)
Ivan Castellanos

3

Trên Mac OSX El Capitan của tôi, khóa dấu chấm là ^[0nthay vì ^[01. Ngoài ra tôi có một bàn phím không dây Logitech cho Mac và nó cũng có một =dấu hiệu trên bàn phím số. Bản đồ cuối cùng của tôi trông như dưới đây:

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

Các giải pháp khác đề xuất hoạt động chính xác tuy nhiên.


1

Nếu bạn sử dụng Kitty để truy cập máy chủ linux trên SSH và bàn phím hoạt động tốt với Bash nhưng không phải với ZSH, bạn có thể thử thêm phần sau vào ~/.zshrctệp cấu hình của mình :

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

Tiết kiệm. Đăng xuất và đăng nhập lại để tải lại cấu hình ZSH hoặc cách khác, bạn có thể nhập nội dung sau vào thiết bị đầu cuối của mình:

. ~/.zshrc

Bàn phím sẽ hoạt động như mong đợi!


Điều này trùng lặp một câu trả lời khác và không thêm nội dung mới. Vui lòng không đăng câu trả lời trừ khi bạn thực sự có điều gì đó mới để đóng góp.
DavidPostill

Hãy để tôi không đồng ý. Chỉ có câu trả lời này có mã tương tự: superuser.com/a/9076953531420 Và tôi giải thích bối cảnh và cách sử dụng các mã đó, imho tốt hơn câu trả lời này.
Gabriel Hautclocq
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.