Paredit uses a different key card identification method. While most minor modes define a key card in a variable definition, Paredit calls paredit-define-keys at the top level and thus forces the layout to be initialized.
In other words, you cannot prevent Paredit from setting bindings. You need to remove all the key bindings in the keyboard layout using (define-key paredit-mode-map … nil) to get rid of them.
Edit: You cannot use "reset" by assigning a new layout to this variable. (setq paredit-mode-map …) will change the paredit-mode-map variable, it will not change the actual layout used in Paredit mode.
The binding of this variable is evaluated only once during the definition , that is, during the evaluation of define-minor-mode . This macro internally calls add-minor-mode and passes the current value to this function. keyboard variable. All future use of the mode applies only to this layout. The keymap variable is never evaluated by minor mode again , so changing the binding has no effect.
If you want to change the keyboard layout, you need to re-bind the variable to define-minor-mode , that is, before loading the corresponding library. Changing it in the form of eval-after-load is therefore completely useless.
Normally changing the keymap variable before loading the library works well, because most modes define a keyboard map in the body of defvar . defvar however will not change the value of a variable if it already has a value. Thus, if a variable already has a key card, it will not be affected.
However, as I said, Paredit does not respect this template and instead forcibly adds bindings to the layout. So changing it is pointless because Paredit will add its bindings anyway.
As I said, you need to manually clear the existing layout without defining each of its keys.
TL DR: Use Smartparens, really! It covers all of Paredit, it is flexible, it is powerful, it is extensible, in short, it is just good. And it allows you to choose any key combinations you want.