Das hört sich wirklich eher nach einem Hardwarefehler an.
Versuch es doch lieber mal mit den internen Pullups und Schalter gegen Masse geschaltet.

http://www.rowalt.de/mc/index.htm <--- Die Seite hilft dir sicherlich weiter dazu.