kbd없이 Control + Shift 키 정의


11

다른 사람의 패키지에 기능을 추가하려고하는데 패턴을 존중하고 싶습니다. 불행히도 이러한 패턴 중 하나는 사용하지 않는 것 kbd입니다.

에 함수를 바인딩해야 C-S-b하지만 방법을 알 수 없습니다. 단일 수정 자 (예 :) 로이 작업을 수행하는 방법을 알고 "\S-b"있지만 여러 수정 자에서 작동하도록 할 수는 없습니다. (kbd "C-S-b")출력 ( [33554434])을 평가 하고 사용할 수는 있지만 더 읽기 쉬운 것을 원합니다.

내가 시도한 몇 가지 사항은 다음과 같습니다.

(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

답변:


15

?벡터 표현에 a 와 두 개의 백 슬래시 가 없습니다 .

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

Elisp 매뉴얼의 키 시퀀스 섹션에 다음과 같이 나와 있습니다.

기능 키, 마우스 버튼 이벤트, 시스템 이벤트 또는 문자열과 같이 C-=또는 H-a문자열로 표현할 수없는 비 ASCII 문자를 포함하는 키 시퀀스 ; 그것들은 벡터로 표현되어야합니다.

벡터 표현에서 벡터의 각 요소는 입력 이벤트를 Lisp 형식으로 나타냅니다 . 예를 들어, 벡터 [?\C-x ?l]는 키 시퀀스를 나타냅니다 C-x l.

그리고 다른 문자 수정 자 비트 아래에 다음과 같이 표시됩니다.

시프트 비트의 Lisp 구문은 \S-; 따라서, ?\C-\S-o또는 ?\C-\S-Oshifted-control-o 문자를 나타냅니다.


1
물음표의 의미를 이해하려고 노력했습니다. : 회신 덕분에, 나는이 발견 ? FET의-숯불 구문 \ C-? 메타 숯불 구문 \ M-
Kaushal 모디

그리고 그렇습니다. Malabarba의 질문은이 페이지의 Other Modifier Bits에 있습니다.
Kaushal Modi

@kaushalmodi 링크 감사합니다! 그들은 무슨 일이 일어나고 있는지에 대한 깊은 이해를 얻는 데 매우 유용합니다.
itsjeyd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.