You're right. I've given up on the double sided material.
I couldn't get the depth map to work. For some reason, the filtering of the shadows would blur up from the bottom of the object, exposing light no matter what I set for the bias.
And I don't know enough about raytracing to get the shadows to look nice.
So I'm instead I'm going to just use cubes with useBackground as the material, and boolean subtract holes for the computer keys to fit into. I still might "cheat" and have an infinitely thin material for the inside of the holes. Ideally I'd like to figure out how to apply different materials to different sections of the same polygon, but even if that's possible it's too advanced for me now.
I keep starting over from scratch as I'm learning. Like, before I was actually creating real duplicates, but now I want to make instances instead so it will be easier to make changes throughout.
And I still have a huge task of figuring out how to handle anti-aliasing. But that is for another day.
I really appreciate all of your comments, Joojaa. I'm grateful that someone who knows what they're doing is willing to waste their time... err... I mean impart their knowledge... helping out new users. Thanks again.