Xác định các phím Control + Shift không có kbd


11

Tôi đang cố gắng thêm một số chức năng vào gói của người khác và vì vậy tôi muốn tôn trọng các mẫu của họ. Thật không may, một trong những mẫu này là không sử dụng kbd.

Tôi cần liên kết một chức năng với C-S-b, nhưng tôi không thể tìm ra cách. Tôi biết cách thực hiện việc này với một công cụ sửa đổi (ví dụ "\S-b"), nhưng tôi không thể làm cho nó hoạt động với nhiều công cụ sửa đổi. Tôi biết tôi chỉ có thể đánh giá (kbd "C-S-b")và sử dụng đầu ra của nó ( [33554434]), nhưng tôi muốn một cái gì đó dễ đọc hơn.

Dưới đây là một vài điều tôi đã thử:

(define-key emacs-lisp-mode-map
  "\C-\S-b" 'test-command)
;;; Invalid modifier

(define-key emacs-lisp-mode-map
  [C-S-b] 'test-command)
;;; Does nothing

(define-key emacs-lisp-mode-map
  "\C-B" 'test-command)
;;; Binds C-b

Câu trả lời:


15

Bạn đang thiếu một ?và hai dấu gạch chéo ngược trong biểu diễn vectơ:

(global-set-key [?\C-\S-b] 'test-command)

Phần về Chuỗi khóa trong hướng dẫn Elisp cho biết:

Các chuỗi khóa chứa các phím chức năng, các sự kiện nút chuột, các sự kiện hệ thống hoặc các ký tự không phải ASCII như C-=hoặc H-akhông thể được biểu diễn dưới dạng chuỗi; chúng phải được biểu diễn dưới dạng vectơ.

Trong biểu diễn vectơ, mỗi phần tử của vectơ biểu thị một sự kiện đầu vào, ở dạng Lisp của nó . Ví dụ, vector [?\C-x ?l]đại diện cho chuỗi khóa C-x l.

Và dưới phần sửa đổi nhân vật khác, nó nói:

Cú pháp Lisp cho bit shift là \S-; do đó, ?\C-\S-ohoặc ?\C-\S-Ođại diện cho ký tự shift-control-o.


1
Tôi đã cố gắng hiểu ý nghĩa của các dấu hỏi. Nhờ trả lời của bạn, tôi đã tìm thấy những điều sau: Cú pháp của Ctl-Char? \ C-Cú pháp Meta-Char? \ M-
Kaushal Modi

Và vâng, câu hỏi của Malabarba đã được trả lời trong trang này trên các Công cụ sửa đổi khác .
Kaushal Modi

@kaushalmodi Cảm ơn các liên kết! Chúng rất hữu ích trong việc đạt được sự hiểu biết sâu sắc hơn về những gì đang diễn ra.
itjeyd
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.