Setting driven keys makes it much easier to animate a hand as it eliminates the need to rotate each finger joint one at a time. Two movements are particularly useful for the hand – making a fist and spreading fingers out.
So to set driven keys, it’s good to make a nurb circle for the controller.
Parent it to the wrist joint (so it was a child of the wrist joint) and zero out the translations so that it’s centred around the wrist joint. Freeze its transforms so that is its new origin, and rotate the control vertices so the circle is located around the wrist.
Now in object mode, select the new controller and go to Modify => Add attribute…
Make a new attribute for the fist and set the minimum and maximum values to -10 and 10 respectively. Also make a new attribute for spread with the same min and max values. (The values themselves don’t really matter but they’re needed for later.)
Now in the channel box, there are 2 new attributes for the wrist control.
To set driven key to making a fist, go to Animate -> Set driven key => set. (Make sure you’re in Animaton mode.)
Select the wrist controller and click Load Driver. Next to it, select the new Fist attribute.
Select all finger joints (one at a time rather than using marquee selection) and click Load Driven. Next to them, select the Rotation attributes.
Making sure that the Fist attribute was set to 0, click Key. This sets the attribute’s neutral position.
Now go to the channel box of the wrist controller and set the Fist attribute value to 10. Rotate all the finger joints to make it into a fist. Make the same selections as before in the Set Driven Key window and hit Key.
This sets the current finger rotations as Fist value of ten.
Now, set the Fist attribute to -10, rotate finger joints to make a flexing hand, select the same items in the Set Driven Key window and hit Key.
It’s now possible to control the hand by changing the Fist value in the wrist controller’s channel box.
Same steps apply to set an attribute that makes the fingers spread out. With the Spread attribute value set to 0 in the channel box, set keys with the wrist controller => spread as the driver, and the finger base joints => rotates as the driven.