A página do manual xmodmap (1) tem um exemplo exatamente para isso
!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
mas se você quiser terminar de fazer do jeito que começou, acho que precisa adicionar pelo menos as linhas remove
e add
remove Lock = Caps_Lock
remove Control = Control_L
keycode 37 = Caps_Lock
keycode 66 = Control_L
add Lock = Caps_Lock
add Control = Control_L
Suponho que esse seja o caso com base neste parágrafo
add MODIFIERNAME = KEYSYMNAME ...
This adds all keys containing the given keysyms to the indi‐
cated modifier map. The keysym names are evaluated after all
input expressions are read to make it easy to write expressions
to swap keys (see the EXAMPLES section).
que faz parecer que mudanças de modificadores (shift, controle, etc.) não são aplicadas até que você execute isso também.
(e logicamente o mesmo com remove
)