the details view will still have a populated inputmap
I suspect the difference between the details view and the list view is that one uses a JTable the other a JList. So I would guess you only need to remove the bindings from the JTable of the details view.
This can be done without creating the details panel:
InputMap im = (InputMap)UIManager.get("Table.ancestorInputMap");
KeyStroke ctrlC = KeyStroke.getKeyStroke("control C");
//im.put(ctrlC, "none");
im.remove(ctrlC);
Again, it should be noted that this solution (along with the solution you currently have) will remove the default Ctrl+C functionality for all components, not just the ones instantiated for the JFileChooser.
Edit:
Shouldn't it only be removing it from the ones I remove it from?
Your code uses the getParent() method to get the InputMap that contains the binding. This InputMap is shared by all instances of a component. A component will only have unique bindings when you use:
component.getInputMap(...).put(...);
That is, the binding is added to the components InputMap, not its parents InputMap.
How did you know you could do this and this is the right thing to do
See UIManager Defaults. This list the defaults for the given LAF. I don't know if this is the right thing to do. As far as I know the effect is the same as the code you use now. This is just another way or removing a binding from an InputMap without needing an actual component to access the parents InputMap.
Second edit:
Some simple code to show the InputMaps are the same:
public static void main(String[] args)
{
JButton first = new JButton("button");
System.out.println(first.getInputMap().getParent());
InputMap im = (InputMap) UIManager.get("Button.focusInputMap");
System.out.println(im);
}