I have never come across a resource of this kind of thing. Package authors are free to add and change key bindings, both in their own layouts and in the global layout. It would be difficult to maintain the index.
Emacs can load functions dynamically, so active key commands are also dynamic and depend on the functions you set and required . For example, if you do not require paredit, you cannot check its layout.
Mx describe-bindings will tell you about the key bindings loaded by Emacs. This is a long list! The show-key-bindings function below will trim this to bindings that use modifier keys.
(defun get-bindings () (with-temp-buffer (describe-buffer-bindings (current-buffer)) (buffer-string))) (defun format-binding (b) (let ((ws (split-string b))) (apply 'format "%s\t%s" (butlast ws) (last ws)))) (defun binding? (str) (string-match-p (rx bol (any "C" "M" "H" "S")) str)) (defun join-string-lines (lines) (mapconcat 'identity lines "\n")) (defun show-key-bindings () "Show the active keybindings for the current buffer." (interactive) (let* ((bs (split-string (get-bindings) "\n" t)) (fmt (mapcar 'format-binding (remove-if-not 'binding? bs)))) (save-excursion (let ((help-window-select t)) (with-help-window "*active bindings*" (princ (join-string-lines fmt)))))))
Just to indicate, there are several functions that you can use to configure the bindings:
global-set-key
Use this when you want a team to always be available.
local-set-key
Sets the rate for the current buffer. I like to use this in my hooks to make key bindings available for a specific mode.
define-key
Adds a command to the layout. The key card must already be bound, so it is too fragile to use in your configuration.
If you are concerned about accidentally overriding mode bindings in the emacs configuration, the easiest way is to find out if you really need a global command. Use local-set-key where you can.
You can also look at packages such as key-chord ( Mx package-install key-chord ), or define your own minor modes using custom keyboard layouts if you find that you have run out of keys.
Using any virtuoso shell or elisp scripts, it should be possible to parse the list of elisp files and extract the key bindings it defines. I could study this later.
In the meantime, the following unix shell command will find all the links to the above key binding forms in the directory tree. You can run this in your .emacs.d to check the key bindings installed in your elpa packages.
tree -fxi -P '*.el' | xargs egrep -s 'local-set-key|define-key|global-set-key'
source share