Only KeyPress once?

Whenever I use

    if (Input.GetKey(KeyCode.F)){
    Debug.Log("F pressed");
    blah blah

and I press it, it gives the log message like 4 times when I just pressed F once for a really short time. Is there a way to give the message once, no matter how long I hold it down for?

I assume your script is inside the Update method. That method is run every frame. Combine that with the fact that GetKey returns true every frame the key is held down, you will truly have to press the key fast. (You need to keep it down less than about 0.016sec on 60fps.)

To remedy the situation, use Input.GetKeyDown as that is called only when the key is pressed the first time.