Существует ли стандартный / рекомендуемый синтаксис для определения связывания клавиатуры?

10

Я видел все следующее для определения связывания клавиатуры. Все это работает (по крайней мере, в MS Windows). Я не знаю, есть ли другой способ сделать то же самое.
Мне интересно, существует ли стандартный или рекомендуемый способ определения связывания клавиатуры и рекомендуется ли избегать некоторых из них.

(global-set-key "\M-r" 'some-command)
(global-set-key [(meta r)] 'some-command)
(global-set-key [?\M-r] 'some-command)
(global-set-key (kbd "M-r") 'some-command)
имя
источник
1
Я сомневаюсь, что есть рекомендуемый синтаксис, но мне лично нравится (global-set-key (kbd "M-r") 'some-command)метод из-за последовательности, в которой можно определить комбинации клавиш ... вам не нужно помнить, когда или когда не следует избегать чего-либо.
Каушал Моди

Ответы:

6

Не существует единого стандартного способа, потому что существуют разные варианты использования.

Если вы пишете такой код вручную, например, в файле инициализации, вы можете предпочесть (kbd ...)формат, потому что аргумент kbdиспользует ту же нотацию, которую использует Emacs, когда он связывается с вами о привязках клавиш ( *Help*например, в).

Но если вы создаете привязки с помощью Emacs Lisp, то вы можете предпочесть векторную нотацию, в частности [(meta r)]и т. Д., Так как с ней немного легче управлять.

Некоторые люди считают, что простой строковый подход является архаичным, но он удобен, когда ключ прост: "a"он проще и, по крайней мере, так же удобочитаем, как (kbd "a"). Но простые строки труднее читать / использовать, когда дело доходит до клавиш-модификаторов и т. Д.

Нарисовалась
источник
6
(global-set-key [?\M-r] 'some-command)

это "родной" способ. Все остальные построены поверх этого, в основном.

Стефан
источник