I used to use kmonad, but I recently migrated to keyd, since with keyd I can bind key combos. Though kanata should also get the job done.
Keyd won it out for me, because it can do combos (for example, I press both shift keys to toggle capslock), and it has the simplest config format.
What's better about these three options, in comparison with setxkbmap, is that they will also remap keys in the tty, not just in the graphical shell.