Я видел все следующее для определения связывания клавиатуры. Все это работает (по крайней мере, в 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)
(global-set-key (kbd "M-r") 'some-command)
метод из-за последовательности, в которой можно определить комбинации клавиш ... вам не нужно помнить, когда или когда не следует избегать чего-либо.Ответы:
Не существует единого стандартного способа, потому что существуют разные варианты использования.
Если вы пишете такой код вручную, например, в файле инициализации, вы можете предпочесть
(kbd ...)
формат, потому что аргументkbd
использует ту же нотацию, которую использует Emacs, когда он связывается с вами о привязках клавиш (*Help*
например, в).Но если вы создаете привязки с помощью Emacs Lisp, то вы можете предпочесть векторную нотацию, в частности
[(meta r)]
и т. Д., Так как с ней немного легче управлять.Некоторые люди считают, что простой строковый подход является архаичным, но он удобен, когда ключ прост:
"a"
он проще и, по крайней мере, так же удобочитаем, как(kbd "a")
. Но простые строки труднее читать / использовать, когда дело доходит до клавиш-модификаторов и т. Д.источник
это "родной" способ. Все остальные построены поверх этого, в основном.
источник