Adding finger attributes
Start by selecting l_fingers_ctrl and go Modify > Add Attribute or Edit > Add Attribute in the Channel Box. Here is a breakdown of the attributes that I added to this control:
Now select l_thumb_ctrl, l_index_ctrl, l_middle_ctrl, l_ring_ctrl, l_pinky_ctrl and go Modify > Add Attribute and add the following:
Adding attributes to the finger controls
Creating the finger curl
Open up the SDK window by going Animate > Set Driven Key > Set. With l_fingers_ctrl selected, click on the Load Driver button. We now need to select all the _auto nodes that we created when creating the control hierarchy for our controls to become the driven objects. It is important that we DO NOT USE THE ANIMATION CONTROLS IN THE VIEWPORT at this stage. Here is a list of the _auto nodes to select to create the finger curl: l_thumbA_ctrl_auto, l_thumbB_ctrl_auto, l_thumbC_ctrl_auto, l_indexA_ctrl_auto, l_indexB_ctrl_auto, l_indexC_ctrl_auto, l_indexD_ctrl_auto, l_middleA_ctrl_auto, l_middleB_ctrl_auto, l_middleC_ctrl_auto, l_middleD_ctrl_auto, l_ringA_ctrl_auto, l_ringB_ctrl_auto, l_ringC_ctrl_auto, l_ringD_ctrl_auto, l_pinkyA_ctrl_auto, l_pinkyB_ctrl_auto, l_pinkyC_ctrl_auto and finally l_pinkyD_ctrl_auto. Phew.
Just in case we need to make that selection again, with the _auto nodes selected, go Create > Sets > Quick Select Set, give it a name and hit OK. You can now find the selection set in the Outliner. Another way to get to the _auto nodes or any other node in a hierarchy is to use pickwalking. Simply select the necessary control curves in the viewport and then hit the up arrow on the keyboard. So, with the _auto nodes selected, hit the Load Driven button in the SDK window.
Creating a Quick Select Set so we can quickly find and select the necessary nodes
In the SDK window, highlight Curl in the top-right box, highlight all the _auto nodes in the bottom-left box and highlight Rotate X (the axis that creates the finger curl) in the bottom-right box. Everything should be in the default pose, if not, zero out all rotational values for the _auto nodes and the Curl attribute on l_fingers_ctrl. Once ready, hit Key on the SDK window. Now, increase the Curl attribute to 10 on l_fingers_ctrl and use the Rotate X attribute only for all the _auto nodes to create a fist pose. Once you have the pose hit Key on the SDK window. Now take the Curl attribute down to -10 on the l_fingers_ctrl and curl the fingers in the opposite direction using the Rotate X attribute for each _auto node. A quick note: to pose the thumb here, I used a combination of Rotate X and Rotate Z. This can be a pretty unnatural pose but it can be useful when creating fast movement. Once you are happy with that pose, again, hit Key on the SDK window.
You should now be able to drive the transition from one pose to another using the Curl attribute. To use this attribute or any other from the Channel Box, I find it easier to highlight the attribute word and then middle-mouse drag in the viewport to edit the value interactively.
Using the Set Driven Key tool to drive the newly created attributes
Creating the scrunch
Make sure everything is back in the default pose so we can add the scrunch pose next. It's pretty hard to describe this pose, so do have a good look at the images. If I had to explain it, I would say that it is the pose you'd need if you were going to scrape your fingers against a blackboard. For this we do not need to include the metacarpal joints so just take the following into the SDK window as the driven objects: l_thumbB_ctrl_auto, l_indexB_ctrl_auto, l_indexC_ctrl_auto, l_indexD_ctrl_auto, l_middleB_ctrl_auto, l_middleC_ctrl_auto, l_middleD_ctrl_auto, l_ringB_ctrl_auto, l_ringC_ctrl_auto, l_ringD_ctrl_auto, l_pinkyB_ctrl_auto, l_pinkyC_ctrl_auto and finally l_pinkyD_ctrl_auto.
This time in the SDK window, in the top-right box, highlight Scrunch; in the bottom-left window, highlight all the _auto nodes and in the bottom-right window, once again, highlight Rotate X. Hit Key to create the default pose. Now pop the Scrunch value up to 10 on the l_fingers_ctrl and using the _auto nodes, create a pose that resembles a scrunch as described above. Once you are happy with the pose, make sure all the relevant objects and attributes are highlighted in the SDK window and hit Key. Then take the Scrunch attribute down to -10, create another pose in the opposite direction and again hit Key in the SDK window.
The scrunch pose: useful for scraping your digital fingernails against your digital blackboard
Adding the finger spread
For the fingers to spread, we only need to take the following into the SDK window as driven objects: l_thumbA_ctrl_auto, l_thumbB_ctrl_auto, l_indexA_ctrl_auto, l_indexB_ctrl_auto, l_middleA_ctrl_auto, l_middleB_ctrl_auto, l_ringA_ctrl_auto, l_ringB_ctrl_auto, l_pinkyA_ctrl_auto, l_pinkyB_ctrl_auto and l_pinkyC_ctrl_auto. In the top-right window, highlight Spread; in the bottom-left window, highlight all the _auto nodes and in the bottom-right window, highlight Rotate Z (the attribute that allows the fingers to spread). With everything in the default pose, hit Key on the SDK window.
Now, take the Spread attribute up to 10 and use the Rotate Z attribute for the _auto nodes to spread the fingers apart. Hit Key when you are happy with the pose on the SDK window. Then, take the Spread attribute to -10, use the _auto nodes to bring the fingers together and again, hit Key on the SDK window. For the thumb, I used a combination of Rotate X and Rotate Z to get it to sit cleanly beside the index finger.
The spread poses from +10 to -10