I did a bit of fiddling, unfortunately I'm away from the desktop so I can't test it but I think I can do something like this for the key press, I'm probably way off though.
Code:
frame:SetScript("OnMouseDown", function(self, btn)
if btn == "RightButton" then
IsShiftKeyDown() then frame:Show() end end)
else
frame:Hide()
end