How can I get this curtain to open and close realistically? I'm trying to model a curtain (drape for you US people) accurately.  I've seen this youtube tutorial that scales the top vertices in the x axis with shape keys, but it's not the right look because it all squashes up evenly.
Here's a gif of how I want the curtain eyelets to operate - they get a certain distance from the next one and pull it along because they are all connected together with string:

They hook on at these points:

And here's a real-life version, that I want to animate:

(You may notice the curtain doesn't sag down, because it has stiff fabric holding it up level.  This might make just hooking the vertices difficult)

.blend coming soon - as soon as it uploads! - It's massive. I can upload if strictly necessary, but it's nothing amazing so far.
Here's a way to get you started,
Subdivide a grid or plane well and select some vertices that would be where the &quot;rings&quot; would go into the curtain. (a bit randomness is okay I suppose)

Add these selected vertices to a vertex group to be used by the cloth modifier for pinning.

Create a Shape Key and for the second key scale the pinning vertex group towards the cursor the direction the curtain will open.

Add cloth and subdivision surface modifiers.
For cloth settings, default is mostly okay aside from adding self collisions and pinning vertex group.

Next animate the shape key from 0 to 1 and you should end up with a result similar to below:

Here's a file to play with: