Meh...
Previously setting pinMode(pin, INPUT) didn't help; digitalRead(pin) still returns 0, regardless of state.
The second approach, reading the port directly sounds good, but:
"Bazzz I updated the answer above. You want to use bitRead( PORTD,3). To poll the status of pin 3. I have confirmed this works on an Arduino – MikeRags May 31 '11 at 13:59
Brilliant, this works!

thanks for your answer. – Bazzz Jun 1 '11 at 9:52
This only works for those Arduino variants where pin 3 is actually mapped to bit 3 of Port D. – Udo Klein"
Where can I find a port map for the DigiX?
Dave