Outside of native KM methods, Karabiner-Elements can do all sorts of wild key binding/customizations. It also presents some options in a very simple interface, like Function Keys:
There is a long list of options available to assign F1-F12 in a dropdown list for each key.