I have a problem with the shift keys, and I would like to use the caps lock keys, instead of the left shift key.
Mac OS X settings allow to modify the keys used for some modifiers, but it doesnt't allow to change the key used for the shift key, nor to select the shift keys as alternative key for another modifier.

Ukelele aims to simplify keyboard layout editing by providing a graphical interface to .keylayout files, where the desired characters can simply be dragged onto keys as needed. (The Character Palette, available in the Input menu if it has been enabled in System Preferences, is a great place to find the characters.)

In addition to simple assignment of single character codes to keys, Ukelele can assign multiple-character strings and can create "dead keys", where a keystroke sets a new state that modifies the output of the following keystroke.