Hey.
Der Thread ist zwar schon ein paar Tage alt, aber da er ziemlich weit oben bei Google kommt, wenn man nach der Sainsmart Keypad library sucht, will ich hier kurz n Tip geben.
Die Sainsmart lib auf der offiziellen Sainsmart-Seite ist famos schlecht. Aus irgendeinem Grund wird da zB der Wert von analogRead() auf Änderungen überwacht. Wenn man sich analogRead(keypad_pin) mal über einen längeren Zeitraum ausgeben lässt, kommen beim Gedrückthalten der Nach-Links-Taste solche Wertefolgen heraus: 505, 505 ,505, 506, 506, 505, 506, 505, 505, 505, 505. Die Änderungen unterliegen quasi natürlichem Rauschen. Bei solch einem durch Rauschen verursachten Wertewechsel wird dann erneut die Taste zurückgegeben. Das ist prinzipiell einfach falsch konzipiert, oder nach dem Try/Error prinzip Passt-Schon-Irgendwie programmiert. Auch der komplette Teil mit der _refreshRate ist daneben gegangen, da die Zeite _oldTime = millis(); einfach nie erreicht werden kann. Somit haben sie wenigstens verhindert, dass der dritte große Fehlern, nämlich ein fehlendes Return am Ende keine Auswirkungen hat.
Falls jemand eine Bibliothek für das Keypad (oder allgemein für Widerstandbasierte-Keypads) sucht, gibts seit ein paar Tagen diese hier (unter der GPL lizensiert):
Wer direkt ein Beispiel haben will: http://invisibletower.de/2012/sainsmart-lcd-keypad-library/ ganz unten.
Es wäre cool wenn ihr mir beim Benutzen einen kleinen Kommentar hinterlassen könntet 
Ich hoffe das hilft irgendjemandem 
Um auch noch deine Frage zu beantworten:
Es muss eigentlich überall hinein, wo vorher #include “Arduino.h” (bei Arduino1.0 Sketches) oder #include “WProgram.h” (bei Arduino023 Sketches) stand. Das heißt eigentlich in allen Headerdateien. Es gibt aber auch die Möglichkeit, sich zusätzlich eine quasi globale Headerdatei anzulegen. Die nennt man dann meistens ‘sketchhname.h’. Dahinein kommt dann der von dir gepostete Code. In jeder anderen Headerdatei kannst du das #include “Arduino.h” bzw #include “WProgram.h” entfernen und duch ein #include “sketchname.h” ersetzen.
Vergesse aber nicht, alles was dann in der Datei sketchname.h steht mit folgendem Code einzurahmen:
#ifndef sketchname_h
#define sketchname_h
// Hier steht dann der Rest vom Code, also auch das #if ARDUINO < .......
#endif
WConstants.h ist eine Datei, die du selbst in deinem Sketch anlegen musst. (Erkennst du daran, dass statt <> die “”-Zeichen benutzt wurden.
Gruß Phaiax